From 535a04fa05f739ec16dd81666e3b0f82dfbd442d Mon Sep 17 00:00:00 2001 From: tknall Date: Wed, 9 Jan 2013 15:41:29 +0000 Subject: pdf-as-lib maven project files moved to pdf-as-lib git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/pdf-as/trunk@926 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../src/main/java/demo/SignatureCreationDemo.java | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 pdf-as-lib/src/main/java/demo/SignatureCreationDemo.java (limited to 'pdf-as-lib/src/main/java/demo/SignatureCreationDemo.java') diff --git a/pdf-as-lib/src/main/java/demo/SignatureCreationDemo.java b/pdf-as-lib/src/main/java/demo/SignatureCreationDemo.java new file mode 100644 index 0000000..06e454e --- /dev/null +++ b/pdf-as-lib/src/main/java/demo/SignatureCreationDemo.java @@ -0,0 +1,130 @@ +/** + * Copyright 2006 by Know-Center, Graz, Austria + * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a + * joint initiative of the Federal Chancellery Austria and Graz University of + * Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +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.api.sign.pos.SignaturePositioning; +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.setSignatureDevice(Constants.SIGNATURE_DEVICE_MOA); // Constants.SIGNATURE_DEVICE_BKU + signParameters.setSignaturePositioning(new SignaturePositioning("x:100;y:200;w:500;p:1;f:80")); + signParameters.setCheckForPlaceholder(true); + // standard signature + signParameters.setSignatureType(Constants.SIGNATURE_TYPE_TEXTUAL); + signParameters.setSignatureProfileId("SIGNATURBLOCK_DE"); + + // --- enable in case of BAIK SIGNATURE --- + /* + signParameters.setSignatureType(Constants.SIGNATURE_TYPE_BINARY); + // signParameters.setSignatureProfileId("BAIK_URKUNDE_SIGNATUR"); + signParameters.setSignatureProfileId("BAIK_ARCHIV_SIGNATUR"); + // use BAIK TimeStamp + signParameters.setTimeStamperImpl(new DummyTimeStamper()); + */ + + // dynamic adjustment of signature profile values + // warning: inconsiderate modifications might lead to signatures that can't be validated + // based on default configuration + // note: any modifications are bound to the SignParameters object instance. + // It is not possible to permanently change profile configuration. + signParameters.setProfileOverrideValue("SIG_NAME", "Max Mustermann"); // you may use expressions here like ${subject.EMAIL} + signParameters.setProfileOverrideValue("SIG_META", "This is a modified note."); + + // 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: " + signResult.getNonTextualObjects().size() + " non textual object(s) 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(); + } + + } + +} -- cgit v1.2.3