From 65eb7054679d63a4f519bd31eb37805666e6fef8 Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Mon, 12 Dec 2016 07:50:25 +0100 Subject: added PDF/A-3b support, and PDF/A version detection --- .../stamping/pdfbox2/PDFAsTemplateCreator.java | 37 ++++++++++++++++++---- 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsTemplateCreator.java') diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsTemplateCreator.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsTemplateCreator.java index b8c15119..b07e6ed5 100644 --- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsTemplateCreator.java +++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsTemplateCreator.java @@ -23,11 +23,10 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.impl.stamping.pdfbox2; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; +import at.gv.egiz.pdfas.lib.impl.stamping.TableFactory; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; @@ -143,7 +142,9 @@ public class PDFAsTemplateCreator extends PDFTemplateCreator { null, innerFormName, properties); this.pdfBuilder.createVisualSignature(template); this.pdfBuilder.createWidgetDictionary(pdSignatureField, holderFormResources); - + + + ByteArrayInputStream in = null; //COSDocument doc = pdfStructure.getVisualSignature(); @@ -152,7 +153,31 @@ public class PDFAsTemplateCreator extends PDFTemplateCreator { ByteArrayOutputStream baos = new ByteArrayOutputStream(); template.save(baos); baos.close(); - in = new ByteArrayInputStream(baos.toByteArray()); + + SignatureProfileSettings signatureProfileSettings = + this.pdfBuilder.signatureProfileSettings; + + boolean requirePDFA3 = signatureProfileSettings.isPDFA3(); + + if(requirePDFA3) { + + //FileOutputStream fos = new FileOutputStream("/tmp/signature.pdf"); + //fos.write(baos.toByteArray()); + //fos.close(); + + PDDocument cidSetRemoved = PDDocument.load(baos.toByteArray()); + try { + this.pdfBuilder.removeCidSet(cidSetRemoved); + baos.reset(); + baos = new ByteArrayOutputStream(); + cidSetRemoved.save(baos); + baos.close(); + } finally { + cidSetRemoved.close(); + } + } + + in = new ByteArrayInputStream(baos.toByteArray()); logger.debug("stream returning started, size= " + in.available()); -- cgit v1.2.3