diff options
author | tknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2009-12-02 18:10:49 +0000 |
---|---|---|
committer | tknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2009-12-02 18:10:49 +0000 |
commit | 840d6a4b71e5c8c0273be231a85306be26356933 (patch) | |
tree | d8f884e5b574f3b8b3e6bb4493a1b5527304346e /src | |
parent | 1fba63b7c5a897881096fe1f7f3ec19872ef5fdb (diff) | |
download | pdf-as-3-840d6a4b71e5c8c0273be231a85306be26356933.tar.gz pdf-as-3-840d6a4b71e5c8c0273be231a85306be26356933.tar.bz2 pdf-as-3-840d6a4b71e5c8c0273be231a85306be26356933.zip |
Two demos added, showing extraction of non-textual objects during signature and verification
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@484 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/demo/ExtractNonTextualObjectsDemo.java | 60 | ||||
-rw-r--r-- | src/main/java/demo/SignatureCreationDemo.java | 87 | ||||
-rw-r--r-- | src/main/java/demo/SignatureVerificationDemo.java | 115 | ||||
-rw-r--r-- | src/main/resources/config/help_text.properties | 94 |
4 files changed, 356 insertions, 0 deletions
diff --git a/src/main/java/demo/ExtractNonTextualObjectsDemo.java b/src/main/java/demo/ExtractNonTextualObjectsDemo.java new file mode 100644 index 0000000..d7c651f --- /dev/null +++ b/src/main/java/demo/ExtractNonTextualObjectsDemo.java @@ -0,0 +1,60 @@ +package demo;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
+import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
+import at.gv.egiz.pdfas.api.io.DataSource;
+import at.gv.egiz.pdfas.impl.api.commons.PdfDataSourceAdapter;
+import at.gv.egiz.pdfas.io.FileBasedDataSource;
+import at.knowcenter.wag.egov.egiz.PdfAS;
+
+public class ExtractNonTextualObjectsDemo {
+
+ /**
+ * Disable instantiation.
+ */
+ private ExtractNonTextualObjectsDemo() {
+ }
+
+ /**
+ * Starts a demo that extracts non-textual elements from a document.
+ *
+ * @param args
+ * The parameter(s).
+ */
+ public static void main(String[] args) {
+
+ if (args == null || args.length == 0) {
+ System.err.println("Please provide path of file to be signed.");
+ System.exit(1);
+ }
+
+ File testFile = new File(args[0]);
+
+ try {
+
+ // set source
+ DataSource dataSource = new FileBasedDataSource(testFile, "application/pdf");
+
+ List nonTextualObjects = PdfAS.extractNonTextualObjects(new PdfDataSourceAdapter(dataSource));
+ if (nonTextualObjects != null && !nonTextualObjects.isEmpty()) {
+ System.out.println("Non-textual objects found.");
+ Iterator noit = nonTextualObjects.iterator();
+ while (noit.hasNext()) {
+ NonTextObjectInfo info = (NonTextObjectInfo) noit.next();
+ System.out.println(" -> " + info.toString());
+ }
+ } else {
+ System.out.println("No non-textual objects found.");
+ }
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/src/main/java/demo/SignatureCreationDemo.java b/src/main/java/demo/SignatureCreationDemo.java new file mode 100644 index 0000000..c43b45e --- /dev/null +++ b/src/main/java/demo/SignatureCreationDemo.java @@ -0,0 +1,87 @@ +package demo;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+
+import at.gv.egiz.pdfas.PdfAsFactory;
+import at.gv.egiz.pdfas.api.PdfAs;
+import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
+import at.gv.egiz.pdfas.api.commons.Constants;
+import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.api.io.DataSource;
+import at.gv.egiz.pdfas.api.sign.SignParameters;
+import at.gv.egiz.pdfas.api.sign.SignResult;
+import at.gv.egiz.pdfas.io.FileBasedDataSink;
+import at.gv.egiz.pdfas.io.FileBasedDataSource;
+
+public class SignatureCreationDemo {
+
+ /**
+ * Disable instantiation.
+ */
+ private SignatureCreationDemo() {
+ }
+
+ /**
+ * Starts a demo that signs a document.
+ *
+ * @param args
+ * The parameter(s).
+ */
+ public static void main(String[] args) {
+
+ if (args == null || args.length == 0) {
+ System.err.println("Please provide path of file to be signed.");
+ System.exit(1);
+ }
+
+ File configdir = new File("./work");
+ File unsignedFile = new File(args[0]);
+ File signedFile = new File(args[0] + "_signed.pdf");
+
+ try {
+
+ // instantiate api
+ PdfAs pdfasAPI = PdfAsFactory.createPdfAs(configdir);
+
+ // set source
+ DataSource dataSource = new FileBasedDataSource(unsignedFile, "application/pdf");
+
+ // set output
+ FileBasedDataSink dataSink = new FileBasedDataSink(signedFile);
+
+ // configure signature
+ SignParameters signParameters = new SignParameters();
+ signParameters.setDocument(dataSource);
+ signParameters.setOutput(dataSink);
+ signParameters.setSignatureType(Constants.SIGNATURE_TYPE_BINARY);
+ signParameters.setSignatureDevice(Constants.SIGNATURE_DEVICE_MOA);
+ signParameters.setSignatureProfileId("SIGNATURBLOCK_DE");
+ signParameters.setSignaturePositioning(null);
+
+ // sign
+ System.out.println("Signing...");
+ SignResult signResult = pdfasAPI.sign(signParameters);
+ System.out.println("Successfully signed.");
+
+ // check if non textual elements have been detected
+ if (signResult.hasNonTextualObjects()) {
+ System.out.println("\nWARNING: Non textual objects detected.");
+ Iterator noit = signResult.getNonTextualObjects().iterator();
+ while (noit.hasNext()) {
+ NonTextObjectInfo info = (NonTextObjectInfo) noit.next();
+ System.out.println(" -> " + info.toString());
+ }
+ System.out.println();
+ }
+
+ } catch (PdfAsException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/src/main/java/demo/SignatureVerificationDemo.java b/src/main/java/demo/SignatureVerificationDemo.java new file mode 100644 index 0000000..498849d --- /dev/null +++ b/src/main/java/demo/SignatureVerificationDemo.java @@ -0,0 +1,115 @@ +package demo;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.List;
+
+import at.gv.egiz.pdfas.PdfAsFactory;
+import at.gv.egiz.pdfas.api.PdfAs;
+import at.gv.egiz.pdfas.api.analyze.AnalyzeParameters;
+import at.gv.egiz.pdfas.api.analyze.AnalyzeResult;
+import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
+import at.gv.egiz.pdfas.api.commons.Constants;
+import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.api.io.DataSource;
+import at.gv.egiz.pdfas.api.verify.VerifyAfterAnalysisParameters;
+import at.gv.egiz.pdfas.api.verify.VerifyResult;
+import at.gv.egiz.pdfas.api.verify.VerifyResults;
+import at.gv.egiz.pdfas.commandline.Main;
+import at.gv.egiz.pdfas.framework.config.SettingsHelper;
+import at.gv.egiz.pdfas.framework.vfilter.VerificationFilterParameters;
+import at.gv.egiz.pdfas.io.FileBasedDataSource;
+
+public class SignatureVerificationDemo {
+
+ /**
+ * Starts a demo that verifies a document.
+ *
+ * @param args
+ * The parameter(s).
+ */
+ public static void main(String[] args) {
+
+ if (args == null || args.length == 0) {
+ System.err.println("Please provide path of file to be verified.");
+ System.exit(1);
+ }
+
+ File configdir = new File("./work");
+ File signedFile = new File(args[0]);
+
+ try {
+
+ // instantiate api
+ PdfAs pdfasAPI = PdfAsFactory.createPdfAs(configdir);
+
+ // set source
+ DataSource dataSource = new FileBasedDataSource(signedFile, "application/pdf");
+
+ // evaluate settings
+ VerificationFilterParameters parameters = SettingsHelper.readVerificationFilterParametersFromSettings();
+ String verifyMode = Constants.VERIFY_MODE_FULL_CONSERVATIVE;
+
+ if (parameters.extractBinarySignaturesOnly()) {
+ verifyMode = Constants.VERIFY_MODE_BINARY_ONLY;
+ } else if (parameters.assumeOnlySignatureUpdateBlocks()) {
+ verifyMode = Constants.VERIFY_MODE_SEMI_CONSERVATIVE;
+ } else {
+ verifyMode = Constants.VERIFY_MODE_FULL_CONSERVATIVE;
+ }
+
+ // configure analyze parameters
+ AnalyzeParameters analyzeParameters = new AnalyzeParameters();
+ analyzeParameters.setDocument(dataSource);
+ analyzeParameters.setVerifyMode(verifyMode);
+ analyzeParameters.setReturnNonTextualObjects(true);
+
+ // analyze
+ System.out.println("Analyzing...");
+ AnalyzeResult analyzeResult = pdfasAPI.analyze(analyzeParameters);
+ System.out.println("Successfully analyzed.");
+
+ // setup verification
+ VerifyAfterAnalysisParameters vaap = new VerifyAfterAnalysisParameters();
+ vaap.setAnalyzeResult(analyzeResult);
+ vaap.setReturnHashInputData(true);
+ vaap.setSignatureDevice(Constants.SIGNATURE_DEVICE_MOA);
+ vaap.setVerificationTime(null);
+
+ // invoke verification
+ System.out.println("Verifying...");
+ VerifyResults verifyResults = pdfasAPI.verify(vaap);
+ List verifyResultList = verifyResults.getResults();
+ System.out.println("Verification complete.");
+
+ // iterate over results
+ PrintWriter out = new PrintWriter(System.out);
+ Iterator it = verifyResultList.iterator();
+ while (it.hasNext()) {
+ VerifyResult result = (VerifyResult) it.next();
+ Main.formatVerifyResult(result, out);
+ }
+ out.flush();
+
+ // check if non textual elements have been detected
+ if (analyzeResult.hasNonTextualObjects()) {
+ System.out.println("\nWARNING: Non textual objects detected.");
+ Iterator noit = analyzeResult.getNonTextualObjects().iterator();
+ while (noit.hasNext()) {
+ NonTextObjectInfo info = (NonTextObjectInfo) noit.next();
+ System.out.println(" -> " + info.toString());
+ }
+ System.out.println();
+ }
+
+ } catch (PdfAsException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/src/main/resources/config/help_text.properties b/src/main/resources/config/help_text.properties new file mode 100644 index 0000000..12b240c --- /dev/null +++ b/src/main/resources/config/help_text.properties @@ -0,0 +1,94 @@ +#ErrorCodeException
+error.code.0=Externer Fehler.
+error.code.1=Das Dokument kann nicht signiert werden.
+error.code.2=Die Signatur f�r das Dokument kann nicht �berpr�ft werden.
+error.code.3=Es wurde kein Dokument zur Signierung angegeben oder das Dokument konnte nicht gespeichert werden.
+error.code.4=Es wurde kein Dokument zur �berpr�fung angegeben oder das Dokument konnte nicht gespeichert werden.
+error.code.5=Zum Signieren eines Dokmentes m�ssen Sie authentifiziert sein.
+
+error.code.10=Das System kann nicht initialisiert werden. Bitte wenden Sie sich an einen Systemadministrator.
+
+#SettingNotFoundException
+error.code.100=Der Konfigurationsschl�ssel konnte nicht gefunden werden.
+error.code.101=Die Konfigurationsdatei konnte nicht geladen werden.
+error.code.102=Das Signaturprofil enth�lt keinen Bericht f�r die Kennzeichnung.
+error.code.103=F�r den PDA/A Modus muss eine einbettbare TrueType-Schrift konfiguriert sein.
+error.code.104=Die Konfiguration der SignaturLayout-Implementierung fehlt oder ist ung�ltig.
+
+#PDFDocumentException
+error.code.201=Das PDF Dokument kann nicht gelesen werden, oder die Datei hat ein falsches Format.
+error.code.202=Der Text konnte nicht extrahiert werden.
+error.code.203=Die PDF Library konnte nicht geladen werden.
+error.code.204=Das Dokument ist bereits signiert.
+error.code.205=Das PDF Dokument kann nicht erstellt werden. Der Zugriff auf das Dokument ist blockiert.
+error.code.206=Das Dokument ist nicht signiert.
+error.code.210=Das Dokument kann nicht geschlossen werden.
+error.code.220=Die Bildmarke f�r die Signatur kann nicht geladen werden.
+error.code.221=Die Referenz f�r die Bildmarke der Signatur ist ung�ltig.
+error.code.222=Der Zugriff auf die Bildmarke der Signatur ist nicht m�glich.
+error.code.223=Es ist keine Signaturtabelle definiert.
+error.code.224=Die angegebene absolute Position ist ung�ltig.
+error.code.225=Die angegebene Seite in der absoluten Position darf nicht kleiner als 1 sein.
+error.code.226=Der angegebene Wert f�r die Breite in der absoluten Position darf nicht kleiner gleich 0 sein.
+error.code.227=Der angegebene Wert f�r die Seitennummer im Positionsparameter ist zu gro�.
+error.code.228=Der angegebene Wert f�r die x-Position in der absoluten Position darf nicht kleiner gleich 0 sein.
+error.code.229=Der angegebene Wert f�r die y-Position in der absoluten Position darf nicht kleiner gleich 0 sein.
+error.code.230=Die Schriftart konnte nicht geladen werden.
+
+error.code.250=Das angegebene Dokument ist leer.
+error.code.251=Das angegebene Dokument enth�lt keinen extrahierbaren Text. Falls sich der Inhalt ausschlie�lich aus Bildern zusammensetzt, wird die Verwendung einer bin�ren Signatur empfohlen.
+
+#SignatureException
+error.code.300=Die Signatur kann nicht erstellt werden.
+error.code.301=Die Signatur kann nicht erstellt werden. Das zu signierende Dokument enth�lt keinen Text.
+error.code.302=Die Signatur kann nicht erstellt werden. Der Signaturtyp ist nicht definiert.
+error.code.303=Die Signatur kann nicht erstellt werden. Die Seriennummer ist ung�ltig.
+error.code.304=Die Signatur kann nicht erstellt werden. Das Signatur Zertifikat kann nicht gelesen werden.
+error.code.305=Die Signatur kann nicht erstellt werden. Das gew�hlte Signaturprofil ist nicht f�r die Textsignatur geeignet, da es nicht alle notwendigen Signaturfelder sichtbar definiert. Bitte w�hlen Sie ein anderes Signaturprofil oder f�hren Sie eine Bin�rsignatur durch.
+
+error.code.310=Die Signatur kann nicht �berpr�ft werden.
+error.code.311=Der zu pr�fende Text ist nicht definiert.
+error.code.312=Die zu pr�fende Signatur ist nicht definiert.
+error.code.313=Das Zertifikat (Seriennummer oder Aussteller) ist unbekannt oder kann nicht zugeordnet werden.
+error.code.314=Beim Auffinden der Signaturen ist ein Fehler aufgetreten. Es wurden mehrere passende Signaturprofile gefunden, die aber nicht semantisch �quivalent sind. Daher kann die Applikation nicht entscheiden welches Signaturprofil zur Pr�fung herangezogen werden muss.
+error.code.315=Beim Auffinden der Signaturen ist ein Fehler aufgetreten. Obwohl mehrere passende Signaturprofile gefunden wurden kann die Applikation auf Grund deren Beschaffenheit nicht eindeutig entscheiden welches Signaturprofil zur Pr�fung herangezogen werden muss.
+
+# added by tzefferer
+error.code.316=Das Dokument wurde nach erfolgter Signierung ver�ndert.
+error.code.317=Das Dokument enth�lt nicht-bin�re Signaturen.
+
+error.code.318=Die bin�re Signatur kann nicht gepr�ft werden. Die Signatur enth�lt nicht unterst�tzte /replaces-Namen.
+
+error.code.320=Es kann keine Verbindung zur B�rgerkartenumgebung hergestellt werden.
+error.code.330=Es kann keine Verbindung zu MOA hergestellt werden oder MOA hat den Request zur�ckgewiesen.
+
+# TODO remove this when MOA detached is ready
+error.code.370=Eine detached Signature kann zur Zeit mit MOA nicht �berpr�ft werden.
+
+# F�r die Online-BKU: Signatur-Pr�fung wird nicht unterst�tzt werden.
+error.code.371=Dieses Signaturger�t unterst�tzt keine Signatur-Pr�fung.
+
+# Workaround for ITS(Mac/Linux) bug concerning the signing time.
+error.code.372=Der Signaturzeitpunkt ist ung�ltig. Stellen Sie bitte sicher, dass die Systemzeit sowie die Zeitzoneneinstellung Ihres Rechners korrekt sind sowie dass Sie die aktuellste Version Ihrer B�rgerkartenumgebung verwenden.
+
+# Unsupported BKU
+error.code.373=Dieses Signaturger�t wird nicht unterst�tzt.
+
+#NormalizeException
+error.code.400=Das Normalisierungsmodul kann nicht initialisiert werden.
+
+#LDAPException
+error.code.500=Das Zertifikat konnte nicht auf dem LDAP Server gefunden werden.
+
+#Session exception
+error.code.600=Die Sitzung ist entweder ung�ltig oder wurde bereits beendet.
+
+#PlaceholderException
+error.code.700=Der Platzhalter f�r einen Wert wurde zu kurz gew�hlt. Es konnte nicht der gesamte Wert in die Signatur eingef�gt werden. Bitte vergr��ern Sie die L�nge des entsprechenden Platzhalters im Signaturprofil.
+#CaptionNotFoundException
+error.code.701=Die �berschrift (Caption/Label) konnte nicht eindeutig wiedergefunden werden. Dies geschieht gew�hnlich wenn bei der (h�ufig absoluten) Positionierung zu wenig Platz f�r die �berschrift (Caption/Label) vorhanden ist und diese ung�nstig umgebrochen werden muss. Bitte stellen Sie dieser �berschrift mehr Platz im Signaturblock zur Verf�gung oder entfernen Sie aus dieser alle Leerzeichen.
+
+#CorrectorException
+error.code.800=Fehler beim Parsen der bin�ren Signatur.
+error.code.801=Das Dokument konnte nicht korrigiert werden.
+error.code.802=Die externe Korrektur konnte nicht innerhalb des festgesetzten Timeouts fertiggestellt werden.
|