aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java')
-rw-r--r--pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java46
1 files changed, 30 insertions, 16 deletions
diff --git a/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java b/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
index 9d50a348..f050a977 100644
--- a/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
+++ b/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
@@ -257,6 +257,34 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
.determineTablePositioning(tablePos, "", doc,
visualObject, legacy32Position);
+ if (positioningInstruction.isMakeNewPage()) {
+ int last = doc.getNumberOfPages() - 1;
+ PDDocumentCatalog root = doc.getDocumentCatalog();
+ PDPageNode rootPages = root.getPages();
+ List<PDPage> kids = new ArrayList<PDPage>();
+ rootPages.getAllKids(kids);
+ PDPage lastPage = kids.get(last);
+ rootPages.getCOSObject().setNeedToBeUpdate(true);
+ PDPage p = new PDPage(lastPage.findMediaBox());
+ p.setResources(new PDResources());
+
+ doc.addPage(p);
+ }
+
+ // handle rotated page
+ PDDocumentCatalog documentCatalog = doc.getDocumentCatalog();
+ PDPageNode documentPages = documentCatalog.getPages();
+ List<PDPage> documentPagesKids = new ArrayList<PDPage>();
+ documentPages.getAllKids(documentPagesKids);
+ int targetPageNumber = positioningInstruction.getPage();
+ logger.debug("Target Page: " + targetPageNumber);
+ //rootPages.getAllKids(kids);
+ PDPage targetPage = documentPagesKids.get(targetPageNumber-1);
+ int rot = targetPage.findRotation();
+ logger.debug("adding Page rotation: " + rot);
+ positioningInstruction.setRotation(positioningInstruction.getRotation() + rot);
+ logger.debug("resulting Sign rotation: " + positioningInstruction.getRotation());
+
SignaturePositionImpl position = new SignaturePositionImpl();
position.setX(positioningInstruction.getX());
position.setY(positioningInstruction.getY());
@@ -278,7 +306,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
* sigbos.write(StreamUtils.inputStreamToByteArray(properties
* .getVisibleSignature())); sigbos.close();
*/
-
+
if (signaturePlaceholderData != null) {
// Placeholder found!
// replace placeholder
@@ -308,20 +336,6 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
+ signaturePlaceholderData.getPlaceholderName());
}
- if (positioningInstruction.isMakeNewPage()) {
- int last = doc.getNumberOfPages() - 1;
- PDDocumentCatalog root = doc.getDocumentCatalog();
- PDPageNode rootPages = root.getPages();
- List<PDPage> kids = new ArrayList<PDPage>();
- rootPages.getAllKids(kids);
- PDPage lastPage = kids.get(last);
- rootPages.getCOSObject().setNeedToBeUpdate(true);
- PDPage p = new PDPage(lastPage.findMediaBox());
- p.setResources(new PDResources());
-
- doc.addPage(p);
- }
-
if (signatureProfileSettings.isPDFA()) {
PDDocumentCatalog root = doc.getDocumentCatalog();
COSBase base = root.getCOSDictionary().getItem(
@@ -363,7 +377,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
// sigBlock.setTitle("Signature Table");
// }
// }
-
+
options.setPage(positioningInstruction.getPage());
options.setVisualSignature(properties.getVisibleSignature());
}