I'm attempting to open an existing pdf file and then add another page to the pdf document from within an Android application. On the added page, I need to add some text and an image.
I am wanting to give PDFBox a try. Other solutions such as iTextPDF aren't suitable for our company because of the licencing terms/price.
I have a library project with the main code base, and also full and lite projects that reference the library project.
I have downloaded the jar from http://pdfbox.apache.org/download.html and copied it into the library projects lib folder and added the pdfbox-app-1.6.0.jar file to the java build path libraries.
I am able to import the librarys successfully eg import org.apache.pdfbox.pdmodel.PDDocument;
and compile all the projects. However when I run the application it crashes on PDDocument document = new PDDocument();
with the following error.
E/AndroidRuntime(24451): java.lang.NoClassDefFoundError: org.apache.pdfbox.pdmodel.PDDocument
I read somewhere that version 1.5 of PDFBox onwards didn't work with Android so I tried downloading the pdfbox-app-1.4.0.jar file but got the same issue. I also added the library to the build path in my full and lite projects but I got the same error or eclipse kept crashing with an out of memory error.
Can anyone tell me what I am doing wrong? Have I downloaded the wrong file? Have I imported it correctly?
Thanks,
PDFBox is an open-source library which is written in Java. It supports the development and conversion of PDF Documents. PDFBox Library comes as a JAR file. It allows the creation of new PDF documents, manipulation of existing documents, bookmarking PDF and the ability to extract content from PDF documents.
Is PDFBox thread safe? No! Only one thread may access a single document at a time. You can have multiple threads each accessing their own PDDocument object.
PDFBox uses java awt and swing, even for non UI tasks, I've tried to remove references but there are a lot of files, and I was removing too much stuff
I've just tested PDFjet http://pdfjet.com/os/edition.html it's bsd licensed (plus commercial version with more features), with this sample code (ripped from Example_03.java) I was able to convert a jpeg to a pdf
FileOutputStream fos = null; try { fos = new FileOutputStream("/sdcard/sample.pdf"); PDF pdf = new PDF(fos); InputStream f = getApplicationContext().getAssets().open("img0.jpg"); Image image = new Image(pdf, f, ImageType.JPEG); Page page = new Page(pdf, A4.PORTRAIT); image.setPosition(0, 0); image.drawOn(page); pdf.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); }
I found the link here http://java-source.net/open-source/pdf-libraries
There's a free Android Port of PDFBox available here:
https://github.com/TomRoush/PdfBox-Android
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With