Skip to content

Commit dab9e94

Browse files
committed
Merge pull request #15 from jpotts/master
Add a "new revision" parameter to digital signature action
2 parents afe8bce + 2d18df4 commit dab9e94

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/constants/PDFToolkitConstants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public abstract class PDFToolkitConstants
4343
public static final String PARAM_KEY_TYPE = "key-type";
4444
public static final String PARAM_ALIAS = "alias";
4545
public static final String PARAM_STORE_PASSWORD = "store-password";
46-
46+
public static final String PARAM_NEW_REVISION = "new-revision";
47+
4748
public static final String PARAM_SPLIT_FREQUENCY = "split-frequency";
4849

4950
public static final String PARAM_WATERMARK_IMAGE = "watermark-image";

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFSignatureActionExecuter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ protected void addParameterDefinitions(List<ParameterDefinition> paramList)
8686
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_ALIAS, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PDFToolkitConstants.PARAM_ALIAS)));
8787
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_STORE_PASSWORD, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PDFToolkitConstants.PARAM_STORE_PASSWORD)));
8888
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_DESTINATION_NAME, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_DESTINATION_NAME)));
89+
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_NEW_REVISION, DataTypeDefinition.BOOLEAN, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_NEW_REVISION), false));
8990

9091
super.addParameterDefinitions(paramList);
9192

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/service/PDFToolkitServiceImpl.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,14 @@ public NodeRef signPDF(NodeRef targetNodeRef, Map<String, Serializable> params)
411411
int height = getInteger(params.get(PARAM_HEIGHT));
412412
int width = getInteger(params.get(PARAM_WIDTH));
413413
int pageNumber = getInteger(params.get(PARAM_PAGE));
414-
414+
415+
// By default, append the signature as a new PDF revision to avoid
416+
// invalidating any signatures that might already exist on the doc
417+
boolean appendToExisting = true;
418+
if (params.get(PARAM_NEW_REVISION) != null) {
419+
appendToExisting = Boolean.valueOf(String.valueOf(params.get(PARAM_NEW_REVISION)));
420+
}
421+
415422
// New keystore parameters
416423
String alias = (String)params.get(PARAM_ALIAS);
417424
String storePassword = (String)params.get(PARAM_STORE_PASSWORD);
@@ -464,7 +471,15 @@ else if (keyType.equalsIgnoreCase(KEY_TYPE_PKCS12))
464471
File file = new File(tempDir, ffs.getFileInfo(targetNodeRef).getName());
465472

466473
FileOutputStream fout = new FileOutputStream(file);
467-
PdfStamper stamp = PdfStamper.createSignature(reader, fout, '\0');
474+
475+
// When adding a second signature, append must be called on PdfStamper.createSignature
476+
// to avoid invalidating previous signatures
477+
PdfStamper stamp = null;
478+
if (appendToExisting) {
479+
stamp = PdfStamper.createSignature(reader, fout, '\0', tempDir, true);
480+
} else {
481+
stamp = PdfStamper.createSignature(reader, fout, '\0');
482+
}
468483
PdfSignatureAppearance sap = stamp.getSignatureAppearance();
469484
sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
470485

0 commit comments

Comments
 (0)