gpt4 book ai didi

java - 在iText7中创建PdfTextFormField专门用于数字输入

转载 作者:行者123 更新时间:2023-12-02 09:08:58 30 4
gpt4 key购买 nike

我需要一个只能将数字输入作为十进制值(货币)的PdfTextFormField。其他字符必须被禁止。尽管我用 C# 编写代码,但也可以用 Java 给出任何提示。

最佳答案

是的,这是可能的。实际上 Adob​​e 有一些可用于验证的函数(请观看下面代码中的 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 引用提到了这些词典键:

  • PdfName.F - “在格式化字段以显示其当前值之前要执行的 JavaScript 操作。此操作可以在格式化之前修改字段的值。”
  • PdfName.K - “当用户在文本字段或组合框中键入击键或修改可滚动列表框中的选择时要执行的 JavaScript 操作。此操作可以检查击键的有效性并拒绝或修改它”

您可以在 Adobe's Forms API Reference 上找到有关这些功能的一些文档。 (第 119 页)。

这模仿了您可以在 Adob​​e Acrobat PRO 中设置的内容:

screenshot of Adobe Acrobat PRO

(我已经在Adobe Reader和Foxit Reader中测试了此方法。可能有些读者可能不支持它,在这种情况下,我建议您以类似的方式实现自己的Javascript验证)

关于java - 在iText7中创建PdfTextFormField专门用于数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59564011/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com