diff options
Diffstat (limited to 'pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing')
-rw-r--r-- | pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java index c37002c4..c99bb608 100644 --- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java +++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java @@ -132,6 +132,9 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { try { doc = pdfObject.getDocument(); + //if signature already exists dont create new page + List<PDSignatureField> pdSignatureFieldList = doc.getSignatureFields(); + SignaturePlaceholderData signaturePlaceholderData = PlaceholderFilter .checkPlaceholderSignature(pdfObject.getStatus(), pdfObject.getStatus().getSettings()); @@ -172,14 +175,12 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { String sigFieldName = pdfObject.getStatus().getSettings().getValue(SIGNATURE_FIELD_NAME); signature = findExistingSignature(doc, sigFieldName); //signature = findExistingSignature(doc, "ownerSignature"); - if (signature == null) - { + if (signature == null) { // create signature dictionary signature = new PDSignature(); } - else - { + else { isAdobeSigForm = true; } @@ -304,8 +305,9 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { logger.debug("Positioning: {}", positioningInstruction.toString()); - if(!isAdobeSigForm){ + if(!isAdobeSigForm) { if (positioningInstruction.isMakeNewPage()) { + int last = doc.getNumberOfPages() - 1; PDDocumentCatalog root = doc.getDocumentCatalog(); PDPage lastPage = root.getPages().get(last); @@ -318,12 +320,13 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { // handle rotated page int targetPageNumber = positioningInstruction.getPage(); + logger.debug("Target Page: " + targetPageNumber); PDPage targetPage = doc.getPages().get(targetPageNumber - 1); int rot = targetPage.getRotation(); logger.debug("Page rotation: " + rot); // positioningInstruction.setRotation(positioningInstruction.getRotation() - // + rot); + // // + rot); logger.debug("resulting Sign rotation: " + positioningInstruction.getRotation()); SignaturePositionImpl position = new SignaturePositionImpl(); @@ -349,14 +352,10 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { */ if (signaturePlaceholderData != null) { - // Placeholder found! - // replace placeholder - InputStream fis = PADESPDFBOXSigner.class.getResourceAsStream("/placeholder/empty.jpg"); PDImageXObject img = JPEGFactory.createFromStream(doc, fis); - img.getCOSObject().setNeedToBeUpdated(true); // PDDocumentCatalog root = doc.getDocumentCatalog(); // PDPageNode rootPages = root.getPages(); @@ -414,12 +413,11 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { doc.addSignature(signature, signer, options); - //String sigFieldName = "ownerSignature"; - if (sigFieldName == null) { sigFieldName = "PDF-AS Signatur"; } + int count = PdfBoxUtils.countSignatures(doc, sigFieldName); sigFieldName = sigFieldName + count; @@ -434,7 +432,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { // pdstRoot); //this is not used for Adobe signature fields - if(!isAdobeSigForm){ + if(!isAdobeSigForm) { PDSignatureField signatureField = null; if (acroFormm != null) { @SuppressWarnings("unchecked") @@ -474,7 +472,6 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { } } - PDSignatureField signatureField = null; PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm(); if (acroForm != null) { @@ -646,7 +643,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { } catch (IOException e) { logger.warn(MessageResolver.resolveMessage("error.pdf.sig.01"), e); throw new PdfAsException("error.pdf.sig.01", e); - } finally { + } finally { if (doc != null) { try { doc.close(); @@ -708,7 +705,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { throw new PdfAsException("Failed validating PDF Document RuntimeException."); } finally { if (document != null) { - IOUtils.closeQuietly((Closeable) document); + IOUtils.closeQuietly(document); } } } @@ -752,11 +749,10 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { public Image generateVisibleSignaturePreview(SignParameter parameter, java.security.cert.X509Certificate cert, int resolution, OperationStatus status, RequestedSignature requestedSignature) throws PDFASError { try { - PDFBOXObject pdfObject = (PDFBOXObject) status.getPdfObject(); + PDFBOXObject pdfObject = (PDFBOXObject) status.getPdfObject(); PDDocument origDoc = new PDDocument(); - origDoc.addPage(new PDPage(PDRectangle.A4)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); origDoc.save(baos); @@ -779,7 +775,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { .getSignatureProfileConfiguration(requestedSignature.getSignatureProfileID()); String signaturePosString = signatureProfileConfiguration.getDefaultPositioning(); - PositioningInstruction positioningInstruction = null; + PositioningInstruction positioningInstruction; if (signaturePosString != null) { positioningInstruction = Positioning.determineTablePositioning(new TablePos(signaturePosString), "", origDoc, visualObject, pdfObject.getStatus().getSettings()); @@ -886,9 +882,6 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { if (signature == null) { signature = new PDSignature(); - // after solving PDFBOX-3524 - // signatureField.setValue(signature) - // until then: signatureField.getCOSObject().setItem(COSName.V, signature); } else |