如何使用 iText 获取 XFDF 的 "original" 和"modified" ID?



XFDF文件中的最后一个标记看起来像这样:

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

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

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

如何使用iText获得这些值?

正如这篇文章所解释的(在PDF中删除PDFID)/ID是"预告字典"中的推荐条目(如果AcroForm是加密的,则需要)。

使用ittext, id被访问为尾部PdfDictionary中两个PdfString对象的PdfArray。String值看起来像垃圾,因为每个值都是字节数组的表示形式。这些是你需要的"原始"one_answers"修改"的十六进制值。

下面的代码将打印出两个id,可以根据例如从Acrobat Pro导出(注意Hex.encodeHexString是Apache common -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()));
    }
}

最新更新