PDFBox:如何检测PDTextBox的最大长度

时间:2013-11-19 08:35:46

标签: pdfbox

我正在使用一个AcroForm,它有一个最大长度的文本字段(PDTextBox)。如何使用PDFBox检测此字段的最大长度。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

对于

PDTextbox field

您可以使用

检索为文本框建模的词典
COSDictionary fieldDict = field.getDictionary()

并在此查询其属性。

最大长度的词典条目是 MaxLen

  

MaxLen 整数(可选;可继承)字段文本的最大长度,以字符为单位

     

ISO 32000-1中的表229,PDF标准)

因此:

int maxLength = fieldDict.getInt(COSName.getPDFName("MaxLen"));

但是,如果返回-1,则不在此字典中设置该值。由于该值指定为可继承,您可能还必须检索父词典

COSDictionary parentDict = (COSDictionary) fieldDict.getDictionaryObject(COSName.PARENT);

并在那里寻找钥匙。可能你需要多次加强。

答案 1 :(得分:1)

我建议将其作为解决方案:

int maxLength = field.getCOSObject().getInt(COSName.MAX_LEN);

假设在OpenOffice中创建的表单中手动设置字段的最大长度,并将其导出为PDF,则可以使用上述解决方案在Java代码中检索该最大长度。如果未设置最大长度,则返回-1。

请注意,使用pdfbox 2.0.1,接受的答案中的代码在Eclipse中给出了语法错误:

codeCOSDictionary fieldDict = field.getDictionary();

int maxLength = fieldDict.getInt(COSName.getPDFName("MaxLen"));