0

XFDFファイルの最後のタグは次のようになります。

<ids original="20639838865717E80D2556CB7B2AEC2D" 
     modified="754C78B10C9159419708446C3395CDBE"/>

これらの値は、次の方法を使用してAcrobatからPDFフォームデータをエクスポートすることで取得できます:http ://wiki.developerforce.com/page/Adobe_XFDF_Ids_Determination 。

ただし、任意のPDFフォーム用の正しいxfdfドキュメントを作成するために、プログラムでIDを取得したいと思います。

iTextを使用してこれらの値を取得するにはどうすればよいですか?

4

1 に答える 1

1

この投稿で説明されているように(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()));
    }
}
于 2013-01-15T11:32:39.370 に答える