From 897664089ed6b3082d3dcca946533c83268a79bb Mon Sep 17 00:00:00 2001 From: Alexander Marsalek Date: Fri, 25 Jun 2021 09:16:31 +0200 Subject: fix for issue #47 --- .../pdfas/cli/test/SignaturBlockParameterTest.java | 292 --------------------- .../cli/test/SignatureBlockParameterTest.java | 292 +++++++++++++++++++++ 2 files changed, 292 insertions(+), 292 deletions(-) delete mode 100644 pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignaturBlockParameterTest.java create mode 100644 pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignatureBlockParameterTest.java (limited to 'pdf-as-cli/src/test') diff --git a/pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignaturBlockParameterTest.java b/pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignaturBlockParameterTest.java deleted file mode 100644 index f723a6c1..00000000 --- a/pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignaturBlockParameterTest.java +++ /dev/null @@ -1,292 +0,0 @@ -/******************************************************************************* - * Copyright 2014 by E-Government Innovation Center EGIZ, 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 at.gv.egiz.pdfas.cli.test; - -import at.gv.egiz.pdfas.common.exceptions.PDFASError; -import at.gv.egiz.pdfas.common.exceptions.PdfAsException; -import at.gv.egiz.pdfas.lib.api.ByteArrayDataSource; -import at.gv.egiz.pdfas.lib.api.Configuration; -import at.gv.egiz.pdfas.lib.api.PdfAs; -import at.gv.egiz.pdfas.lib.api.PdfAsFactory; -import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; -import at.gv.egiz.pdfas.lib.api.sign.SignParameter; -import at.gv.egiz.pdfas.lib.api.sign.SignResult; -import at.gv.egiz.pdfas.sigs.pades.PAdESSignerKeystore; -import org.apache.commons.io.IOUtils; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature; -import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; -import org.apache.pdfbox.pdmodel.interactive.form.PDField; -import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; -import org.junit.Assert; -import org.junit.Test; - -import javax.activation.DataSource; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class SignaturBlockParameterTest { - - public static final String KS_ALIAS = "ecc_test"; - public static final String KS_TYPE = "PKCS12"; - public static final String KS_PASS = "123456"; - public static final String KS_KEY_PASS = "123456"; - - public String getPath(String resourceName) { - ClassLoader classLoader = this.getClass().getClassLoader(); - File file = new File(classLoader.getResource(resourceName).getFile()); - String absolutePath = file.getAbsolutePath(); - - System.out.println(absolutePath); - return absolutePath; - } - - @Test(expected = PdfAsException.class) - public void invalid() throws IOException, PdfAsException, PDFASError { - - PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); - Configuration config = pdfas.getConfiguration(); - - byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); - - IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); - - String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC"; - System.out.println("Testing " + profile); - - DataSource source = new ByteArrayDataSource(input); - String outFile = getPath("out") + "/" + profile + ".pdf"; - FileOutputStream fos = new FileOutputStream(outFile); - SignParameter signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - - Map map = new HashMap<>(); - map.put("subject", "TEST123"); - map.put("WAY_TOOOOOOOOOOOOOOOOOOOOO_LONG_KEY", "bar"); - signParameter.setDynamicSignatureBlockArguments(map); -// signParameter.setPlainSigner(signer); -// signParameter.setSignatureProfileId(profile); -// -// SignResult result = pdfas.sign(signParameter); - - fos.close(); - - } - - @Test - public void test() throws IOException, PDFASError, PdfAsException { - - PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); - Configuration config = pdfas.getConfiguration(); - - byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); - - IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); - - String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC"; - System.out.println("Testing " + profile); - - DataSource source = new ByteArrayDataSource(input); - String outFile = getPath("out") + "/" + profile + ".pdf"; - FileOutputStream fos = new FileOutputStream(outFile); - SignParameter signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - - Map map = new HashMap<>(); - map.put("subject", "TEST123"); - map.put("foo", "bar"); - signParameter.setDynamicSignatureBlockArguments(map); - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - - SignResult result = pdfas.sign(signParameter); - - fos.close(); - String name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("TEST123 test bar 123 c TEST123 Andreas Fitzek ECC", name); - - - outFile = getPath("out") + "/" + profile + "-1.pdf"; - fos = new FileOutputStream(outFile); - signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - - map = new HashMap<>(); - map.put("subject", "TEST123"); - signParameter.setDynamicSignatureBlockArguments(map); - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - - result = pdfas.sign(signParameter); - - fos.close(); - name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("TEST123 test null 123 c TEST123 Andreas Fitzek ECC", name); - - outFile = getPath("out") + "/" + profile + "-2.pdf"; - fos = new FileOutputStream(outFile); - signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - map = new HashMap<>(); - map.put("foo", "bar"); - signParameter.setDynamicSignatureBlockArguments(map); - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - result = pdfas.sign(signParameter); - fos.close(); - name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("null test bar 123 c null Andreas Fitzek ECC", name); - - outFile = getPath("out") + "/" + profile + "-3.pdf"; - fos = new FileOutputStream(outFile); - signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - result = pdfas.sign(signParameter); - fos.close(); - name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("null test null 123 c null Andreas Fitzek ECC", name); -// Assert.assertEquals("{sbp.subject} test {sbp.foo} 123 {subject.T != null ? (subject.T + \" a \"+sbp.subject) : " + -// "\"c \"+sbp.subject+\" \"}Andreas Fitzek ECC", name); -//TODO was ist gewünscht? - - - outFile = getPath("out") + "/" + profile + "-4.pdf"; - fos = new FileOutputStream(outFile); - signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - map = new HashMap<>(); - signParameter.setDynamicSignatureBlockArguments(map); - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - result = pdfas.sign(signParameter); - fos.close(); - name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("null test null 123 c null Andreas Fitzek ECC", name); - - - } - - @Test - public void testWithUmlaute() throws IOException, PDFASError, PdfAsException { - - PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); - Configuration config = pdfas.getConfiguration(); - - - byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); - - IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); - - String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC"; - System.out.println("Testing " + profile); - - DataSource source = new ByteArrayDataSource(input); - String outFile = getPath("out") + "/" + profile + "-umlaute.pdf"; - FileOutputStream fos = new FileOutputStream(outFile); - SignParameter signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - - Map map = new HashMap<>(); - map.put("subject", "TEST123"); - map.put("foo", "baräöÜ"); - signParameter.setDynamicSignatureBlockArguments(map); - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - - SignResult result = pdfas.sign(signParameter); - - fos.close(); - String name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("TEST123 test baräöÜ 123 c TEST123 Andreas Fitzek ECC", name); - //expected: but was: - } - - - @Test - public void testWithTextAfterVariable() throws IOException, PDFASError, PdfAsException { - - PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); - Configuration config = pdfas.getConfiguration(); - - - byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); - - IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); - - String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC_WITH_TEXT_AFTER_VARIABLE"; - System.out.println("Testing " + profile); - - DataSource source = new ByteArrayDataSource(input); - String outFile = getPath("out") + "/" + profile + "-umlaute.pdf"; - FileOutputStream fos = new FileOutputStream(outFile); - SignParameter signParameter = PdfAsFactory.createSignParameter( - config, source, fos); - - Map map = new HashMap<>(); - map.put("subject", "TEST123"); - map.put("foo", "baräöÜ"); - signParameter.setDynamicSignatureBlockArguments(map); - signParameter.setPlainSigner(signer); - signParameter.setSignatureProfileId(profile); - - SignResult result = pdfas.sign(signParameter); - - fos.close(); - String name = getName(outFile, "PDF-AS Signatur1"); - Assert.assertEquals("Andreas Fitzek ECC text after variable", name); - //expected: but was: - } - - private String getName(String fileName, String sigFieldName) throws IOException { - PDDocument pdDoc = PDDocument.load(new File(fileName)); - PDSignature signature = null; - PDSignatureField signatureField; - PDAcroForm acroForm = pdDoc.getDocumentCatalog().getAcroForm(); - if (acroForm != null) { - List aa = acroForm.getFields(); - signatureField = (PDSignatureField) acroForm.getField(sigFieldName); - if (signatureField != null) { - // retrieve signature dictionary - signature = signatureField.getSignature(); - if (signature != null) { - String name = signature.getName(); - return name; - - } - - } - } - return null; - } - -} diff --git a/pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignatureBlockParameterTest.java b/pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignatureBlockParameterTest.java new file mode 100644 index 00000000..186eb5a9 --- /dev/null +++ b/pdf-as-cli/src/test/java/at/gv/egiz/pdfas/cli/test/SignatureBlockParameterTest.java @@ -0,0 +1,292 @@ +/******************************************************************************* + * Copyright 2014 by E-Government Innovation Center EGIZ, 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 at.gv.egiz.pdfas.cli.test; + +import at.gv.egiz.pdfas.common.exceptions.PDFASError; +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.lib.api.ByteArrayDataSource; +import at.gv.egiz.pdfas.lib.api.Configuration; +import at.gv.egiz.pdfas.lib.api.PdfAs; +import at.gv.egiz.pdfas.lib.api.PdfAsFactory; +import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; +import at.gv.egiz.pdfas.lib.api.sign.SignParameter; +import at.gv.egiz.pdfas.lib.api.sign.SignResult; +import at.gv.egiz.pdfas.sigs.pades.PAdESSignerKeystore; +import org.apache.commons.io.IOUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature; +import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; +import org.apache.pdfbox.pdmodel.interactive.form.PDField; +import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; +import org.junit.Assert; +import org.junit.Test; + +import javax.activation.DataSource; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SignatureBlockParameterTest { + + public static final String KS_ALIAS = "ecc_test"; + public static final String KS_TYPE = "PKCS12"; + public static final String KS_PASS = "123456"; + public static final String KS_KEY_PASS = "123456"; + + public String getPath(String resourceName) { + ClassLoader classLoader = this.getClass().getClassLoader(); + File file = new File(classLoader.getResource(resourceName).getFile()); + String absolutePath = file.getAbsolutePath(); + + System.out.println(absolutePath); + return absolutePath; + } + + @Test(expected = PdfAsException.class) + public void invalid() throws IOException, PdfAsException, PDFASError { + + PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); + Configuration config = pdfas.getConfiguration(); + + byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); + + IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); + + String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC"; + System.out.println("Testing " + profile); + + DataSource source = new ByteArrayDataSource(input); + String outFile = getPath("out") + "/" + profile + ".pdf"; + FileOutputStream fos = new FileOutputStream(outFile); + SignParameter signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + + Map map = new HashMap<>(); + map.put("subject", "TEST123"); + map.put("WAY_TOOOOOOOOOOOOOOOOOOOOO_LONG_KEY", "bar"); + signParameter.setDynamicSignatureBlockArguments(map); +// signParameter.setPlainSigner(signer); +// signParameter.setSignatureProfileId(profile); +// +// SignResult result = pdfas.sign(signParameter); + + fos.close(); + + } + + @Test + public void test() throws IOException, PDFASError, PdfAsException { + + PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); + Configuration config = pdfas.getConfiguration(); + + byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); + + IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); + + String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC"; + System.out.println("Testing " + profile); + + DataSource source = new ByteArrayDataSource(input); + String outFile = getPath("out") + "/" + profile + ".pdf"; + FileOutputStream fos = new FileOutputStream(outFile); + SignParameter signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + + Map map = new HashMap<>(); + map.put("subject", "TEST123"); + map.put("foo", "bar"); + signParameter.setDynamicSignatureBlockArguments(map); + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + + SignResult result = pdfas.sign(signParameter); + + fos.close(); + String name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("TEST123 test bar 123 c TEST123 Andreas Fitzek ECC", name); + + + outFile = getPath("out") + "/" + profile + "-1.pdf"; + fos = new FileOutputStream(outFile); + signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + + map = new HashMap<>(); + map.put("subject", "TEST123"); + signParameter.setDynamicSignatureBlockArguments(map); + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + + result = pdfas.sign(signParameter); + + fos.close(); + name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("TEST123 test null 123 c TEST123 Andreas Fitzek ECC", name); + + outFile = getPath("out") + "/" + profile + "-2.pdf"; + fos = new FileOutputStream(outFile); + signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + map = new HashMap<>(); + map.put("foo", "bar"); + signParameter.setDynamicSignatureBlockArguments(map); + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + result = pdfas.sign(signParameter); + fos.close(); + name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("null test bar 123 c null Andreas Fitzek ECC", name); + + outFile = getPath("out") + "/" + profile + "-3.pdf"; + fos = new FileOutputStream(outFile); + signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + result = pdfas.sign(signParameter); + fos.close(); + name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("null test null 123 c null Andreas Fitzek ECC", name); +// Assert.assertEquals("{sbp.subject} test {sbp.foo} 123 {subject.T != null ? (subject.T + \" a \"+sbp.subject) : " + +// "\"c \"+sbp.subject+\" \"}Andreas Fitzek ECC", name); +//TODO was ist gewünscht? + + + outFile = getPath("out") + "/" + profile + "-4.pdf"; + fos = new FileOutputStream(outFile); + signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + map = new HashMap<>(); + signParameter.setDynamicSignatureBlockArguments(map); + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + result = pdfas.sign(signParameter); + fos.close(); + name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("null test null 123 c null Andreas Fitzek ECC", name); + + + } + + @Test + public void testWithUmlaute() throws IOException, PDFASError, PdfAsException { + + PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); + Configuration config = pdfas.getConfiguration(); + + + byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); + + IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); + + String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC"; + System.out.println("Testing " + profile); + + DataSource source = new ByteArrayDataSource(input); + String outFile = getPath("out") + "/" + profile + "-umlaute.pdf"; + FileOutputStream fos = new FileOutputStream(outFile); + SignParameter signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + + Map map = new HashMap<>(); + map.put("subject", "TEST123"); + map.put("foo", "baräöÜ"); + signParameter.setDynamicSignatureBlockArguments(map); + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + + SignResult result = pdfas.sign(signParameter); + + fos.close(); + String name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("TEST123 test baräöÜ 123 c TEST123 Andreas Fitzek ECC", name); + //expected: but was: + } + + + @Test + public void testWithTextAfterVariable() throws IOException, PDFASError, PdfAsException { + + PdfAs pdfas = PdfAsFactory.createPdfAs(new File(getPath("pdfas-config"))); + Configuration config = pdfas.getConfiguration(); + + + byte[] input = IOUtils.toByteArray(new FileInputStream(getPath("simple_rotated_0.pdf"))); + + IPlainSigner signer = new PAdESSignerKeystore(getPath("test.p12"), KS_ALIAS, KS_PASS, KS_KEY_PASS, KS_TYPE); + + String profile = "SIGNATURBLOCK_DE_NOTE_DYNAMIC_WITH_TEXT_AFTER_VARIABLE"; + System.out.println("Testing " + profile); + + DataSource source = new ByteArrayDataSource(input); + String outFile = getPath("out") + "/" + profile + "-umlaute.pdf"; + FileOutputStream fos = new FileOutputStream(outFile); + SignParameter signParameter = PdfAsFactory.createSignParameter( + config, source, fos); + + Map map = new HashMap<>(); + map.put("subject", "TEST123"); + map.put("foo", "baräöÜ"); + signParameter.setDynamicSignatureBlockArguments(map); + signParameter.setPlainSigner(signer); + signParameter.setSignatureProfileId(profile); + + SignResult result = pdfas.sign(signParameter); + + fos.close(); + String name = getName(outFile, "PDF-AS Signatur1"); + Assert.assertEquals("Andreas Fitzek ECC text after variable", name); + //expected: but was: + } + + private String getName(String fileName, String sigFieldName) throws IOException { + PDDocument pdDoc = PDDocument.load(new File(fileName)); + PDSignature signature = null; + PDSignatureField signatureField; + PDAcroForm acroForm = pdDoc.getDocumentCatalog().getAcroForm(); + if (acroForm != null) { + List aa = acroForm.getFields(); + signatureField = (PDSignatureField) acroForm.getField(sigFieldName); + if (signatureField != null) { + // retrieve signature dictionary + signature = signatureField.getSignature(); + if (signature != null) { + String name = signature.getName(); + return name; + + } + + } + } + return null; + } + +} -- cgit v1.2.3