我试图打开现有的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因内存不足错误而崩溃。
谁能告诉我我做错了什么?我下载了错误的文件吗?我是否正确导入了它?
谢谢,
答案 0 :(得分:17)
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();
}
找到了链接
答案 1 :(得分:12)
答案 2 :(得分:0)
我认为库类文件不包含在apk文件中。库类需要转换为dex文件,然后才会被检测到。请参考http://developer.android.com/guide/developing/building/index.html