如何从PdfDictionary中检索日期

时间:2015-04-13 09:54:31

标签: itext itextpdf

在签名的PDF中 在SignatureDictionary的PROP_BUILD字典的FILTER字典中是4个键

/Date
/Name
/V
/R

由于没有PdfName.DATE,如何从RUPS可以看到我知道存在的这一点检索日期?

1 个答案:

答案 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如何在内部工作,这就是我从根词典开始的原因。