首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用iText获取XFDF的“原始”和“修改”I?

如何使用iText获取XFDF的“原始”和“修改”I?
EN

Stack Overflow用户
提问于 2013-01-15 19:32:39
回答 1查看 857关注 0票数 0

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

代码语言:javascript
复制
<ids original="20639838865717E80D2556CB7B2AEC2D" 
     modified="754C78B10C9159419708446C3395CDBE"/>

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

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

如何使用iText获取这些值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 19:32:39

正如在这篇文章(removing PDFID in PDF)中所解释的那样,/ID是“尾部字典”中推荐的词条(如果AcroForm是加密的,则需要)。

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

下面的代码将打印出两个ID,可以根据Acrobat Pro的导出(NB Hex.encodeHexString是Apache commons-codec)进行验证:

代码语言:javascript
复制
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()));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14336816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档