我无法在android模拟器中使用pdfbox运行pdf文本提取。但是,当作为独立的Java应用程序运行时,代码运行良好。
使用PDFBOXv1.8.4并使用pdfbox jar正确设置构建路径。可能出错了什么?
另外我看到一些帖子建议不要使用pdfbox,因为android库不支持drawables(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
答案 0 :(得分:4)
我建议您使用TomRoush/PdfBox-Android!我有完全相同的问题,它解决了它,所以为什么不尝试! ; - )
答案 1 :(得分:0)
截至目前,由于awt依赖性,无法在Android中直接使用PDFBox。 如果您只需要从PDF中提取文本,那么您也可以尝试https://github.com/RatheeshRavindran/PDFBoxLight
这是我最近做过的PDFBox的Android移植,请注意它仍处于Beta版本。