如何使用PDFBox API确定PDTextbox值的数据类型

如何使用PDFBox API确定PDTextbox值的数据类型,pdf,pdfbox,Pdf,Pdfbox,使用PDFBOXAPI,我想在PDTextbox字段上添加一个限制,如果生成的PDF textbox需要一个字符串值,那么它不应该允许一个数字值。类似地,如果文本框需要浮点值,则不应允许字符串值 我试图通过从PDField获取COSBase对象来确定数据类型,并分析了COSBase对象,但似乎接受字符串的PDTextbox对象既不是costring类型,也不是COSFloat或cointeger类型 下面是代码片段,它总是打印“############实例,无论它是什么PDField,都不是co

使用PDFBOXAPI,我想在PDTextbox字段上添加一个限制,如果生成的PDF textbox需要一个字符串值,那么它不应该允许一个数字值。类似地,如果文本框需要浮点值,则不应允许字符串值

我试图通过从PDField获取COSBase对象来确定数据类型,并分析了COSBase对象,但似乎接受字符串的PDTextbox对象既不是costring类型,也不是COSFloat或cointeger类型

下面是代码片段,它总是打印“############实例,无论它是什么PDField,都不是cointeger类型、COSFloat或costring”

if(field instanceof PDTextbox) {
PDTextbox textBox = (PDTextbox) field;
COSBase cosBaseObject = textBox.getCOSObject();

if(cosBaseObject instanceof COSInteger) {
    System.out.println("######### PDField instanceof COSInteger");
} else if(cosBaseObject instanceof COSFloat) {
    System.out.println("######### PDField instanceof COSFloat");
} else if(cosBaseObject instanceof COSString) {
    System.out.println("######### PDField instanceof COSString");
} else if(cosBaseObject instanceof COSNumber) {
    System.out.println("######### PDField instanceof COSNumber");
} else {
    System.out.println("######### Instance neither of COSInteger type, nor COSFloat, nor COSString");
}
}

如果有人对如何实现它有一些建议,请让我知道。如果你需要任何进一步的信息,请告诉我。感谢您的帮助。

我想您谈论的是常规AcroForm字段,而不是XFA表单字段。表单字段本身没有内容类型,完成类型只能由JavaScript强制执行。因此,表示PDF对象的PDFBox对象不反映任何数据类型。感谢mkl的及时响应。是的,我说的是常规AcroForm字段,而不是XFA字段。那么,我们如何将PDTextbox值强制和限制为特定的数据类型呢?在PDFBox API中可能吗?如果没有它,在我的PDF字段中,我需要电话号码(Number),用户可以输入字母数字字符(String)。谢谢PDFBOXAPI允许您读取控制允许的字段输入的JavaScript,但您必须解释该JavaScript并相应地限制输入到字段中的数据。