java - 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”是在 Adobe Acrobat 中创建的。我不知道非破坏性文件。)
在比较https://issues.apache.org/jira/browse/PDFBOX-2690和http://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 类中收到任何日志消息......
解决方案
推荐阅读
- wordpress - Woocommerce:在存档页面上显示具有特定描述的产品变体
- angular - Can't fix ExpressionChangedAfterItHasBeenCheckedError
- json - Swift: Parse data Codable protocol not working
- vmware - 打包器:从源 ova 构建时出错
- python - Django - 重定向到子类管理页面
- oracle - Oracle中字段的自动调整
- php - Laravel Get Column Name error
- vb.net - 在 VB.net 屏幕上的任意位置使用鼠标滚动
- neo4j - Neo4J 多步骤导入/转换期间的性能问题
- python - Upgrade python 3.4 to python 3.6 on rpi