aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureBuilder.java
diff options
context:
space:
mode:
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.java48
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);
+ }
+ }
+ }
+ }
+ }
+ }
+
}