【发布时间】: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 环境中)。