在签名的PDF中 在SignatureDictionary的PROP_BUILD字典的FILTER字典中是4个键
/Date
/Name
/V
/R
由于没有PdfName.DATE,如何从RUPS可以看到我知道存在的这一点检索日期?
答案 0 :(得分:2)
RUPS使用getAsDict()
,getAsNumber()
等方法通过PDF抓取。但一切都从getCatalog()
方法开始,它为您提供PDF的根词典。
my book的第13章对此进行了解释,但如果您没有该图书的副本,则您已经可以从examples of chapter 13内容为 PDF的内幕曝光中受益/强>
例如:看看FixBrokenForm
示例:
PdfReader reader = new PdfReader(src);
PdfDictionary root = reader.getCatalog();
PdfDictionary form = root.getAsDict(PdfName.ACROFORM);
PdfArray fields = form.getAsArray(PdfName.FIELDS);
在此示例中,我们使用root
方法从reader
获取getCatalog()
字典。我们使用/AcroForm
方法获取getAsDict()
字典,使用/Fields
方法获取getAsArray()
数组。
在内部,这已经为您提供了非常接近您需要的内容,因为/Fields
数组中的一个词典将是签名字段词典:
PdfDictionary signatureField = fields.getAsDict(i);
在上面的行中i
是您的签名字段的索引(您可以找到/Fields
数组中所有条目中的哪一个是您要查找的签名字段)。
获得signatureField
后,您可以获得如下签名字典:
PdfDictionary sigDict = signatureField.getAsDict(PdfName.V);
从那以后,您可以进一步检查签名词典中的所有条目。
请注意,还可以使用AcroField.Item
类直接访问签名字段字典。有关详细信息,请查看InspectForm
示例。但是,当你明确提到RUPS时,我以为你想知道RUPS如何在内部工作,这就是我从根词典开始的原因。