List of usage examples for org.apache.pdfbox.pdmodel.common.filespecification PDEmbeddedFile setCreationDate
public void setCreationDate(Calendar creation)
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); }