我正在使用一个AcroForm,它有一个最大长度的文本字段(PDTextBox)。如何使用PDFBox检测此字段的最大长度。
感谢您的帮助。
答案 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"));