2016-11-23 5 views
1

Versuchen, Dokumentation über die Aktionen zu finden, aber es gibt sehr wenig.iText7 Feld Ereignis Aktion funktioniert nicht

Blick durch ihre api sagt mir wenig über eines der Felder der PdfName-Klasse.

fand ich einen Code-Snippet here, die kurz über das Feld V-Wert PDFName geht, E, X, D und U.

diese Feldwerte Jedoch nicht korrekt die Ereignisse nicht eingerichtet.

Wenn ich ein Signaturfeld erstellen und dann im folgenden Code Aktionen hinzufügen, wird nur das V-Ereignis ausgelöst, keines der anderen Ereignisse.

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

Weiß jemand, warum die Ereignisse nicht richtig zünden?

+0

In Bezug auf PDFName finden Sie http://stackoverflow.com/q/17645840/766786 –

+0

1) Welche Zuschauer haben Sie die pdf öffnen verwenden? iText validiert oder führt die js nicht aus, es ist der Viewer, der den JS-Parser implementieren soll. 2) Die PdfName-Felder sind meist direkte Implementierungen aus den pdf-Namen für Wörterbucheinträge, und diese sind in der Pdf-Spezifikation (ISO-32000) zu finden. –

Antwort

1

Aus Ihrem Code geht nicht hervor, wie Sie Widgets mit Ihrem Formularfeld verknüpfen.

Sie können die Methode createSignature(PdfDocument, Rectangle) verwenden, um das Widgetanmerkungsrechteck sofort anzugeben. Es gibt andere Möglichkeiten, dem Formularfeld später Widgets hinzuzufügen, aber aus Ihrem Code ist nicht klar, ob Sie es tun oder nicht.

In jedem Fall ist folgendes ein vollständig funktionierender Code, der die Datei erzeugt, für die Ereignisse korrekt in Adobe Reader (und sogar im Standard-Windows PDF-Reader) ausgelöst werden.

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