0

XFDF 文件中的最后一个标签如下所示:

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

我可以通过使用以下方法从 Acrobat 导出 PDF 表单数据来获取这些值:http ://wiki.developerforce.com/page/Adobe_XFDF_Ids_Determination 。

但是,我想以编程方式获取 ID,以便为任意 PDF 表单构建正确的 xfdf 文档。

如何使用 iText 获取这些值?

4

1 回答 1

1

如本文所述(删除 PDF 中的 PDFID)/ID 是“预告片字典”中的推荐条目(如果 AcroForm 已加密,则需要该条目)。

使用 iText,ID 可以作为预告片中PdfArray的两个对象之一进行访问。String 值看起来像垃圾,因为每个都是字节数组的表示。这些是“原始”和“修改”所需的十六进制值。PdfStringPdfDictionary

以下代码将打印出这两个 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 回答