Example usage for org.apache.pdfbox.cos COSDictionary setItem

List of usage examples for org.apache.pdfbox.cos COSDictionary setItem

Introduction

In this page you can find the example usage for org.apache.pdfbox.cos COSDictionary setItem.

Prototype

public void setItem(String key, COSBase value) 

Source Link

Document

This will set an item in the dictionary.

Usage

From source file:com.modemo.javase.signature.SigUtils.java

License:Apache License

/**
 * 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.
 *
 * @param doc The document./*from   ww w . ja  v  a 2s.  c  om*/
 * @param signature The signature object.
 * @param accessPermissions The permission value (1, 2 or 3).
 */
static public void setMDPPermission(PDDocument doc, PDSignature signature, int accessPermissions) {
    COSDictionary sigDict = signature.getCOSObject();

    // DocMDP specific stuff
    COSDictionary transformParameters = new COSDictionary();
    transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams"));
    transformParameters.setInt(COSName.P, accessPermissions);
    transformParameters.setName(COSName.V, "1.2");
    transformParameters.setNeedToBeUpdated(true);

    COSDictionary referenceDict = new COSDictionary();
    referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef"));
    referenceDict.setItem("TransformMethod", COSName.DOCMDP);
    referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1"));
    referenceDict.setItem("TransformParams", transformParameters);
    referenceDict.setNeedToBeUpdated(true);

    COSArray referenceArray = new COSArray();
    referenceArray.add(referenceDict);
    sigDict.setItem("Reference", referenceArray);
    referenceArray.setNeedToBeUpdated(true);

    // Catalog
    COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject();
    COSDictionary permsDict = new COSDictionary();
    catalogDict.setItem(COSName.PERMS, permsDict);
    permsDict.setItem(COSName.DOCMDP, signature);
    catalogDict.setNeedToBeUpdated(true);
    permsDict.setNeedToBeUpdated(true);
}

From source file:ddf.catalog.transformer.input.pdf.GeoPdfDocumentGenerator.java

License:Open Source License

private static PDPage generateGeoPdfPage(int numberOfFramesPerPage, String projectionType) {
    PDPage pdPage = new PDPage();
    COSDictionary cosDictionary = pdPage.getCOSObject();
    cosDictionary.setItem(GeoPdfParserImpl.LGIDICT,
            generateLGIDictArray(numberOfFramesPerPage, projectionType));
    return pdPage;
}

From source file:ddf.catalog.transformer.input.pdf.GeoPdfDocumentGenerator.java

License:Open Source License

private static PDPage generateGeoPdfPage(String projectionType, boolean generateNeatLine) {
    PDPage pdPage = new PDPage();
    COSDictionary cosDictionary = pdPage.getCOSObject();
    cosDictionary.setItem(GeoPdfParserImpl.LGIDICT,
            generateMapFrameDictionary(projectionType, generateNeatLine));
    return pdPage;
}

From source file:ddf.catalog.transformer.input.pdf.GeoPdfDocumentGenerator.java

License:Open Source License

private static COSDictionary generateMapFrameDictionary(String projectionType) {
    COSDictionary cosDictionary = new COSDictionary();
    if (StringUtils.isNotBlank(projectionType)) {
        cosDictionary.setItem(GeoPdfParserImpl.PROJECTION, generateProjectionDictionary(projectionType));
    }//from w  w w.  java  2 s .c om

    cosDictionary.setItem(GeoPdfParserImpl.NEATLINE, generateNeatLineArray());
    cosDictionary.setItem(GeoPdfParserImpl.CTM, generateCTMArray());
    return cosDictionary;
}

From source file:ddf.catalog.transformer.input.pdf.GeoPdfDocumentGenerator.java

License:Open Source License

private static COSDictionary generateMapFrameDictionary(String projectionType, boolean generateNeatLine) {
    COSDictionary cosDictionary = new COSDictionary();
    if (StringUtils.isNotBlank(projectionType)) {
        cosDictionary.setItem(GeoPdfParserImpl.PROJECTION, generateProjectionDictionary(projectionType));
    }// w w w . ja va2s.c om

    if (generateNeatLine) {
        cosDictionary.setItem(GeoPdfParserImpl.NEATLINE, generateNeatLineArray());
    }

    cosDictionary.setItem(GeoPdfParserImpl.CTM, generateCTMArray());
    return cosDictionary;
}

From source file:eu.europa.ec.markt.dss.signature.pdf.pdfbox.PdfBoxSignatureService.java

License:Open Source License

private void addExtraDictionaries(final PDDocument doc,
        final Map.Entry<String, PdfDict>[] extraDictionariesToAddBeforeSign) {

    final COSDictionary cosDictionary = doc.getDocumentCatalog().getCOSDictionary();
    for (final Map.Entry<String, PdfDict> pdfDictEntry : extraDictionariesToAddBeforeSign) {

        final String key = pdfDictEntry.getKey();
        final PdfBoxDict value = (PdfBoxDict) pdfDictEntry.getValue();
        final COSDictionary wrapped = value.getWrapped();
        cosDictionary.setItem(key, wrapped);
    }//w w  w.  j a v  a  2s . co  m
}

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

License:Open Source License

@Override
public void addDssDictionary(InputStream inputStream, OutputStream outpuStream,
        List<DSSDictionaryCallback> callbacks) {
    File toSignFile = null;//w  ww  . j  a  v a 2  s  .c  o  m
    File signedFile = null;
    FileInputStream fis = null;
    PDDocument pdDocument = null;
    try {
        toSignFile = DSSPDFUtils.getFileFromPdfData(inputStream);
        pdDocument = PDDocument.load(toSignFile);

        signedFile = File.createTempFile("sd-dss-", "-signed.pdf");

        final FileOutputStream fileOutputStream = DSSPDFUtils.getFileOutputStream(toSignFile, signedFile);

        if (CollectionUtils.isNotEmpty(callbacks)) {
            final COSDictionary cosDictionary = pdDocument.getDocumentCatalog().getCOSDictionary();
            cosDictionary.setItem("DSS", buildDSSDictionary(callbacks));
            cosDictionary.setNeedToBeUpdate(true);
        }

        if (pdDocument.getDocumentId() == null) {
            pdDocument.setDocumentId(0L);
        }
        pdDocument.saveIncremental(inputStream, fileOutputStream);

        fis = new FileInputStream(signedFile);
        IOUtils.copy(fis, outpuStream);
    } catch (Exception e) {
        throw new DSSException(e);
    } finally {
        IOUtils.closeQuietly(pdDocument);
        IOUtils.closeQuietly(fis);
        DSSUtils.delete(toSignFile);
        DSSUtils.delete(signedFile);
    }
}

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

License:Open Source License

private COSDictionary buildDSSDictionary(List<DSSDictionaryCallback> callbacks) throws Exception {
    COSDictionary dss = new COSDictionary();

    Map<String, COSStream> streams = new HashMap<String, COSStream>();

    Set<CRLToken> allCrls = new HashSet<CRLToken>();
    Set<OCSPToken> allOcsps = new HashSet<OCSPToken>();
    Set<CertificateToken> allCertificates = new HashSet<CertificateToken>();

    COSDictionary vriDictionary = new COSDictionary();
    for (DSSDictionaryCallback callback : callbacks) {
        COSDictionary sigVriDictionary = new COSDictionary();
        sigVriDictionary.setDirect(true);

        if (CollectionUtils.isNotEmpty(callback.getCertificates())) {
            COSArray vriCertArray = new COSArray();
            for (CertificateToken token : callback.getCertificates()) {
                vriCertArray.add(getStream(streams, token));
                allCertificates.add(token);
            }/*from w  w w .  jav a 2 s.  c  om*/
            sigVriDictionary.setItem("Cert", vriCertArray);
        }

        if (CollectionUtils.isNotEmpty(callback.getOcsps())) {
            COSArray vriOcspArray = new COSArray();
            for (OCSPToken token : callback.getOcsps()) {
                vriOcspArray.add(getStream(streams, token));
                allOcsps.add(token);
            }
            sigVriDictionary.setItem("OCSP", vriOcspArray);
        }

        if (CollectionUtils.isNotEmpty(callback.getCrls())) {
            COSArray vriCrlArray = new COSArray();
            for (CRLToken token : callback.getCrls()) {
                vriCrlArray.add(getStream(streams, token));
                allCrls.add(token);
            }
            sigVriDictionary.setItem("CRL", vriCrlArray);
        }

        PAdESSignature signature = callback.getSignature();
        final byte[] digest = DSSUtils.digest(DigestAlgorithm.SHA1,
                signature.getCAdESSignature().getCmsSignedData().getEncoded());
        String hexHash = Hex.encodeHexString(digest).toUpperCase();

        vriDictionary.setItem(hexHash, sigVriDictionary);
    }
    dss.setItem("VRI", vriDictionary);

    if (CollectionUtils.isNotEmpty(allCertificates)) {
        COSArray arrayAllCerts = new COSArray();
        for (CertificateToken token : allCertificates) {
            arrayAllCerts.add(getStream(streams, token));
        }
        dss.setItem("Certs", arrayAllCerts);
    }

    if (CollectionUtils.isNotEmpty(allOcsps)) {
        COSArray arrayAllOcsps = new COSArray();
        for (OCSPToken token : allOcsps) {
            arrayAllOcsps.add(getStream(streams, token));
        }
        dss.setItem("OCSPs", arrayAllOcsps);
    }

    if (CollectionUtils.isNotEmpty(allCrls)) {
        COSArray arrayAllCrls = new COSArray();
        for (CRLToken token : allCrls) {
            arrayAllCrls.add(getStream(streams, token));
        }
        dss.setItem("CRLs", arrayAllCrls);
    }

    return dss;
}

From source file:fi.nls.oskari.printout.printing.PDPageContentStream.java

License:Apache License

private void writeColorSpace(PDColorSpace colorSpace) throws IOException {
    COSName key = null;/*ww  w  .ja va  2  s  .c o  m*/
    if (colorSpace instanceof PDDeviceGray || colorSpace instanceof PDDeviceRGB
            || colorSpace instanceof PDDeviceCMYK) {
        key = COSName.getPDFName(colorSpace.getName());
    } else {
        COSDictionary colorSpaces = (COSDictionary) resources.getCOSDictionary()
                .getDictionaryObject(COSName.COLORSPACE);
        if (colorSpaces == null) {
            colorSpaces = new COSDictionary();
            resources.getCOSDictionary().setItem(COSName.COLORSPACE, colorSpaces);
        }
        key = colorSpaces.getKeyForValue(colorSpace.getCOSObject());

        if (key == null) {
            int counter = 0;
            String csName = "CS";
            while (colorSpaces.containsValue(csName + counter)) {
                counter++;
            }
            key = COSName.getPDFName(csName + counter);
            colorSpaces.setItem(key, colorSpace);
        }
    }
    key.writePDF(output);
    appendRawCommands(SPACE);
}

From source file:fixture.pdfboxeg.CreateSignatureBase.java

License:Apache License

public void setMDPPermission(PDDocument doc, PDSignature signature, int accessPermissions) {
    COSDictionary sigDict = signature.getCOSObject();

    // DocMDP specific stuff
    COSDictionary transformParameters = new COSDictionary();
    transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams"));
    transformParameters.setInt(COSName.P, accessPermissions);
    transformParameters.setName(COSName.V, "1.2");
    transformParameters.setNeedToBeUpdated(true);

    COSDictionary referenceDict = new COSDictionary();
    referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef"));
    referenceDict.setItem("TransformMethod", COSName.getPDFName("DocMDP"));
    referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1"));
    referenceDict.setItem("TransformParams", transformParameters);
    referenceDict.setNeedToBeUpdated(true);

    COSArray referenceArray = new COSArray();
    referenceArray.add(referenceDict);//w  ww  .  j ava  2 s  .c o m
    sigDict.setItem("Reference", referenceArray);
    referenceArray.setNeedToBeUpdated(true);

    // Catalog
    COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject();
    COSDictionary permsDict = new COSDictionary();
    catalogDict.setItem(COSName.PERMS, permsDict);
    permsDict.setItem(COSName.DOCMDP, signature);
    catalogDict.setNeedToBeUpdated(true);
    permsDict.setNeedToBeUpdated(true);
}