【问题标题】:PDFBox text extraction - empty outputPDFBox文本提取 - 空输出
【发布时间】:2015-02-10 13:16:22
【问题描述】:

我正在尝试从一组 PDF 中提取一些信息。到目前为止,这是可行的,但是一个 PDF 让我感到不满。

我正在使用 PDFBox 1.8.8 和 Java 7。

PDDocument document = PDDocument.load(pdfFile);
PDFTextStripper stripper = new PDFTextStripper();
System.out.println("File: "+pdfFile.getAbsolutePath()+" readable: "+pdfFile.canRead()+" size: "+pdfFile.length());
System.out.println(stripper.getText(document));

它只是打印

File: /foo/bar/mypdf.pdf readable: true size: 1267743

然后它终止。通常我使用 writeText 方法并将文本汇集到一个流中,但上面的代码用于简化。我尝试使用pdftotext 转换 PDF - 它的工作原理和其他的一样。

我没有例外,没有什么。有什么想法吗?

编辑: 附加信息:使用 Acrobat Distiller 9.0.0 (Windows) 创建,格式为 PDF-1.6;其他 PDF 是 1.4 和 1.5 版

似乎不包含外来字符。我可以在 Evince PDF-viewer 中标记/复制文本

EDIT2:

该死。文件属性对话框(Nautilus)说“安全:否”,但pdfinfo 给了我:

Encrypted:      yes (print:yes copy:no change:no addNotes:no algorithm:AES)

无论如何要绕过它?毕竟,pdftotext 可以将文本输出。

【问题讨论】:

  • 你能分享 PDF 来重现这个问题吗?而且... 然后它终止 - 您是否尝试将 System.out.println(stripper.getText(document)); 包含在 try { ... } catch (Throwable t) { t.printStackTrace(); } 中?
  • 如果 pdf 包含非拉丁字符,PdfBox 有时会失败。是这样吗??
  • @mkl 恐怕我不能 :( 它与工作有关。它终止了,公元前。我在上面的代码后面放了一个 System.exit(1)。但它应该先打印一些东西。确实尝试了所有方法,但没有。
  • @SurajeetBharati 据我所见,它没有。但我刚刚检查并看到,它是 1.6 格式的唯一 PDF。其他是1.4、1.5。 PDFbox 支持吗?什么都找不到。
  • PDFBox1.8.8 适用于 PDF v1.6 Reference。肯定还有其他情况。

标签: java pdf pdfbox


【解决方案1】:

文档已“加密”(写保护),但未设置用户密码。这个 Stackoverflow 答案显示了如何删除加密并简单地读取文件:remove encryption from pdf with pdfbox, like qpdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 2012-12-30
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多