如本文所述(删除 PDF 中的 PDFID)/ID 是“预告片字典”中的推荐条目(如果 AcroForm 已加密,则需要该条目)。
使用 iText,ID 可以作为预告片中PdfArray
的两个对象之一进行访问。String 值看起来像垃圾,因为每个都是字节数组的表示。这些是“原始”和“修改”所需的十六进制值。PdfString
PdfDictionary
以下代码将打印出这两个 ID,可以根据例如 Acrobat Pro 的导出(NBHex.encodeHexString
是 Apache commons-codec)进行验证:
public void printIds(PdfReader reader) {
PdfDictionary trailer = reader.getTrailer();
if (trailer.contains(PdfName.ID)) {
PdfArray ids = (PdfArray) trailer.get(PdfName.ID);
PdfString original = ids.getAsString(0);
PdfString modified = ids.getAsString(1);
System.out.println(Hex.encodeHexString(original.getBytes()));
System.out.println(Hex.encodeHexString(modified.getBytes()));
}
}