Class PdfBoxSignatureService

java.lang.Object
eu.europa.esig.dss.pdf.AbstractPDFSignatureService
eu.europa.esig.dss.pdf.pdfbox.PdfBoxSignatureService
All Implemented Interfaces:
PDFSignatureService

public class PdfBoxSignatureService extends AbstractPDFSignatureService
Implementation of PDFSignatureService using PDFBox
  • 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 layer
      signatureDrawerFactory - drawer factory implementation to be used
  • Method Details

    • setSecureRandomProvider

      public void setSecureRandomProvider(SecureRandomProvider secureRandomProvider)
      Set the SecureRandomProvider. 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 the toSignDocument respectively to the given parameters
      Specified by:
      computeDigest in class AbstractPDFSignatureService
      Parameters:
      toSignDocument - DSSDocument to be signed
      parameters - 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 original toSignDocument, incorporating a new revision, enveloping the provided cmsSignedData
      Specified by:
      signDocument in class AbstractPDFSignatureService
      Parameters:
      toSignDocument - DSSDocument to be signed
      cmsSignedData - byte array representing the encoded CMS signed data's binaries
      parameters - 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 to outputStream
      Parameters:
      pdDocument - PDDocument to check and save
      outputStream - OutputStream to save the content to
      parameters - PAdESCommonParameters
    • saveDocumentIncrementally

      public void saveDocumentIncrementally(org.apache.pdfbox.pdmodel.PDDocument pdDocument, OutputStream outputStream)
      Saves the document incrementally
      Parameters:
      pdDocument - PDDocument to save
      outputStream - 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 extended
      validationDataForInclusion - 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

      public List<String> getAvailableSignatureFields(DSSDocument document, char[] pwd)
      Description copied from interface: PDFSignatureService
      Returns not-signed signature fields from an encrypted document
      Parameters:
      document - the pdf document
      pwd - 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 document
      parameters - the parameters with the coordinates,... of the signature field
      pwd - 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 signed
      parameters - 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 signed
      parameters - 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
      Loads PdfDocumentReader instance
      Specified by:
      loadPdfDocumentReader in class AbstractPDFSignatureService
      Parameters:
      dssDocument - DSSDocument to read
      passwordProtection - the password used to protect the document
      Returns:
      PdfDocumentReader
      Throws:
      IOException - in case of loading error
      InvalidPasswordException - if the password is not provided or invalid for a protected document