Pdf 我如何获得ID;“原件”;及;修改的;对于使用iText的XFDF?

Pdf 我如何获得ID;“原件”;及;修改的;对于使用iText的XFDF?,pdf,itext,xfdf,Pdf,Itext,Xfdf,XFDF文件中的最后一个标记如下所示: <ids original="20639838865717E80D2556CB7B2AEC2D" modified="754C78B10C9159419708446C3395CDBE"/> 我可以通过使用以下方法从Acrobat导出PDF表单数据来获取这些值: 但是,我希望以编程方式获取ID,以便为任意PDF表单构建正确的xfdf文档 如何使用iText获取这些值?如本文所述()/ID是“拖车字典”中的推荐条目(如果对Acro

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

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

我可以通过使用以下方法从Acrobat导出PDF表单数据来获取这些值:

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

如何使用iText获取这些值?

如本文所述()/ID是“拖车字典”中的推荐条目(如果对AcroForm进行了加密,则必须输入)

使用iText,ID作为拖车
PdfDictionary
中两个
PdfString
对象的
PdfArray
进行访问。字符串值看起来像垃圾,因为每个值都表示一个字节数组。这些是“原始”和“修改”所需的十六进制值

以下代码将打印出两个ID,可以根据Acrobat Pro的导出进行验证(NB
Hex.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()));
    }
}