Das Hilfsprogramm ExtractJavaScript
extrahiert
JavaScript aus einem PDF-Dokument und erstellt daraus eine Textdatei.
Das Kapitel
3.16: „JavaScript“
beschreibt, wie die Datei in Tests verwendet werden kann.
:: :: Extract JavaScript from a PDF document into a text file. :: @echo off setlocal set CLASSPATH=./lib/aspectj-1.8.7/*;%CLASSPATH% set CLASSPATH=./lib/bouncycastle-jdk15on-153/*;%CLASSPATH% set CLASSPATH=./lib/commons-logging-1.2/*;%CLASSPATH% set CLASSPATH=./lib/pdfbox-2.0.0/*;%CLASSPATH% set CLASSPATH=./lib/pdfunit-2016.05/*;%CLASSPATH% set TOOL=com.pdfunit.tools.ExtractJavaScript set OUT_DIR=./tmp set IN_FILE=javaScriptForFields.pdf set PASSWD= java %TOOL% %IN_FILE% %OUT_DIR% %PASSWD% endlocal
Die Datei javaScriptForFields.pdf
, die schon im vorhergehenden
Kapitel 9.4: „Feldeigenschaften nach XML extrahieren“
als Beispiel herhalten musste, enthält für die Felder nameField
, ageField
und comment
auch JavaScript.
Innerhalb des Java-Programms, mit dem das PDF-Dokument erstellt wird, sieht der JavaScript-Code für das Feld „ageField“ so aus:
String scriptCodeCheckAge = "var ageField = this.getField('ageField');" + "ageField.setAction('Validate','checkAge()');" + "" + "function checkAge() {" + " if(event.value < 12) {" + " app.alert('Warning! Applicant\\'s age can not be younger than 12.');" + " event.value = 12;" + " }" + "}" ;
Die erstellte Datei heißt _javascript_javaScriptForFields.out.txt
und enthält den folgenden JavaScript-Code:
var nameField = this.getField('nameField');nameField.setAction('Keystroke', ... var ageField = ...;function checkAge() { if(event.value < 12) {... var commentField = this.getField('commentField');commentField.setAction(...
Sie können die Datei gerne neu formatieren, damit sie besser lesbar wird. Hinzugefügte Whitespaces beeinflussen einen PDFUnit-Test nicht.