diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-05-15 10:11:39 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-05-15 10:11:39 +0200 |
commit | 8b6eeda673ab545dadf6ffedde1654f6a0604428 (patch) | |
tree | f29fe23d753259bd83e48af32f9852720064c401 /pdf-as-lib | |
parent | 68e996fe190e6ba9e7aa46cf81bae8e762f53256 (diff) | |
download | pdf-as-4-8b6eeda673ab545dadf6ffedde1654f6a0604428.tar.gz pdf-as-4-8b6eeda673ab545dadf6ffedde1654f6a0604428.tar.bz2 pdf-as-4-8b6eeda673ab545dadf6ffedde1654f6a0604428.zip |
TTF Fonts width fix, null value in signature block fix, Signature reason from config
Diffstat (limited to 'pdf-as-lib')
-rw-r--r-- | pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java | 34 | ||||
-rw-r--r-- | pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxTable.java | 5 |
2 files changed, 35 insertions, 4 deletions
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<PDField> 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); |