Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/HendrixString/Android-PdfMyXml
Convert android XML layouts into PDF document, works on all versions of Android.
https://github.com/HendrixString/Android-PdfMyXml
android android-pdfmyxml pdf pdf-generation
Last synced: 11 days ago
JSON representation
Convert android XML layouts into PDF document, works on all versions of Android.
- Host: GitHub
- URL: https://github.com/HendrixString/Android-PdfMyXml
- Owner: HendrixString
- License: gpl-2.0
- Created: 2015-05-03T07:06:16.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-05-23T10:41:42.000Z (about 6 years ago)
- Last Synced: 2024-03-06T15:33:34.629Z (4 months ago)
- Topics: android, android-pdfmyxml, pdf, pdf-generation
- Language: Java
- Homepage:
- Size: 337 KB
- Stars: 252
- Watchers: 12
- Forks: 76
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-android-libraries - PdfMyXml - PdfMyXml | [Apache License V2](https://www.apache.org/licenses/LICENSE-2.0) (Media)
- awesome-android-libraries - PdfMyXml
- awesome-android-libraries - PdfMyXml - PdfMyXml | [Apache License V2](https://www.apache.org/licenses/LICENSE-2.0) (Media)
README
# Android-PdfMyXml [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Android--PdfMyXml-green.svg?style=flat)](https://android-arsenal.com/details/1/2297) [![Jitpack](https://jitpack.io/v/HendrixString/Android-PdfMyXml.svg)](https://jitpack.io/#HendrixString/Android-PdfMyXml)
convert your android `XML` layouts into PDF document, works on all versions of Android.### Dependencies
* [`pdfjet`](https://github.com/soster/pdfjet)## 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:
```groovy
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
```
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.A4_MODE.LANDSCAPE)
.progressMessage(R.string.gen_pdf_file).progressTitle(R.string.gen_please_wait)
.renderWidth(2115).renderHeight(1500)
.saveDirectory(_ctx.getExternalFilesDir(null));
.filename("test")
.listener(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");
}
}).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 .
```### Contact Author
* [[email protected]]([email protected])
* [Google+ TomershalevMan](https://plus.google.com/+TomershalevMan/about)
* [Facebook - HendrixString](https://www.facebook.com/HendrixString)