android - 如何将 PDFBox 添加到 Android 项目或建议替代方案

标签 android pdf pdfbox

我正在尝试打开现有的 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

我在某处读到 PDFBox 1.5 及以上版本不适用于 Android,因此我尝试下载 pdfbox-app-1.4.0.jar 文件,但遇到了同样的问题。我还在我的完整和精简项目中将库添加到构建路径中,但我遇到了同样的错误,或者 eclipse 一直因内存不足错误而崩溃。

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

谢谢,

最佳答案

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

我刚刚测试了 PDFjet http://pdfjet.com/os/edition.html它是 bsd 许可的(加上具有更多功能的商业版本),使用这个示例代码(从 Example_03.java 中提取)我能够将 jpeg 转换为 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();
    }

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

关于android - 如何将 PDFBox 添加到 Android 项目或建议替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980668/

相关文章:

java - Ionic 3 对此 JAR 条目的未经授权的修改将不会被检测到

java - 带有 base64 图像的 HTML 到 PDF 抛出 FileNotFoundException

java - 在 TextView 和 EditText 之间切换

java - iText 将带标记的 pdf 与运行时创建的 pdf 合并

java - 如何在 java 中使用 wkhtmltopdf 将 pdf 导出到 OutputStream

java - 使用 PDFBox 时不想在服务器端保存创建的 PDF 文件

java - 使用 PDFBox 渲染包含填充表单字段的文档适用于 1.8.2,但不适用于 2.0.2

macos - 如何使用命令行将 PDF 中的一系列页面提取到单个文件中?

android - 每当选择特定行时,如何在 ListView 的行中添加按钮?

android - 如何在android应用程序中实现应用程序空闲超时?