当前位置: 首页 > 知识库问答 >
问题:

PDFBOX在Android中的使用

齐文林
2023-03-14

我无法在android emulator中使用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

共有2个答案

雍光远
2023-03-14

到目前为止,由于awt依赖关系,在Android系统中不可能直接使用PDFBox。如果你只需要从PDF中提取文本,那么你也可以尝试https://github.com/RatheeshRavindran/PDFBoxLight

这是我最近做的PDFBox的Android移植,注意它仍然是Beta版。

强才捷
2023-03-14

我建议你使用TomRoush/PdfBox Android!我遇到了完全相同的问题,它解决了,所以为什么不试试呢!;-)

 类似资料:
  • 我正在尝试使用pdfbox库签署pdf。我现在卡住了,真的需要帮助。 这是我的代码: 然后我正在保存我的pdf,但是:1)我注意到sign method从来没有被调用2)我应该在哪里附加CertyFicate?在sign method中? 以下是我保存PDF的方法:

  • 我们从运行在云中的docker容器中的pdf生成器中获得间歇性异常。生成器的一部分处理获取SVG文档并将其加载到PDF中。每100ish调用它就会从importPageAsForm(tmpSVGPdf,0)引发以下异常。 我们还没能在本地复制这个问题。 然后我们打开一个PDF流&一个svg代码转换器的输出流。 当我们点击下面的importPageAsForm时,我们会传入临时SVG文档,在该函数中

  • 我们在其中一个应用程序中使用pdfbox。一些叠加的PDF会导致输出和字体“损坏”。 下面是我用来覆盖pdf的示例代码。pdf有时具有不同的页数。我们将顶角变平,并将注释设置为只读。pdf页面旋转和bbox大小有时设置不同(尤其是扫描仪),所以我们试图纠正这一点。

  • 我正在使用PDFbox下载PDF。我想在中间添加一些新页面。 此代码在PDF结尾处插入新页面。如何在另一个位置插入页面?

  • 我想删除PDF中每个页面的底部部分,但不改变页面大小,什么是推荐的方式在PDFBOX中的java中做到这一点?如何删除页脚从PDF中的每个页面? 是否有可能使用PDRectgle删除其中的所有文本/图像? 我所尝试的片段,使用setCropBox矩形似乎失去页面大小,也许cropBox不打算这样做? 在pdfbox cookbook示例中,我能找到的最接近的例子是如何删除整个页面,但这不是我想要的

  • 问题内容: 我想在使用创建的PDF中添加超链接,这样我单击一些文本示例,“单击此处”将重定向到URL。我尝试使用和,但是如何添加呢? 问题答案: 要添加使用以下代码