我需要一个只能将数字输入作为十进制值(货币)的PdfTextFormField。其他字符必须被禁止。尽管我用C#编写代码,但也可以在Java中给出任何提示。
发布于 2020-01-02 14:36:15
是的,这是可能的。实际上,Adobe有一些可以用于验证的功能(查看下面代码中的AFNumber_内容):
public void helloWorldForm() throws IOException {
logger.info("create PDF on {}", DEST);
final PdfWriter pdfWriter = new PdfWriter(DEST);
final PdfDocument pdfDocument = new PdfDocument(pdfWriter);
try (final Document document = new Document(pdfDocument)) {
document.add(new Paragraph("Number with 2 decimal places"));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDocument, true);
PdfTextFormField nameField = PdfTextFormField.createText(pdfDocument,
new Rectangle(99, 753, 425, 15), "value", "");
form.addField(nameField);
PdfAction validation = PdfAction.createJavaScript("AFNumber_Format(2,0,0,0,\"\", true);");
nameField.setAdditionalAction(PdfName.F, validation);
validation = PdfAction.createJavaScript("AFNumber_Keystroke(2,0,0,0,\"\", true);");
nameField.setAdditionalAction(PdfName.K, validation);
}
pdfDocument.close();
}这将创建一个只接受数字的表单,您可以使用“。小数位(句号)。
PDF引用提到了这些字典键:
您可以在Adobe的窗体API引用上找到关于这些函数的一些文档(第119页)。
这模仿了在中可以设置的内容:

(我已经在和中测试了这种方法。可能有些读者不支持它,在这种情况下,我建议您以类似的方式实现您自己的Javascript验证)
https://stackoverflow.com/questions/59564011
复制相似问题