首页 > 解决方案 > Adobe PDFBox 对加载和保存产生意外更改

问题描述

我正在开发一种基于模板文件和其他源数据自动生成 PDF 文件的工具。我使用的是 Mac OS 10.14.4、Java 1.8 和 PDFBox 2.0.15 版。

作为一项基本测试,我将打开和保存代码缩减为两行,这对于一个特定的 PDF 存在明显问题,而对于我尝试过的所有其他 PDF 存在更微妙的问题:

PDDocument targetPDF = PDDocument.load(new File(templatePath));
targetPDF.save(targetFileName)

对于一个特定的 PDF ,观察到的问题是在第一页的顶部插入了意外字符。(它们似乎是在一个未使用的字母表中,并且被剪裁了。)其他 PDF 在视觉上相似,但当我运行它们时却非常不同diff。这是我应该做的事情来保存文件吗?这是那个文件的问题吗?PDFBox 是不是在做一些奇怪的事情?

我找了类似的报告,发现了一些与输出文件大小有关的报告: 在PDFBox中,为什么保存后文件大小会变得非常大?使用 PDFBOX 拆分和合并 pdf 文件会产生大文件我确实看到文件大小明显增加,但没有这些问题报告的那么多。在一种情况下,输入和输出文件在视觉上是不同的。在其他情况下,diff -y --text template.pdf target.pdf报告存在很大差异,但我仅凭肉眼没有发现任何差异。(在 Mac 的内置“预览”文档查看器中。破坏性“template.pdf”是在 Adob​​e Acrobat 中创建的。我不知道非破坏性文件。)

在比较https://issues.apache.org/jira/browse/PDFBOX-2690http://useof.org/java-open-source/org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject我试过targetPDF.close()在 之后添加targetPDF.save(),但这没有任何区别。 https://pdfbox.apache.org/2.0/faq.html似乎建议在保存文件之前关闭内容 ,但我不知道该怎么做。(File本身没有close()方法。PDDocument 上的所有方法似乎都与流无关或关闭它们,除了PDDocument.close()它自己,这会阻止保存。)

我会在这里粘贴一些日志文件,但我没有从 PDFBox 类中收到任何日志消息......

标签: javafilepdfpdfbox

解决方案


推荐阅读