首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >专为数字输入在iText7中创建iText7

专为数字输入在iText7中创建iText7
EN

Stack Overflow用户
提问于 2020-01-02 13:15:09
回答 1查看 383关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 14:36:15

是的,这是可能的。实际上,Adobe有一些可以用于验证的功能(查看下面代码中的AFNumber_内容):

代码语言:javascript
复制
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的窗体API引用上找到关于这些函数的一些文档(第119页)。

这模仿了在中可以设置的内容:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59564011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档