diff options
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); + } + } + } + } + } + } + } |