Example usage for org.apache.pdfbox.pdmodel.common.filespecification PDEmbeddedFile setCreationDate

List of usage examples for org.apache.pdfbox.pdmodel.common.filespecification PDEmbeddedFile setCreationDate

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel.common.filespecification PDEmbeddedFile setCreationDate.

Prototype

public void setCreationDate(Calendar creation) 

Source Link

Document

Set the creation date.

Usage

From source file:algorithm.PDFFileAttacher.java

License:Apache License

private List<PDComplexFileSpecification> getFileSpecifications(PDDocument document, List<File> payloadList)
        throws IOException {
    List<PDComplexFileSpecification> fileSpecifications = new ArrayList<PDComplexFileSpecification>();
    for (File payload : payloadList) {
        FileInputStream inputStream = new FileInputStream(payload);
        PDEmbeddedFile embeddedFile = new PDEmbeddedFile(document, inputStream);
        embeddedFile.setCreationDate(new GregorianCalendar());
        PDComplexFileSpecification fileSpecification = new PDComplexFileSpecification();
        fileSpecification.setFile(payload.toPath().toString());
        fileSpecification.setEmbeddedFile(embeddedFile);
        fileSpecifications.add(fileSpecification);
    }/*from w  w  w . j a  va  2s .c o  m*/
    return fileSpecifications;
}

From source file:eu.europa.ejusticeportal.dss.controller.signature.PdfUtils.java

License:EUPL

/**
 * Adds an attachment to a PDF//  w  w w. jav a  2 s  .co  m
 * 
 * @param pdf the PDF to attach to
 * @param attachment to attachment
 * @param name the name given to the attachment
 * @return the PDF with attachment
 */
public static byte[] attach(final byte[] pdf, final byte[] attachment, final String name) {
    PDDocument doc = null;
    try {

        PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();

        InputStream isDoc = new ByteArrayInputStream(pdf);
        doc = PDDocument.load(isDoc);
        PDComplexFileSpecification fs = new PDComplexFileSpecification();
        fs.setFile("Test.txt");
        InputStream isAttach = new ByteArrayInputStream(attachment);
        PDEmbeddedFile ef = new PDEmbeddedFile(doc, isAttach);
        ef.setSize(attachment.length);
        ef.setCreationDate(Calendar.getInstance());
        fs.setEmbeddedFile(ef);

        Map<String, PDComplexFileSpecification> efMap = new HashMap<String, PDComplexFileSpecification>();
        efMap.put(name, fs);
        efTree.setNames(efMap);
        PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());
        names.setEmbeddedFiles(efTree);
        doc.getDocumentCatalog().setNames(names);
        return toByteArray(doc);
    } catch (Exception e) {
        LOGGER.error("Error attaching.", e);
        throw new SigningException(e);
    } finally {
        closeQuietly(doc);
    }
}

From source file:io.konik.carriage.pdfbox.PDFBoxInvoiceAppender.java

License:Open Source License

private static PDEmbeddedFile createEmbeddedFile(PDDocument doc, InputStream zugferdFile) throws IOException {
    Calendar now = Calendar.getInstance();
    ByteCountingInputStream countingIs = new ByteCountingInputStream(zugferdFile);
    PDEmbeddedFile embeddedFile = new PDEmbeddedFile(doc, countingIs);
    embeddedFile.setSubtype(MIME_TYPE);//  w ww  .  ja v  a 2 s .c o  m
    embeddedFile.setSize(countingIs.getByteCount());
    embeddedFile.setCreationDate(now);
    embeddedFile.setModDate(now);
    return embeddedFile;
}

From source file:org.mustangproject.ZUGFeRD.ZUGFeRDExporter.java

License:Open Source License

/**
 * Embeds an external file (generic - any type allowed) in the PDF.
 *
 * @param doc          PDDocument to attach the file to.
 * @param filename     name of the file that will become attachment name in the PDF
 * @param relationship how the file relates to the content, e.g. "Alternative"
 * @param description  Human-readable description of the file content
 * @param subType      type of the data e.g. could be "text/xml" - mime like
 * @param data         the binary data of the file/attachment
 * @throws java.io.IOException//from   w  w w. j a  v a 2 s.  co  m
 */
public void PDFAttachGenericFile(PDDocument doc, String filename, String relationship, String description,
        String subType, byte[] data) throws IOException {
    fileAttached = true;

    PDComplexFileSpecification fs = new PDComplexFileSpecification();
    fs.setFile(filename);

    COSDictionary dict = fs.getCOSObject();
    dict.setName("AFRelationship", relationship);
    dict.setString("UF", filename);
    dict.setString("Desc", description);

    ByteArrayInputStream fakeFile = new ByteArrayInputStream(data);
    PDEmbeddedFile ef = new PDEmbeddedFile(doc, fakeFile);
    ef.setSubtype(subType);
    ef.setSize(data.length);
    ef.setCreationDate(new GregorianCalendar());

    ef.setModDate(GregorianCalendar.getInstance());

    fs.setEmbeddedFile(ef);

    // In addition make sure the embedded file is set under /UF
    dict = fs.getCOSObject();
    COSDictionary efDict = (COSDictionary) dict.getDictionaryObject(COSName.EF);
    COSBase lowerLevelFile = efDict.getItem(COSName.F);
    efDict.setItem(COSName.UF, lowerLevelFile);

    // now add the entry to the embedded file tree and set in the document.
    PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());
    PDEmbeddedFilesNameTreeNode efTree = names.getEmbeddedFiles();
    if (efTree == null) {
        efTree = new PDEmbeddedFilesNameTreeNode();
    }

    Map<String, PDComplexFileSpecification> namesMap = new HashMap<>();

    Map<String, PDComplexFileSpecification> oldNamesMap = efTree.getNames();
    if (oldNamesMap != null) {
        for (String key : oldNamesMap.keySet()) {
            namesMap.put(key, oldNamesMap.get(key));
        }
    }
    namesMap.put(filename, fs);
    efTree.setNames(namesMap);

    names.setEmbeddedFiles(efTree);
    doc.getDocumentCatalog().setNames(names);

    // AF entry (Array) in catalog with the FileSpec
    COSArray cosArray = (COSArray) doc.getDocumentCatalog().getCOSObject().getItem("AF");
    if (cosArray == null) {
        cosArray = new COSArray();
    }
    cosArray.add(fs);
    COSDictionary dict2 = doc.getDocumentCatalog().getCOSObject();
    COSArray array = new COSArray();
    array.add(fs.getCOSObject()); // see below
    dict2.setItem("AF", array);
    doc.getDocumentCatalog().getCOSObject().setItem("AF", cosArray);
}

From source file:pdfbox.PDFA3FileAttachment.java

License:Apache License

private void attachSampleFile(PDDocument doc) throws IOException {
    PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();

    // first create the file specification, which holds the embedded file

    PDComplexFileSpecification fs = new PDComplexFileSpecification();
    fs.setFile("Test.txt");
    COSDictionary dict = fs.getCOSDictionary();
    // Relation "Source" for linking with eg. catalog
    dict.setName("AFRelationship", "Alternative");
    // dict.setName("AFRelationship", "Source");

    dict.setString("UF", "Test.txt");
    // fs.put(new PdfName("AFRelationship"), new PdfName("Source"));

    String payload = "This is a test";

    InputStream is = new ByteArrayInputStream(payload.getBytes());

    PDEmbeddedFile ef = new PDEmbeddedFile(doc, is);
    // set some of the attributes of the embedded file

    ef.setSubtype("text/plain");
    // ef.setFile(fs);
    // ef.getStream().setItem(COSName.UF, fs);

    ef.setModDate(GregorianCalendar.getInstance());

    // PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(writer,
    // src.getAbsolutePath(), src.getName(), null, false, "image/jpeg",
    // fileParameter);

    // fs.put(new PdfName("AFRelationship"), new PdfName("Source"));

    ef.setSize(payload.length());/*from  ww w.ja  va2  s  .c om*/
    ef.setCreationDate(new GregorianCalendar());
    fs.setEmbeddedFile(ef);

    // now add the entry to the embedded file tree and set in the document.
    efTree.setNames(Collections.singletonMap("My first attachment", fs));

    /**
     * Validating file "RE-20131206_22.pdf" for conformance level pdfa-3a The
     * key UF is required but missing. The key AFRelationship is required but
     * missing. File specification 'Test.txt' not associated with an object.
     */
    // attachments are stored as part of the "names" dictionary in the document
    // catalog
    PDDocumentCatalog catalog = doc.getDocumentCatalog();

    PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());
    names.setEmbeddedFiles(efTree);
    catalog.setNames(names);

    // // AF entry (Array) in catalog with the FileSpec
    // PDAcroForm pdAcroForm = new PDAcroForm(doc);
    // COSArray cosArray = new COSArray();
    // cosArray.add(fs);
    // catalog.setItem("AF", cosArray);

}