2016-11-23 56 views
1

試圖查找有關操作的文檔,但是很少。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\")")); 

有誰知道爲什麼事件沒有正確觸發?

+0

關於PdfName,請參閱http://stackoverflow.com/q/17645840/766786 –

+0

1)您使用的是什麼瀏覽器來打開PDF文件? iText不驗證或執行js,它是應該實現JS解析器的查看器。 2)PdfName字段大多是直接從字典條目的pdf名稱實現的,這些字段可以在Pdf-spec(ISO-32000)中找到, –

回答

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);