使用Apache PDFBox从PDF中移除ID字段

5

我需要比较使用iText创建的两个PDF文档。我已经成功地比较了这些文档,但我碰到了一个微小的差异。

当在像Notepad++这样的编辑器中打开PDF时,我可以看到文件末尾有类似于以下内容的东西:

/Root 1 0 R
/ID [<Some ID here> <Some other ID here>]

我在这里找到了一些信息 (PDF文件中ID字段是什么?),该元素属于“Trailer”。

我可以使用Apache PDFBox访问和修改此“字段”吗?


3
看起来你正在对使用同一代码生成的文件进行二进制级别的比较。请阅读http://stackoverflow.com/questions/23897806/why-would-pdfs-generated-by-the-same-automated-process-be-different-on-different/23905287#23905287和https://dev59.com/mHnZa4cB1Zd3GeqPnkD5以了解为什么这是一个不好的想法。JVM的简单变化可能会导致PDF字典中键的不同顺序。压缩算法的轻微优化也会使文件不同。等等... - Bruno Lowagie
1个回答

1
以下代码片段对我来说运行良好。
PDDocument doc = PDDocument.load(pdf);
COSArray cosArray = doc.getDocument().getDocumentID();
// Clear or set whatever values...
cosArray.clear();
doc.getDocument().setDocumentID(cosArray);

能否提供更多解释为什么对您有效? - william.eyidi
通过使用cosArray.clear(),然后跟随doc.getDocument().setDocumentID(cosArray),我可以根据我的原始问题设置ID的值。 - Robert Strauch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接