aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pdf-as-lib/src/main/resources/placeholder/pdfbox-reader-2.properties23
-rw-r--r--pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/pdfbox2/placeholder/SignaturePlaceholderExtractor.java31
-rw-r--r--pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java5
3 files changed, 51 insertions, 8 deletions
diff --git a/pdf-as-lib/src/main/resources/placeholder/pdfbox-reader-2.properties b/pdf-as-lib/src/main/resources/placeholder/pdfbox-reader-2.properties
new file mode 100644
index 00000000..759fb51c
--- /dev/null
+++ b/pdf-as-lib/src/main/resources/placeholder/pdfbox-reader-2.properties
@@ -0,0 +1,23 @@
+cm = org.apache.pdfbox.contentstream.operator.state.Concatenate
+gs = org.apache.pdfbox.contentstream.operator.state.SetGraphicsStateParameters
+q = org.apache.pdfbox.contentstream.operator.state.Save
+Q = org.apache.pdfbox.contentstream.operator.state.Restore
+Tm = org.apache.pdfbox.contentstream.operator.state.SetMatrix
+w = org.apache.pdfbox.contentstream.operator.state.SetLineWidth
+BT = org.apache.pdfbox.contentstream.operator.text.BeginText
+ET = org.apache.pdfbox.contentstream.operator.text.EndText
+T* = org.apache.pdfbox.contentstream.operator.text.NextLine
+Tc = org.apache.pdfbox.contentstream.operator.text.SetCharSpacing
+Td = org.apache.pdfbox.contentstream.operator.text.MoveText
+TD = org.apache.pdfbox.contentstream.operator.text.MoveTextSetLeading
+Tf = org.apache.pdfbox.contentstream.operator.text.SetFontAndSize
+Tj = org.apache.pdfbox.contentstream.operator.text.ShowText
+TJ = org.apache.pdfbox.contentstream.operator.text.ShowTextAdjusted
+TL = org.apache.pdfbox.contentstream.operator.text.SetTextLeading
+Tr = org.apache.pdfbox.contentstream.operator.text.SetTextRenderingMode
+Ts = org.apache.pdfbox.contentstream.operator.text.SetTextRise
+Tw = org.apache.pdfbox.contentstream.operator.text.SetWordSpacing
+Tz = org.apache.pdfbox.contentstream.operator.text.SetTextHorizontalScaling
+\' = org.apache.pdfbox.contentstream.operator.text.ShowTextLine
+\" = org.apache.pdfbox.contentstream.operator.text.ShowTextLineAndSpace
+#Do = org.apache.pdfbox.contentstream.operator.graphics.DrawObject \ No newline at end of file
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/pdfbox2/placeholder/SignaturePlaceholderExtractor.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/pdfbox2/placeholder/SignaturePlaceholderExtractor.java
index 39d66c3c..c239ed94 100644
--- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/pdfbox2/placeholder/SignaturePlaceholderExtractor.java
+++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/pdfbox2/placeholder/SignaturePlaceholderExtractor.java
@@ -52,20 +52,23 @@ import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.HashMap;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
import java.util.Vector;
-import org.apache.pdfbox.contentstream.PDContentStream;
+import javassist.bytecode.stackmap.TypeData.ClassName;
+
import org.apache.pdfbox.contentstream.PDFStreamEngine;
import org.apache.pdfbox.contentstream.operator.Operator;
+import org.apache.pdfbox.contentstream.operator.OperatorProcessor;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDFontFactory;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
@@ -109,12 +112,26 @@ public class SignaturePlaceholderExtractor extends PDFStreamEngine implements Pl
private List<SignaturePlaceholderData> placeholders = new Vector<SignaturePlaceholderData>();
private int currentPage = 0;
private PDDocument doc;
+
+
private SignaturePlaceholderExtractor(String placeholderId,
- int placeholderMatchMode, PDDocument doc) throws IOException {
+ int placeholderMatchMode, PDDocument doc) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
super();
- //super(ResourceLoader.loadProperties( //TODO: pdfbox2 - properties need to be set
- // "placeholder/pdfbox-reader.properties", true));
+
+ final Properties properties = new Properties();
+ properties.load(ClassName.class.getClassLoader().getResourceAsStream("placeholder/pdfbox-reader-2.properties"));
+
+ Set<Entry<Object, Object>> entries = properties.entrySet();
+ for(Entry<Object, Object> entry:entries){
+ String processorClassName = (String)entry.getValue();
+ Class<?> klass = Class.forName( processorClassName );
+ org.apache.pdfbox.contentstream.operator.OperatorProcessor processor =
+ (OperatorProcessor) klass.newInstance();
+
+ addOperator( processor );
+ }
+
this.doc = doc;
}
@@ -139,7 +156,7 @@ public class SignaturePlaceholderExtractor extends PDFStreamEngine implements Pl
try {
extractor = new SignaturePlaceholderExtractor(placeholderId,
matchMode, doc);
- } catch (IOException e2) {
+ } catch (IOException | ClassNotFoundException | InstantiationException | IllegalAccessException e2) {
throw new PDFIOException("error.pdf.io.04", e2);
}
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java
index 58ebb7f5..8a0a5e72 100644
--- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java
+++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox2/PADESPDFBOXSigner.java
@@ -35,6 +35,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
@@ -316,7 +317,9 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
// Placeholder found!
// replace placeholder
- PDImageXObject img = PDImageXObject.createFromFile("/placeholder/empty.jpg", doc);
+ URL fileUrl = PADESPDFBOXSigner.class.getResource("/placeholder/empty.jpg");
+
+ PDImageXObject img = PDImageXObject.createFromFile(fileUrl.getPath(), doc);
img.getCOSObject().setNeedToBeUpdated(true);
// PDDocumentCatalog root = doc.getDocumentCatalog();