如何从PDF检索可见的文本签名?

时间:2018-10-11 18:48:51

标签: itext

我正在尝试从PDF文件中检索签名信息,我能够使用itext库获取所有签名字段的名称:

PdfReader reader = new PdfReader(inputStream, null);
AcroFields af = reader.getAcroFields();
ArrayList<String> names = af.getSignatureNames();

但是我真正想要的是PDF文档中显示的确切的可视文本,例如,对于该文档,我想要获取以下文本:版本1:由我的测试公司签名

Signed PDF document

1 个答案:

答案 0 :(得分:0)

部分文字来自Adobe Reader。但是总的来说这是可能的。在Java版本中,代码如下所示:

PdfReader reader = new PdfReader(inputStream, null);
AcroFields af = reader.getAcroFields();
ArrayList<String> names = af.getSignatureNames();

for (String signatureName : names) {
    int revision = reader.getAcroFields().getRevision(signatureName);

    AcroFields.Item item = acroFields.getFieldItem(signatureName);
    PdfDictionary d = item.getMerged(0);
    PdfDictionary v = d.getAsDict(PdfName.V);

    if (v != null) {
        PdfString name = v.getAsString(PdfName.NAME);
        System.out.println("Rev."+revision+": Signed by "+ name.toString());
    }
}