From 8167a231747cf8da9a7ed1e240a5b66982e372e7 Mon Sep 17 00:00:00 2001 From: Thomas Chojecki Date: Tue, 8 Apr 2014 08:56:08 +0200 Subject: [PATCH] AF entry for catalog with FileSpec --- src/main/java/pdfbox/PDFA3FileAttachment.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/pdfbox/PDFA3FileAttachment.java b/src/main/java/pdfbox/PDFA3FileAttachment.java index 22443a70..183605fa 100644 --- a/src/main/java/pdfbox/PDFA3FileAttachment.java +++ b/src/main/java/pdfbox/PDFA3FileAttachment.java @@ -31,7 +31,9 @@ import org.apache.jempbox.xmp.XMPSchemaBasic; import org.apache.jempbox.xmp.XMPSchemaDublinCore; import org.apache.jempbox.xmp.XMPSchemaPDF; import org.apache.jempbox.xmp.pdfa.XMPSchemaPDFAId; +import org.apache.pdfbox.cos.COSArray; import org.apache.pdfbox.cos.COSDictionary; +import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentCatalog; import org.apache.pdfbox.pdmodel.PDDocumentInformation; @@ -71,7 +73,8 @@ public class PDFA3FileAttachment fs.setFile("Test.txt"); COSDictionary dict = fs.getCOSDictionary(); // Relation "Source" for linking with eg. catalog - dict.setName("AFRelationship", "Source"); + dict.setName("AFRelationship", "Alternative"); +// dict.setName("AFRelationship", "Source"); dict.setString("UF", "Test.txt"); // fs.put(new PdfName("AFRelationship"), new PdfName("Source")); @@ -85,6 +88,7 @@ public class PDFA3FileAttachment ef.setSubtype("text/plain"); ef.setFile(fs); +// ef.getStream().setItem(COSName.UF, fs); ef.setModDate(GregorianCalendar.getInstance()); @@ -92,7 +96,7 @@ public class PDFA3FileAttachment // src.getAbsolutePath(), src.getName(), null, false, "image/jpeg", // fileParameter); - // fs.put(new PdfName("AFRelationship"), new PdfName("Source")); +// fs.put(new PdfName("AFRelationship"), new PdfName("Source")); ef.setSize(payload.length()); ef.setCreationDate(new GregorianCalendar()); @@ -111,10 +115,17 @@ public class PDFA3FileAttachment * */ // 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); - - doc.getDocumentCatalog().setNames(names); + catalog.setNames(names); + + // AF entry (Array) in catalog with the FileSpec + COSArray cosArray = new COSArray(); + cosArray.add(fs); + catalog.getCOSDictionary().setItem("AF", cosArray); + }