summaryrefslogtreecommitdiff
path: root/pdf-over-signer/pdf-over-sigpdfas4
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-over-signer/pdf-over-sigpdfas4')
-rw-r--r--pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java
index abab10bf..c7dba85f 100644
--- a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java
+++ b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4Signer.java
@@ -61,7 +61,10 @@ public class PdfAs4Signer implements Signer {
String sigProfile = sign_para.getPdfAsSignatureProfileId();
String sigEmblem = (sign_para.getEmblem() == null ? null : sign_para.getEmblem().getFileName());
String sigNote = sign_para.getProperty("SIG_NOTE");
-
+ String sigPos = null;
+ if (sign_para.getSignaturePosition() != null) {
+ sigPos = sign_para.getPdfAsSignaturePosition();
+ }
PdfAs pdfas = PdfAs4Helper.getPdfAs();
Configuration config = pdfas.getConfiguration();
if (sigEmblem != null && !sigEmblem.trim().isEmpty()) {
@@ -76,6 +79,9 @@ public class PdfAs4Signer implements Signer {
ByteArrayOutputStream output = new ByteArrayOutputStream();
DataSource input = new ByteArrayDataSource(parameter.getInputDocument().getByteArray());
SignParameter param = PdfAsFactory.createSignParameter(config, input, output);
+ if (sigPos != null) {
+ param.setSignaturePosition(sigPos);
+ }
param.setSignatureProfileId(sigProfile);
String id = UUID.randomUUID().toString();
param.setTransactionId(id);
@@ -128,10 +134,24 @@ public class PdfAs4Signer implements Signer {
pdfas.sign(param);
SignResultImpl result = new SignResultImpl();
+
+ if (param.getSignaturePosition() != null) {
+ TablePos tp = new TablePos(param.getSignaturePosition());
+ SignaturePosition sp;
+ if (tp.isXauto() && tp.isYauto())
+ sp = new SignaturePosition();
+ else if (tp.isPauto())
+ sp = new SignaturePosition(tp.getPosX(), tp.getPosY());
+ else
+ sp = new SignaturePosition(tp.getPosX(), tp.getPosY(), tp.getPage());
+ result.setSignaturePosition(sp);
+ }
+
result.setSignedDocument(new ByteArrayDocumentSource(sstate.getOutput().toByteArray()));
return result;
- }
- catch (PDFASError e) {
+ } catch (PdfAsException e) {
+ throw new SignatureException(e);
+ } catch (PDFASError e) {
throw new SignatureException(e);
}
}