この投稿で説明されているように(PDFでPDFIDを削除)/ IDは「トレーラー辞書」の推奨エントリです(AcroFormが暗号化されている場合は必須です)。
iTextを使用すると、IDはトレーラー内の2つのオブジェクトPdfArrayの1つとしてアクセスされます。文字列値はそれぞれがバイト配列の表現であるため、ゴミのように見えます。これらは、「元の」および「変更された」に必要な16進値です。PdfStringPdfDictionary
次のコードは、2つの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()));
}
}