iText7 Field Event Action无效

时间:2016-11-23 19:55:51

标签: javascript java pdf itext itext7

尝试查找有关操作的文档,但几乎没有。

查看他们的api告诉我很少关于PdfName类的任何字段。

我找到了一段代码here,简要介绍了PdfName字段值V,E,X,D和U.

但是,这些字段值不能正确设置事件。

当我创建签名字段然后在以下代码中添加操作时,只会触发V事件,而不会触发任何其他事件。

PdfSignatureFormField sigField = PdfFormField.createSignature(pdf);             
sigField.setFieldName("signature");

sigField.setAdditionalAction(PdfName.V, PdfAction.createJavaScript(
    "app.alert(\"Validation\")"));

sigField.setAdditionalAction(PdfName.E, PdfAction.createJavaScript(
    "app.alert(\"Mouse Enter\")"));

sigField.setAdditionalAction(PdfName.X, PdfAction.createJavaScript(
    "app.alert(\"Mouse Exit\")"));

sigField.setAdditionalAction(PdfName.D, PdfAction.createJavaScript(
    "app.alert(\"Mouse Down\")"));

sigField.setAdditionalAction(PdfName.U, PdfAction.createJavaScript(
    "app.alert(\"Mouse Up\")"));

有谁知道为什么事件没有正确解雇?

1 个答案:

答案 0 :(得分:1)

从您的代码中不清楚如何将小部件与表单字段相关联。

您可以使用createSignature(PdfDocument, Rectangle)方法立即指定窗口小部件注释矩形。之后还有其他方法可以将窗口小部件添加到窗体字段中,但同样,从代码中可以看出是否正在执行此操作。

在任何情况下,以下是一段完整的代码,生成在Adobe Reader中正确触发事件的文件(甚至在默认的Windows Pdf Reader中)。

PdfFormField sigField = PdfFormField.createSignature(doc, new Rectangle(72, 632, 200, 100));
sigField.setFieldName("signature");
sigField.setAdditionalAction(PdfName.V, PdfAction.createJavaScript(
        "app.alert(\"Validation\")"));

sigField.setAdditionalAction(PdfName.E, PdfAction.createJavaScript(
        "app.alert(\"Mouse Enter\")"));

sigField.setAdditionalAction(PdfName.X, PdfAction.createJavaScript(
        "app.alert(\"Mouse Exit\")"));

sigField.setAdditionalAction(PdfName.D, PdfAction.createJavaScript(
        "app.alert(\"Mouse Down\")"));

sigField.setAdditionalAction(PdfName.U, PdfAction.createJavaScript(
        "app.alert(\"Mouse Up\")"));
form.addField(sigField);