From e37083d5e8e3fae8bc2666d18eb89269959022b5 Mon Sep 17 00:00:00 2001 From: Ivan Vaklinov Date: Mon, 29 Sep 2014 13:20:35 +0300 Subject: [PATCH] Fixed Mustang to also store an embedded file under the /UF name - causes problems when files are read by Intarsys. --- .../java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java index 211d64aa..7fd6ea34 100644 --- a/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java +++ b/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java @@ -25,7 +25,9 @@ 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.COSBase; 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; @@ -482,6 +484,12 @@ public class ZUGFeRDExporter { fs.setEmbeddedFile(ef); + // In addition make sure the embedded file is set under /UF + dict = fs.getCOSDictionary(); + 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. efTree.setNames(Collections.singletonMap(filename, fs)); PDDocumentNameDictionary names = new PDDocumentNameDictionary(