Example usage for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature setLocation

List of usage examples for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature setLocation

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature setLocation.

Prototype

public void setLocation(String location) 

Source Link

Document

Sets the CPU host name or physical location of the signing.

Usage

From source file:CreateSignature.java

License:Apache License

public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException {
    setTsaClient(tsaClient);/* www. java  2 s  . c  o m*/

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    signature.setName("Example User");
    signature.setLocation("Los Angeles, CA");
    signature.setReason("Testing");
    // TODO extract the above details from the signing certificate? Reason as a parameter?

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    // register signature dictionary and sign interface
    document.addSignature(signature, this);

    // write incremental (only for signing purpose)
    document.saveIncremental(output);
}

From source file:CreateVisibleSignature.java

License:Apache License

/**
 * Sign pdf file and create new file that ends with "_signed.pdf".
 *
 * @param inputFile The source pdf document file.
 * @param signedFile The file to be signed.
 * @throws IOException/*from   w w w .  jav  a  2 s .c o m*/
 */
public void signPDF(File inputFile, File signedFile) throws IOException {
    if (inputFile == null || !inputFile.exists()) {
        throw new IOException("Document for signing does not exist");
    }

    // creating output document and prepare the IO streams.
    FileOutputStream fos = new FileOutputStream(signedFile);

    // load document
    PDDocument doc = PDDocument.load(inputFile);

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter
    // subfilter for basic and PAdES Part 2 signatures
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    signature.setName("signer name");
    signature.setLocation("signer location");
    signature.setReason("reason for signature");

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    // register signature dictionary and sign interface
    if (visibleSignatureProperties != null && visibleSignatureProperties.isVisualSignEnabled()) {
        options = new SignatureOptions();
        options.setVisualSignature(visibleSignatureProperties);
        options.setPage(visibleSignatureProperties.getPage() - 1);
        doc.addSignature(signature, this, options);
    } else {
        doc.addSignature(signature, this);
    }

    // write incremental (only for signing purpose)
    doc.saveIncremental(fos);
    doc.close();

    // do not close options before saving, because some COSStream objects within options
    // are transferred to the signed document.
    IOUtils.closeQuietly(options);
}

From source file:com.aaasec.sigserv.csspsupport.pdfbox.CreateSignature.java

License:EUPL

/**
 * Signs the given pdf file./*w  w w  .j  a v  a 2s.c  o  m*/
 */
public File signPDF() throws IOException, COSVisitorException, SignatureException {
    byte[] buffer = new byte[8 * 1024];
    File document = new File(model.getOriginalLoc());
    if (document == null || !document.exists()) {
        throw new RuntimeException("Document for signing does not exist");
    }

    File outputDocument = new File(model.getSignedLoc());
    FileInputStream fis = new FileInputStream(document);
    FileOutputStream fos = new FileOutputStream(outputDocument);

    int c;
    while ((c = fis.read(buffer)) != -1) {
        fos.write(buffer, 0, c);
    }
    fis.close();
    fis = new FileInputStream(outputDocument);

    // load document
    PDDocument doc = PDDocument.load(document);

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter
    // subfilter for basic and PAdES Part 2 signatures
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    if (model.getSignerName() != null) {
        signature.setName(model.getSignerName());
    }
    if (model.getSignerLocation() != null) {
        signature.setLocation(model.getSignerLocation());
    }
    if (model.getReasonForSigning() != null) {
        signature.setReason(model.getReasonForSigning());
    }

    // the signing date, needed for valid signature
    Calendar sigDate = Calendar.getInstance();
    sigDate.setTime(new Date(model.getSigningAndIdTime()));
    signature.setSignDate(sigDate);

    // register signature dictionary and sign interface
    if (model.getOptions() == null) {
        doc.addSignature(signature, this);
    } else {
        doc.addSignature(signature, this, model.getOptions());
    }

    // write incremental (only for signing purpose)
    PdfBoxSigUtil.saveIncremental(doc, fis, fos, model.getSigningAndIdTime());

    return outputDocument;
}

From source file:com.aaasec.sigserv.csspsupport.pdfbox.ReplaceSignature.java

License:EUPL

public File resignPDF() throws IOException, COSVisitorException, SignatureException {
    File document = new File(model.getOriginalLoc());

    byte[] buffer = new byte[8 * 1024];
    if (document == null || !document.exists()) {
        throw new RuntimeException("Document for signing does not exist");
    }//from  w  w w. j a v  a  2 s .c o  m

    // creating output document and prepare the IO streams.
    String name = document.getName();
    String substring = name.substring(0, name.lastIndexOf("."));

    File outputDocument = new File(model.getSignedLoc());
    FileInputStream fis = new FileInputStream(document);
    FileOutputStream fos = new FileOutputStream(outputDocument);

    int c;
    while ((c = fis.read(buffer)) != -1) {
        fos.write(buffer, 0, c);
    }
    fis.close();
    fis = new FileInputStream(outputDocument);

    // load document
    doc = PDDocument.load(document);

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter
    // subfilter for basic and PAdES Part 2 signatures
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    if (model.getSignerName() != null) {
        signature.setName(model.getSignerName());
    }
    if (model.getSignerLocation() != null) {
        signature.setLocation(model.getSignerLocation());
    }
    if (model.getReasonForSigning() != null) {
        signature.setReason(model.getReasonForSigning());
    }

    // the signing date, needed for valid signature
    Calendar sigDate = Calendar.getInstance();
    sigDate.setTime(new Date(model.getSigningAndIdTime()));
    signature.setSignDate(sigDate);

    // register signature dictionary and sign interface
    if (model.getOptions() == null) {
        doc.addSignature(signature, this);
    } else {
        doc.addSignature(signature, this, model.getOptions());
    }

    // write incremental (only for signing purpose)
    PdfBoxSigUtil.saveIncremental(doc, fis, fos, model.getSigningAndIdTime());

    return outputDocument;
}

From source file:com.ackpdfbox.app.CreateSignature.java

License:Apache License

public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException {
    setTsaClient(tsaClient);//from  www. java 2s .c  om

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    signature.setName("Example User");
    signature.setLocation("Los Angeles, CA");
    signature.setReason("Testing");
    // TODO extract the above details from the signing certificate? Reason as a parameter?

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    if (isExternalSigning()) {
        System.out.println("Sign externally...");
        document.addSignature(signature);
        ExternalSigningSupport externalSigning = document.saveIncrementalForExternalSigning(output);
        // invoke external signature service
        byte[] cmsSignature = sign(externalSigning.getContent());
        // set signature bytes received from the service
        externalSigning.setSignature(cmsSignature);
    } else {
        // register signature dictionary and sign interface
        document.addSignature(signature, this);

        // write incremental (only for signing purpose)
        document.saveIncremental(output);
    }
}

From source file:com.formkiq.core.service.generator.pdfbox.PdfEditorServiceImpl.java

License:Apache License

/**
 * Sets value of {@link PDSignatureField}.
 * @param doc {@link PDDocument}//w ww.  j  av  a2  s.c  om
 * @param field {@link PDSignatureField}
 * @param signatureInputStream {@link InputStream}
 * @return {@link SignatureOptions}
 * @throws IOException IOException
 */
private SignatureOptions setValue(final PDDocument doc, final PDSignatureField field,
        final InputStream signatureInputStream) throws IOException {

    int accessPermissions = SigUtils.getMDPPermission(doc);
    if (accessPermissions == 1) {
        throw new IllegalStateException("No changes to the document are "
                + "permitted due to DocMDP transform parameters " + "dictionary");
    }

    // retrieve signature dictionary
    PDSignature signature = field.getSignature();

    if (signature == null) {
        signature = new PDSignature();
        // after solving PDFBOX-3524 - signatureField.setValue(signature)
        // until then:
        field.getCOSObject().setItem(COSName.V, signature);
    } else {
        throw new IllegalStateException(
                "The signature field " + field.getFullyQualifiedName() + " is already signed.");
    }

    // Optional: certify
    // can be done only if version is at least 1.5 and if not already set
    // doing this on a PDF/A-1b file fails validation by Adobe
    // preflight (PDFBOX-3821)
    // PDF/A-1b requires PDF version 1.4 max, so don't increase the version
    // on such files.
    final float version = 1.5f;
    if (doc.getVersion() >= version && accessPermissions == 0) {
        SigUtils.setMDPPermission(doc, signature, 2);
    }

    PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
    if (acroForm != null && acroForm.getNeedAppearances()) {
        // PDFBOX-3738 NeedAppearances true results in visible signature
        // becoming invisible
        // with Adobe Reader
        if (acroForm.getFields().isEmpty()) {
            // we can safely delete it if there are no fields
            acroForm.getCOSObject().removeItem(COSName.NEED_APPEARANCES);
            // note that if you've set MDP permissions, the removal of this
            // item
            // may result in Adobe Reader claiming that the document has
            // been changed.
            // and/or that field content won't be displayed properly.
            // ==> decide what you prefer and adjust your code accordingly.
        }
    }

    // default filter
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);

    // subfilter for basic and PAdES Part 2 signatures
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);

    PDVisibleSignDesigner visibleSignDesigner = new PDVisibleSignDesigner(signatureInputStream);

    PDVisibleSigProperties visibleSigProps = new PDVisibleSigProperties();
    visibleSigProps
            //        .signerName(name)  // TODO add..
            //        .signerLocation(location) // TODO add.
            //        .signatureReason(reason)
            //        .preferredSize(preferredSize)
            //        .page(0) // TODO fix
            .visualSignEnabled(true).setPdVisibleSignature(visibleSignDesigner);

    visibleSigProps.buildSignature();

    signature.setName(visibleSigProps.getSignerName());
    signature.setLocation(visibleSigProps.getSignerLocation());
    signature.setReason(visibleSigProps.getSignatureReason());

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    SignatureOptions sigOptions = new SignatureOptions();
    sigOptions.setVisualSignature(visibleSigProps.getVisibleSignature());
    sigOptions.setPage(visibleSigProps.getPage() - 1);
    doc.addSignature(signature, this, sigOptions);

    return sigOptions;
}

From source file:com.itdhq.poc.ocrsign.CreateSignature.java

License:Apache License

public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient) throws IOException {
    setTsaClient(tsaClient);/*from w w  w . ja va  2 s  . c  o  m*/

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    signature.setName("Example User");
    signature.setLocation("Los Angeles, CA");
    signature.setReason("Testing");
    // TODO extract the above details from the signing certificate? Reason as a parameter?

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    // register signature dictionary and sign interface
    // FIXME
    //document.addSignature(signature, this);

    // write incremental (only for signing purpose)
    // FIXME
    //document.saveIncremental(output);
}

From source file:com.itdhq.poc.ocrsign.CreateVisibleSignature.java

License:Apache License

/**
 * Sign pdf file and create new file that ends with "_signed.pdf".
 *
 * @param inputFile The source pdf document file.
 * @param signedFile The file to be signed.
 * @throws IOException/*from   w  w  w  .j a  va2 s  .com*/
 */
public void signPDF(File inputFile, File signedFile) throws IOException {
    if (inputFile == null || !inputFile.exists()) {
        throw new IOException("Document for signing does not exist");
    }

    // creating output document and prepare the IO streams.
    FileOutputStream fos = new FileOutputStream(signedFile);

    // load document
    PDDocument doc = PDDocument.load(inputFile);

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter
    // subfilter for basic and PAdES Part 2 signatures
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    signature.setName("signer name");
    signature.setLocation("signer location");
    signature.setReason("reason for signature");

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    // register signature dictionary and sign interface
    if (visibleSignatureProperties != null && visibleSignatureProperties.isVisualSignEnabled()) {
        options = new SignatureOptions();
        options.setVisualSignature(visibleSignatureProperties);
        options.setPage(visibleSignatureProperties.getPage() - 1);
        // FIXME
        //doc.addSignature(signature, this, options);
    } else {
        // FIXME
        //doc.addSignature(signature, this);
    }

    // write incremental (only for signing purpose)
    // FIXME
    //doc.saveIncremental(fos);
    doc.close();

    // do not close options before saving, because some COSStream objects within options
    // are transferred to the signed document.
    // FIXME
    //IOUtils.closeQuietly(options);
}

From source file:eu.europa.esig.dss.pdf.pdfbox.PdfBoxSignatureService.java

License:Open Source License

private PDSignature createSignatureDictionary(final PAdESSignatureParameters parameters) {

    final PDSignature signature = new PDSignature();
    signature.setType(getType());/*from  w w  w  . j a  va2s  .c om*/
    // signature.setName(String.format("SD-DSS Signature %s", parameters.getDeterministicId()));
    Date date = parameters.bLevel().getSigningDate();
    String encodedDate = " " + Hex
            .encodeHexString(DSSUtils.digest(DigestAlgorithm.SHA1, Long.toString(date.getTime()).getBytes()));
    CertificateToken token = parameters.getSigningCertificate();
    if (token == null) {
        signature.setName("Unknown signer" + encodedDate);
    } else {
        if (parameters.getSigningCertificate().getSubjectShortName() != null) {
            String shortName = parameters.getSigningCertificate().getSubjectShortName() + encodedDate;
            signature.setName(shortName);
        } else {
            signature.setName("Unknown signer" + encodedDate);
        }
    }

    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter
    // sub-filter for basic and PAdES Part 2 signatures
    signature.setSubFilter(getSubFilter());

    if (COSName.SIG.equals(getType())) {
        if (StringUtils.isNotEmpty(parameters.getContactInfo())) {
            signature.setContactInfo(parameters.getContactInfo());
        }

        if (StringUtils.isNotEmpty(parameters.getLocation())) {
            signature.setLocation(parameters.getLocation());
        }

        if (StringUtils.isNotEmpty(parameters.getReason())) {
            signature.setReason(parameters.getReason());
        }
    }

    // the signing date, needed for valid signature
    final Calendar cal = Calendar.getInstance();
    final Date signingDate = parameters.bLevel().getSigningDate();
    cal.setTime(signingDate);
    signature.setSignDate(cal);
    return signature;
}

From source file:fixture.pdfboxeg.CreateSignature.java

License:Apache License

public void signDetached(PDDocument document, OutputStream output, TSAClient tsaClient, boolean certify)
        throws IOException {
    setTsaClient(tsaClient);/*from   w w  w .ja va 2s . c  o m*/

    int accessPermissions = getMDPPermission(document);
    if (accessPermissions == 1) {
        throw new IllegalStateException(
                "No changes to the document are permitted due to DocMDP transform parameters dictionary");
    }

    // create signature dictionary
    PDSignature signature = new PDSignature();
    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
    signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
    signature.setName("Example User");
    signature.setLocation("Los Angeles, CA");
    signature.setReason("Testing");
    // TODO extract the above details from the signing certificate? Reason as a parameter?

    // the signing date, needed for valid signature
    signature.setSignDate(Calendar.getInstance());

    // Optional: certify 
    if (certify && accessPermissions == 0) {
        setMDPPermission(document, signature, 2);
    }

    if (isExternalSigning()) {
        //System.out.println("Sign externally...");
        document.addSignature(signature);
        ExternalSigningSupport externalSigning = document.saveIncrementalForExternalSigning(output);
        // invoke external signature service
        byte[] cmsSignature = sign(externalSigning.getContent());
        // set signature bytes received from the service
        externalSigning.setSignature(cmsSignature);
    } else {
        // register signature dictionary and sign interface
        document.addSignature(signature, this);

        // write incremental (only for signing purpose)
        document.saveIncremental(output);
    }
}