pdf pdf-generation Android Java
Need help with Android-PdfMyXml?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.
HendrixString

Description

convert android xml layouts into PDF document, works on all versions of Android.

223 Stars 68 Forks GNU General Public License v2.0 52 Commits 8 Opened issues

Services available

Need anything else?

Android-PdfMyXml Android Arsenal Jitpack

convert your android

XML
layouts into PDF document, works on all versions of Android.

Dependencies

How to use

Option 1: Simply fork or download the project, you can also download and create

.aar
file yourself.

Option 2: Jitpack

Add Jitpack in your root build.gradle at the end of repositories:

groovy
allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Add to your dependencies:

dependencies {
    compile 'com.github.HendrixString:Android-PdfMyXml:{Tag}' // the latest version is "v1.0.1"
}

Notable features

  • should work on all Android versions
  • completely scalable
  • supports bitmap re usage.
  • production proved code. Used in a commercial project.

Instructions

1. create XML layouts

First create XML layouts. give it dimensions in pixels (and for all it's sub views) and proportions according landscape or portrait according to ratio 1:1.41.

page1.xml ```java <?xml version="1.0" encoding="utf-8"?>

```

you can create as many as pages/templates as you need.

2. Implement a View renderer

implement your View renderer by extending

AbstractViewRenderer
or by anonymously instantiating it and injecting the layout id. the initView(View view) will supply you an inflated View automatically. There are other options but I wont cover it now. ```java AbstractViewRenderer page = new AbstractViewRenderer(context, R.layout.page1) { private String _text;
public void setText(String text) {
    _text = text;
}

@Override protected void initView(View view) { TextView tv_hello = (TextView)view.findViewById(R.id.tv_hello); tv_hello.setText(_text); }

};

// you can reuse the bitmap if you want page.setReuseBitmap(true);

#### 3. Build the PDF document
Use `PdfDocument` or `PdfDocument.Builder` to add pages and render and run it all at background with progress bar.
```java
PdfDocument doc            = new PdfDocument(ctx);

// add as many pages as you have doc.addPage(page);

doc.setRenderWidth(2115); doc.setRenderHeight(1500); doc.setOrientation(PdfDocument.A4_MODE.LANDSCAPE); doc.setProgressTitle(R.string.gen_please_wait); doc.setProgressMessage(R.string.gen_pdf_file); doc.setFileName("test"); doc.setSaveDirectory(_ctx.getExternalFilesDir(null)); doc.setInflateOnMainThread(false); doc.setListener(new PdfDocument.Callback() { @Override public void onComplete(File file) { Log.i(PdfDocument.TAG_PDF_MY_XML, "Complete"); }

@Override
public void onError(Exception e) {
    Log.i(PdfDocument.TAG_PDF_MY_XML, "Error");
}

});

doc.createPdf(ctx);

or use

PdfDocument.Builder
```java new PdfDocument.Builder(ctx).addPage(page).orientation(PdfDocument.A4MODE.LANDSCAPE) .progressMessage(R.string.genpdffile).progressTitle(R.string.genpleasewait) .renderWidth(2115).renderHeight(1500) .saveDirectory(ctx.getExternalFilesDir(null)); .filename("test") .listener(new PdfDocument.Callback() { @Override public void onComplete(File file) { Log.i(PdfDocument.TAGPDFMY_XML, "Complete"); }
                         @Override
                         public void onError(Exception e) {
                             Log.i(PdfDocument.TAG_PDF_MY_XML, "Error");
                         }
                     }).create().createPdf(this);
### Additional Contributors
* [`Sébastiaan`](https://github.com/se-bastiaan)

License

If you like it -> star or share it with others

Copyright (C) 2016 Tomer Shalev (https://github.com/HendrixString)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. ```

Contact Author

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.