Itext 如何从PdfDictionary检索日期

Itext 如何从PdfDictionary检索日期,itext,itextpdf,Itext,Itextpdf,在签名的PDF中 在SignatureDictionary的PROP_BUILD字典的筛选器字典中有4个键 /Date /Name /V /R 由于没有PdfName.DATE,我如何从我知道存在的这一点检索日期,正如RUPS可以看到的那样?RUPS使用getAsDict(),getAsNumber()等方法在PDF中爬行。但是一切都是从getCatalog()方法开始的,它为您提供了PDF的根字典 这些都在的第13章中进行了解释,但是如果您没有该书的副本,您已经可以从名为“由内而外”的PDF

在签名的PDF中 在SignatureDictionary的PROP_BUILD字典的筛选器字典中有4个键

/Date
/Name
/V
/R

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

RUPS使用
getAsDict()
getAsNumber()
等方法在PDF中爬行。但是一切都是从
getCatalog()
方法开始的,它为您提供了PDF的根字典

这些都在的第13章中进行了解释,但是如果您没有该书的副本,您已经可以从名为“由内而外”的PDF中获益

例如:请看以下示例:

在本例中,我们使用
getCatalog()
方法从
reader
获取
root
字典。我们使用
getAsDict()
方法获得
/AcroForm
字典,使用
getAsArray()
方法获得
/Fields
数组

在内部,这已经让您非常接近您所需要的,因为
/Fields
数组中的一个字典将是签名字段字典:

PdfDictionary signatureField = fields.getAsDict(i);
在上面的
i
行中,是签名字段的索引(您可以找到
/Fields
数组中的哪些条目是您要查找的签名字段)

一旦您有了签名字段,您就可以得到如下签名字典:

PdfDictionary sigDict = signatureField.getAsDict(PdfName.V);
从此,您可以进一步检查签名字典中的所有条目


注意,使用
AcroField.Item
类还可以直接进入签名字段字典。有关更多信息,请查看示例。然而,正如您明确提到的RUPS,我想您应该想知道RUPS在内部是如何工作的,这就是我从根字典开始的原因。

一如既往,有用的指针。。。与get(PdfName.PROP_BUILD).get(PdfName.FILTER).get(new PdfName('Date'))一起使用PdfName.class中名为“/slns_fsize”的键名是什么来获取fontsize?@Bruno
PdfDictionary sigDict = signatureField.getAsDict(PdfName.V);