【问题标题】:iText onchange event not firingiText onchange 事件未触发
【发布时间】:2018-07-16 10:07:11
【问题描述】:

我正在使用 OpenPDF(基于 iText)制作一个带有 2 个输入的简单 PDF 表单,我想要完成的是在第一个字段被填充后自动将第一个字段的值复制到第二个字段中。我实际上需要一个能够自动添加所有其他字段并显示总和的字段,但首先我想尝试一个简单的示例。

我在一个字段上附加了一个 onchange 动作,据我了解,只要任何字段发生变化,它就会触发:

TextField name1 = new TextField(writer, new Rectangle(100, 800, 200, 830), "idInput1");
PdfFormField field1 = name1.getTextField();
field1.put(PdfName.CO, new PdfNumber(1));
writer.addAnnotation(field1);

TextField name2 = new TextField(writer, new Rectangle(100, 700, 200, 730), "idInput2");
PdfFormField field2 = name2.getTextField();
field2.setAdditionalActions(PdfName.C, PdfAction.javaScript("event.change = 123;", writer));
field2.put(PdfName.CO, new PdfNumber(2));
writer.addAnnotation(field2);

但是,这个 onchange 事件永远不会被触发。如果我将此事件更改为用于击键的 PdfName.K,那么它将触发。

对我做错了什么有任何想法吗?

【问题讨论】:

  • 请分享一个示例 PDF 以重现该问题。

标签: javascript pdf itext openpdf


【解决方案1】:

好的,我终于找到了问题所在,所以我会发布它以防有人需要它,因为我在网上找不到类似的例子。

我有两个错误:

1) 在 JSfunction 中,而不是 "event.change = 123" 应该是 "event.value = 123"

2) 每个字段都应该添加到作者的计算顺序中,只为每个字段设置计算顺序号是不够的:

writer.addCalculationOrder(field1);
writer.addCalculationOrder(field2);

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多