diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2016-12-12 07:50:25 +0100 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2016-12-12 07:50:25 +0100 |
commit | 65eb7054679d63a4f519bd31eb37805666e6fef8 (patch) | |
tree | 132ec9504a268e44e801e6bd1c26fcc49bd57e7d /pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java | |
parent | 57ffbe830705003caa2af2e12f7e38c38d3a2ff8 (diff) | |
download | pdf-as-4-65eb7054679d63a4f519bd31eb37805666e6fef8.tar.gz pdf-as-4-65eb7054679d63a4f519bd31eb37805666e6fef8.tar.bz2 pdf-as-4-65eb7054679d63a4f519bd31eb37805666e6fef8.zip |
added PDF/A-3b support, and PDF/A version detection
Diffstat (limited to 'pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java')
-rw-r--r-- | pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java index a33a46e7..d283c3e3 100644 --- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java +++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java @@ -30,22 +30,15 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.security.MessageDigest; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; import org.apache.commons.codec.binary.Hex; import org.apache.commons.io.IOUtils; import org.apache.pdfbox.cos.COSArray; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.pdfparser.PDFParser; -import org.apache.pdfbox.pdfparser.PDFStreamParser; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDPageContentStream; -import org.apache.pdfbox.pdmodel.PDResources; +import org.apache.pdfbox.pdmodel.*; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.common.PDStream; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; @@ -59,6 +52,7 @@ import org.apache.pdfbox.pdmodel.interactive.digitalsignature.visible.PDVisibleS 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.apache.pdfbox.pdmodel.font.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,15 +70,18 @@ public class PDFAsVisualSignatureBuilder extends PDVisibleSigBuilder implements private PDFAsVisualSignatureProperties properties; private PDFAsVisualSignatureDesigner designer; private ISettings settings; + public SignatureProfileSettings signatureProfileSettings; private PDResources innerFormResources; private Map<String, ImageObject> images = new HashMap<String, ImageObject>(); public PDFAsVisualSignatureBuilder( PDFAsVisualSignatureProperties properties, ISettings settings, - PDFAsVisualSignatureDesigner designer) { + PDFAsVisualSignatureDesigner designer, + SignatureProfileSettings signatureProfileSettings) { this.properties = properties; this.settings = settings; this.designer = designer; + this.signatureProfileSettings = signatureProfileSettings; } @Override @@ -657,4 +654,33 @@ public class PDFAsVisualSignatureBuilder extends PDVisibleSigBuilder implements this.getStructure().getTemplate().close(); } + public void removeCidSet(PDDocument document) throws IOException { + + PDDocumentCatalog catalog = document.getDocumentCatalog(); + + COSName cidSet = COSName.getPDFName("CIDSet"); + + Iterator<PDPage> pdPageIterator = catalog.getPages().iterator(); + while(pdPageIterator.hasNext()) { + + PDPage page = pdPageIterator.next(); + + Iterator<COSName> cosNameIterator = page.getResources().getFontNames().iterator(); + while (cosNameIterator.hasNext()) { + COSName fontName = cosNameIterator.next(); + PDFont pdFont = page.getResources().getFont(fontName); + + if (pdFont instanceof PDType0Font) { + PDType0Font typedFont = (PDType0Font) pdFont; + + if (typedFont.getDescendantFont() != null) { + if (typedFont.getDescendantFont().getFontDescriptor() != null) { + typedFont.getDescendantFont().getFontDescriptor().getCOSObject().removeItem(cidSet); + } + } + } + } + } + } + } |