我无法在 Android 模拟器中使用 pdfbox 运行 pdf 文本提取。然而,当作为独立的 java 应用程序运行时,代码运行良好。
使用了 PDFBOXv1.8.4,并且使用 pdfbox jar 正确设置了构建路径。可能出了什么问题?
我还看到一些建议不要使用 pdfbox 的帖子,因为 android 库不支持可绘制对象(java.awt.*)。事实真的如此吗?我仍然希望用 pdfbox 解析我的简单 pdf 文件(仅文本)吗?
代码如下
public static void PdftoText(InputStream input)
{
PDFParser parser ;
COSDocument cosDoc;
PDFTextStripper pdfStripper;
PDDocument pdDoc;
String parsedText;
try
{
parser = new PDFParser(input);
parser.parse();
cosDoc = parser.getDocument();
pdDoc = new PDDocument(cosDoc);
pdfStripper = new PDFTextStripper();
if(pdDoc != null){
pdfStripper.setWordSeparator(":");
parsedText = pdfStripper.getText(pdDoc);
System.out.println(parsedText);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
这是我遇到的异常
03-26 13:17:57.046: I/dalvikvm(951): Failed resolving Lorg/apache/pdfbox/pdmodel/PDDocument; interface 1617 'Ljava/awt/print/Pageable;'
03-26 13:17:57.079: W/dalvikvm(951): Link of class 'Lorg/apache/pdfbox/pdmodel/PDDocument;' failed
03-26 13:17:57.366: D/dalvikvm(951): GC_FOR_ALLOC freed 314K, 13% free 3097K/3528K, paused 278ms, total 278ms
03-26 13:17:57.366: E/dalvikvm(951): Could not find class 'org.apache.pdfbox.pdmodel.PDDocument', referenced from method org.apache.pdfbox.pdfparser.PDFParser.getPDDocument
03-26 13:17:57.377: W/dalvikvm(951): VFY: unable to resolve new-instance 2233 (Lorg/apache/pdfbox/pdmodel/PDDocument;) in Lorg/apache/pdfbox/pdfparser/PDFParser;
03-26 13:17:57.377: D/dalvikvm(951): VFY: replacing opcode 0x22 at 0x0000
03-26 13:17:57.596: I/dalvikvm(951): Failed resolving Lorg/apache/pdfbox/pdmodel/PDDocument; interface 1617 'Ljava/awt/print/Pageable;'
03-26 13:17:57.696: W/dalvikvm(951): Link of class 'Lorg/apache/pdfbox/pdmodel/PDDocument;' failed
03-26 13:17:57.707: D/dalvikvm(951): DexOpt: unable to opt direct call 0x39b3 at 0x06 in Lorg/apache/pdfbox/pdfparser/PDFParser;.getPDDocument
最佳答案
我建议您使用TomRoush/PdfBox-Android !我遇到了完全相同的问题并且它解决了它,所以为什么不尝试一下呢! ;-)
关于android - PDFBOX 在 Android 中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671648/