From 8b6eeda673ab545dadf6ffedde1654f6a0604428 Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Thu, 15 May 2014 10:11:39 +0200 Subject: TTF Fonts width fix, null value in signature block fix, Signature reason from config --- .../lib/impl/signing/pdfbox/PADESPDFBOXSigner.java | 34 ++++++++++++++++++++-- .../lib/impl/stamping/pdfbox/PDFBoxTable.java | 5 ++-- 2 files changed, 35 insertions(+), 4 deletions(-) (limited to 'pdf-as-lib/src/main/java/at/gv') diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java index 44919b1c..8694017f 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java @@ -128,7 +128,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { if (signerReason == null) { signerReason = "PAdES Signature"; } - + signature.setReason(signerReason); logger.debug("Signing reason: " + signerReason); @@ -139,7 +139,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { signer.setPDSignature(signature); SignatureOptions options = new SignatureOptions(); - + // Is visible Signature if (requestedSignature.isVisual()) { logger.info("Creating visual siganture block"); @@ -321,6 +321,36 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants { doc.addSignature(signature, signer, options); + String sigFieldName = signatureProfileSettings.getSignFieldValue(); + + if(sigFieldName != null) { + PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm(); + if (acroForm != null) { + @SuppressWarnings("unchecked") + List fields = acroForm.getFields(); + PDSignatureField signatureField = null; + + if (fields != null) { + for (PDField pdField : fields) { + if (pdField instanceof PDSignatureField) { + if (((PDSignatureField) pdField).getSignature().getDictionary() + .equals(signature.getDictionary())) { + signatureField = (PDSignatureField) pdField; + } + } + } + } else { + logger.warn("Failed to name Signature Field! [Cannot find Field list in acroForm!]"); + } + + if(signatureField != null) { + signatureField.setPartialName(sigFieldName); + } + } else { + logger.warn("Failed to name Signature Field! [Cannot find acroForm!]"); + } + } + if (requestedSignature.isVisual()) { // if(requestedSignature.getSignaturePosition().) diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxTable.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxTable.java index 1d8928aa..c6d515f9 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxTable.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxTable.java @@ -374,9 +374,10 @@ public class PDFBoxTable { float fwidth; if (c instanceof PDType1Font) { fwidth = c.getFontDescriptor().getFontBoundingBox().getWidth() - / 1000 * fontSize; + / 1000.0f * fontSize; } else { - fwidth = c.getFontDescriptor().getMaxWidth(); + fwidth = c.getStringWidth("abcdefghijklmnopqrstuvwxyz ") / 1000.0f * fontSize; + fwidth = fwidth / (float)"abcdefghijklmnopqrstuvwxyz".length(); } logger.debug("Font Width: {}", fwidth); -- cgit v1.2.3