How to add PDFBox to an Android project or suggest alternative

匿名 (未验证) 提交于 2019-12-03 09:02:45

问题:

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,

回答1:

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



回答2:

Android Port of PDFBox

There's a free Android Port of PDFBox available here:

https://github.com/TomRoush/PdfBox-Android



回答3:

i think the library class files are not included in the apk file. The library classes need to be converted into dex files then only it will be detected.please refer http://developer.android.com/guide/developing/building/index.html



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!