【问题标题】:PDFBox convertToImage not rendering some PDFs correctlyPDFBox convertToImage 无法正确呈现某些 PDF
【发布时间】:2013-12-31 19:25:38
【问题描述】:

我正在使用 PDFBox 的 PDPage.convertToImage() 方法将加载的 PDF 文件的页面转换为图像。它对某些 PDF 工作正常,但是它给我控制台错误的很多文件,然后不能在屏幕上正确呈现 - 图像和文本丢失。

Dec 31, 2013 7:15:34 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: unsupported/disabled operation: EI
Dec 31, 2013 7:15:34 PM org.apache.pdfbox.pdmodel.font.PDTrueTypeFont getawtFont
INFO: Using font SansSerif.plain instead

Dec 31, 2013 7:02:15 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: unsupported/disabled operation: i

文件加载只需使用:

PDDocument pdfDoc = PDDocument.load(file);
List<PDPage> pages = pdfDoc.getContent().getDocumentCatalog().getAllPages();
PDPage page = pages.get(pageNo);
page.convertToImage();

我尝试使用 loadNonSeq() 而不是 load() 但这没有帮助。我应该对 PDFStreamEngine 做些什么来让它处理这些 PDF 吗?我不确定读者是否无法真正呈现这些,或者是否需要以某种方式启用该功能。

【问题讨论】:

  • EI 表示内嵌图像的结尾。这可以解释丢失的图像。字体替换意味着某些字体不可用或无法读取。这可能相当于缺少文本。提供样本 PDF 后可能会告知详细信息。
  • 另外:i 定义了曲线变平容差,所以这不是一个关键问题。奇怪:错误提示 BI 似乎已实现,但 EI 未实现——除非您的 PDF 格式不正确!对于普通(欧洲..)文本,替换字体不应导致文本丢失。
  • 我在这里上传了一个无法正确渲染的文件:mega.co.nz/…
  • 我得到的只是文本和标题周围的一些行,没有呈现任何文本。
  • @LadyRacheya 不幸的是,您没有在评论中添加通知标签,所以我在今天之前没有看到您的文件。话虽如此,我刚刚使用 page.convertToImage() 将您的 PDF 转换为图像,但只得到了 unsupported/disabled 操作:i 信息,而不是其他信息,并且图像看起来符合预期。因此,这可能是您的 PDFBox 版本(我正在使用主干进行测试,即 2.0.0-SNAPSHOT 在这方面应该与 1.8.4 几乎相同)或运行时环境(jdk 1.7,不是无头,在 MS Windows 环境中)。

标签: java pdf pdfbox


【解决方案1】:

您的问题已在我之前回答的帖子中解决,使用PDFRender jar 是可能的。

How to increase the resolution of image in PDF renderer?

发布的Question仅转换PDF的第一页,Answer将PDF的所有页面转换为图像格式。

【讨论】:

    【解决方案2】:

    从这里尝试 fontbox jar http://mvnrepository.com/artifact/org.apache.pdfbox/fontbox/1.8.5

    或使用 maven 存储库..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2015-10-11
      • 2017-03-30
      • 1970-01-01
      • 2017-08-21
      相关资源
      最近更新 更多