关于pdf:如何将PDFBox添加到Android项目或建议替代方法

How to add PDFBox to an Android project or suggest alternative

我试图打开一个现有的pdf文件,然后从Android应用程序中将另一个页面添加到pdf文档中。在添加的页面上,我需要添加一些文本和图像。

我想尝试一下PDFBox。由于许可条款/价格,其他解决方案(例如iTextPDF)不适用于我们公司。

我有一个包含主要代码库的图书馆项目,还有引用该图书馆项目的完整和精简项目。

我已经从http://pdfbox.apache.org/download.html下载了jar,并将其复制到库项目lib文件夹中,并将pdfbox-app-1.6.0.jar文件添加到了Java构建路径库中。

我能够成功导入库,例如import org.apache.pdfbox.pdmodel.PDDocument;并编译所有项目。但是,当我运行该应用程序时,它在PDDocument document = new PDDocument();上崩溃,并显示以下错误。

E/AndroidRuntime(24451): java.lang.NoClassDefFoundError:
org.apache.pdfbox.pdmodel.PDDocument

我在某处读到从1.5版本开始的PDFBox不适用于Android,因此我尝试下载pdfbox-app-1.4.0.jar文件,但遇到了同样的问题。我还将该库添加到我的完整项目和lite项目的构建路径中,但是我遇到了相同的错误或Eclipse,并因内存不足错误而崩溃。

谁能告诉我我在做什么错?我下载了错误的文件吗?我正确导入了吗?

谢谢,


PDFBox使用java awt和swing,即使对于非UI任务,我也尝试删除了引用,但是有很多文件,并且删除了太多的东西

我刚刚测试了PDFjet http://pdfjet.com/os/edition.html它是bsd许可的(加上具有更多功能的商业版本),使用此示例代码(摘自Example_03.java)可以将jpeg转换为 pdf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    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();
    }

我在这里找到了链接http://java-source.net/open-source/pdf-libraries


Android的PDFBox端口

您可以在此处免费使用PDFBox的Android端口:

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


我认为库类文件不包含在apk文件中。 需要将库类转换为dex文件,然后才将其检测到。请参考http://developer.android.com/guide/developing/building/index.html