aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-pdfbox-2/src/main/java/at/gv
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-pdfbox-2/src/main/java/at/gv')
-rw-r--r--pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/pdfbox2/placeholder/SignaturePlaceholderExtractor.java28
1 files changed, 27 insertions, 1 deletions
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 011eac89..8716603b 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
@@ -65,7 +65,9 @@ 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.cos.COSObject;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
@@ -243,7 +245,7 @@ public class SignaturePlaceholderExtractor extends PDFStreamEngine implements Pl
try {
data.setTablePos(new TablePos(posString));
- data.setPlaceholderName(objectName.getName());
+ data.setPlaceholderName(buildUniqueObjectName(objectName));
log.debug("Found Placeholder at: {}", data.toString());
placeholders.add(data);
@@ -291,7 +293,31 @@ public class SignaturePlaceholderExtractor extends PDFStreamEngine implements Pl
}
+ /**
+ * Builds unique placeholderId from PDF element.
+ *
+ * @param name PDF element name
+ * @return unique identifier
+ */
+ private String buildUniqueObjectName(COSName name)
+ {
+ COSDictionary dict = getResources().getCOSObject().getCOSDictionary(COSName.XOBJECT);
+ if (dict == null)
+ {
+ return name.getName();
+
+ }
+
+ COSBase base = dict.getItem(name);
+ if (base instanceof COSObject)
+ {
+ return name.getName() + "_" + String.valueOf(((COSObject) base).getObjectNumber());
+
+ }
+ return name.getName();
+
+ }
private SignaturePlaceholderData matchPlaceholderPage(
List<SignaturePlaceholderData> placeholders, String placeholderId, int matchMode) {