Package eu.europa.esig.dss.pdf.pdfbox
Class PdfBoxSignatureService
java.lang.Object
eu.europa.esig.dss.pdf.AbstractPDFSignatureService
eu.europa.esig.dss.pdf.pdfbox.PdfBoxSignatureService
- All Implemented Interfaces:
PDFSignatureService
Implementation of PDFSignatureService using PDFBox
-
Field Summary
Fields inherited from class eu.europa.esig.dss.pdf.AbstractPDFSignatureService
pdfDifferencesFinder, pdfObjectModificationsFinder, pdfPermissionsChecker, pdfSignatureFieldPositionChecker, resourcesHandlerBuilder
-
Constructor Summary
ConstructorDescriptionPdfBoxSignatureService
(PDFServiceMode serviceMode, PdfBoxSignatureDrawerFactory signatureDrawerFactory) Constructor for the PdfBoxSignatureService -
Method Summary
Modifier and TypeMethodDescriptionaddDssDictionary
(DSSDocument document, PdfValidationDataContainer validationDataForInclusion, char[] pwd, boolean includeVRIDict) This method adds the DSS dictionary (Baseline-LT) to a password-protected document with a VRI dictionary if defined.addNewSignatureField
(DSSDocument document, SignatureFieldParameters parameters, char[] pwd) This method allows to add a new signature field to an existing encrypted pdf documentvoid
checkEncryptedAndSaveIncrementally
(org.apache.pdfbox.pdmodel.PDDocument pdDocument, OutputStream outputStream, PAdESCommonParameters parameters) Checks if the document is encrypted and saves incrementally tooutputStream
protected DSSMessageDigest
computeDigest
(DSSDocument toSignDocument, PAdESCommonParameters parameters) Computes digest on to be signed data computed on thetoSignDocument
respectively to the givenparameters
protected org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature
createSignatureDictionary
(org.apache.pdfbox.pdmodel.PDDocument pdDocument, PAdESCommonParameters parameters) Creates a new signature dictionary Note for developers: keep protected! See PR #138getAvailableSignatureFields
(DSSDocument document, char[] pwd) Returns not-signed signature fields from an encrypted documentprotected PdfDocumentReader
loadPdfDocumentReader
(DSSDocument dssDocument, char[] passwordProtection) LoadsPdfDocumentReader
instancepreviewPageWithVisualSignature
(DSSDocument toSignDocument, PAdESCommonParameters parameters) Returns a page preview with the visual signaturepreviewSignatureField
(DSSDocument toSignDocument, PAdESCommonParameters parameters) Returns a preview of the signature fieldvoid
saveDocumentIncrementally
(org.apache.pdfbox.pdmodel.PDDocument pdDocument, OutputStream outputStream) Saves the document incrementallyprotected void
setMDPPermission
(org.apache.pdfbox.pdmodel.PDDocument doc, org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature signature, int accessPermissions) Set the access permissions granted for this document in the DocMDP transform parameters dictionary.void
setSecureRandomProvider
(SecureRandomProvider secureRandomProvider) Set theSecureRandomProvider
.protected DSSDocument
signDocument
(DSSDocument toSignDocument, byte[] cmsSignedData, PAdESCommonParameters parameters) This method creates a signed document from the originaltoSignDocument
, incorporating a new revision, enveloping the providedcmsSignedData
Methods inherited from class eu.europa.esig.dss.pdf.AbstractPDFSignatureService
addDssDictionary, addDssDictionary, addDssDictionary, addNewSignatureField, addNewSignatureField, analyzePdfModifications, analyzePdfModifications, analyzePdfModifications, analyzeTimestampPdfModifications, assertSignatureFieldPositionValid, buildSignatureFieldBox, checkPdfPermissions, digest, getAvailableSignatureFields, getAvailableSignatureFields, getRevisions, getRevisions, getType, getVisibleSignatureFieldBoxPosition, getVisibleSignatureFieldBoxPosition, getVisualDifferences, instantiateResourcesHandler, isDocTimestamp, isDocumentTimestampLayer, isSignature, loadSignatureDrawer, messageDigest, setAlertOnForbiddenSignatureCreation, setAlertOnSignatureFieldOutsidePageDimensions, setAlertOnSignatureFieldOverlap, setPdfDifferencesFinder, setPdfObjectModificationsFinder, setPdfPermissionsChecker, setPdfSignatureFieldPositionChecker, setResourcesHandlerBuilder, sign, toPdfPageCoordinates, validateByteRange
-
Constructor Details
-
PdfBoxSignatureService
public PdfBoxSignatureService(PDFServiceMode serviceMode, PdfBoxSignatureDrawerFactory signatureDrawerFactory) Constructor for the PdfBoxSignatureService- Parameters:
serviceMode
- current instance is used to generate DocumentTimestamp or Signature signature layersignatureDrawerFactory
- drawer factory implementation to be used
-
-
Method Details
-
setSecureRandomProvider
Set theSecureRandomProvider
. Allows modifying a custom behavior for signing of encrypted documents.- Parameters:
secureRandomProvider
-SecureRandomProvider
-
computeDigest
protected DSSMessageDigest computeDigest(DSSDocument toSignDocument, PAdESCommonParameters parameters) Description copied from class:AbstractPDFSignatureService
Computes digest on to be signed data computed on thetoSignDocument
respectively to the givenparameters
- Specified by:
computeDigest
in classAbstractPDFSignatureService
- Parameters:
toSignDocument
-DSSDocument
to be signedparameters
-PAdESCommonParameters
- Returns:
DSSMessageDigest
-
signDocument
protected DSSDocument signDocument(DSSDocument toSignDocument, byte[] cmsSignedData, PAdESCommonParameters parameters) Description copied from class:AbstractPDFSignatureService
This method creates a signed document from the originaltoSignDocument
, incorporating a new revision, enveloping the providedcmsSignedData
- Specified by:
signDocument
in classAbstractPDFSignatureService
- Parameters:
toSignDocument
-DSSDocument
to be signedcmsSignedData
- byte array representing the encoded CMS signed data's binariesparameters
-PAdESCommonParameters
- Returns:
DSSDocument
-
createSignatureDictionary
protected org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature createSignatureDictionary(org.apache.pdfbox.pdmodel.PDDocument pdDocument, PAdESCommonParameters parameters) Creates a new signature dictionary Note for developers: keep protected! See PR #138- Parameters:
pdDocument
-PDDocument
parameters
-PAdESCommonParameters
- Returns:
PDSignature
-
setMDPPermission
protected void setMDPPermission(org.apache.pdfbox.pdmodel.PDDocument doc, org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature signature, int accessPermissions) Set the access permissions granted for this document in the DocMDP transform parameters dictionary. Details are described in the table "Entries in the DocMDP transform parameters dictionary" in the PDF specification.- Parameters:
doc
- The document.signature
- The signature object.accessPermissions
- The permission value (1, 2 or 3).
-
checkEncryptedAndSaveIncrementally
public void checkEncryptedAndSaveIncrementally(org.apache.pdfbox.pdmodel.PDDocument pdDocument, OutputStream outputStream, PAdESCommonParameters parameters) Checks if the document is encrypted and saves incrementally tooutputStream
- Parameters:
pdDocument
-PDDocument
to check and saveoutputStream
-OutputStream
to save the content toparameters
-PAdESCommonParameters
-
saveDocumentIncrementally
public void saveDocumentIncrementally(org.apache.pdfbox.pdmodel.PDDocument pdDocument, OutputStream outputStream) Saves the document incrementally- Parameters:
pdDocument
-PDDocument
to saveoutputStream
-OutputStream
to save incremental update to
-
addDssDictionary
public DSSDocument addDssDictionary(DSSDocument document, PdfValidationDataContainer validationDataForInclusion, char[] pwd, boolean includeVRIDict) Description copied from interface:PDFSignatureService
This method adds the DSS dictionary (Baseline-LT) to a password-protected document with a VRI dictionary if defined.- Parameters:
document
- the document to be extendedvalidationDataForInclusion
-PdfValidationDataContainer
pwd
- the password protection used to create the encrypted document (optional)includeVRIDict
- defines whether VRI dictionary should be included to the created DSS dictionary- Returns:
- the pdf document with the added dss dictionary
-
getAvailableSignatureFields
Description copied from interface:PDFSignatureService
Returns not-signed signature fields from an encrypted document- Parameters:
document
- the pdf documentpwd
- the password protection phrase used to encrypt the document- Returns:
- the list of not signed signature field names
-
addNewSignatureField
public DSSDocument addNewSignatureField(DSSDocument document, SignatureFieldParameters parameters, char[] pwd) Description copied from interface:PDFSignatureService
This method allows to add a new signature field to an existing encrypted pdf document- Parameters:
document
- the pdf documentparameters
- the parameters with the coordinates,... of the signature fieldpwd
- the password protection used to create the encrypted document (optional)- Returns:
- the pdf document with the new added signature field
-
previewPageWithVisualSignature
public DSSDocument previewPageWithVisualSignature(DSSDocument toSignDocument, PAdESCommonParameters parameters) Description copied from interface:PDFSignatureService
Returns a page preview with the visual signature- Parameters:
toSignDocument
- the document to be signedparameters
- the signature/timestamp parameters- Returns:
- a DSSDocument with the PNG picture
-
previewSignatureField
public DSSDocument previewSignatureField(DSSDocument toSignDocument, PAdESCommonParameters parameters) Description copied from interface:PDFSignatureService
Returns a preview of the signature field- Parameters:
toSignDocument
- the document to be signedparameters
- the signature/timestamp parameters- Returns:
- a DSSDocument with the PNG picture
-
loadPdfDocumentReader
protected PdfDocumentReader loadPdfDocumentReader(DSSDocument dssDocument, char[] passwordProtection) throws IOException, InvalidPasswordException Description copied from class:AbstractPDFSignatureService
LoadsPdfDocumentReader
instance- Specified by:
loadPdfDocumentReader
in classAbstractPDFSignatureService
- Parameters:
dssDocument
-DSSDocument
to readpasswordProtection
- the password used to protect the document- Returns:
PdfDocumentReader
- Throws:
IOException
- in case of loading errorInvalidPasswordException
- if the password is not provided or invalid for a protected document
-