diff --git a/pom.xml b/pom.xml
index 77463aa8..890c4876 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,12 +68,12 @@
javax.xml.bind
jaxb-api
- 2.2.11
+ 2.3.0
javax.activation
activation
- 1.1
+ 1.1.1
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java
index 0330c4e4..efd93c22 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java
@@ -111,7 +111,7 @@ public class ZUGFeRDExporter implements Closeable {
private PDDocument doc;
int ZFVersion;
- private HashMap additionalXMLs = new HashMap();
+ private HashMap additionalFiles = new HashMap();
private boolean disableAutoClose;
@@ -130,10 +130,21 @@ public class ZUGFeRDExporter implements Closeable {
init();
}
- public void addAdditonalXML(String filename, byte[] xml) {
- additionalXMLs.put(filename, xml);
+ /**
+ * Adds additional file attachments into the ZF
+ * @param filename
+ * @param filecontent
+ */
+ public void addAdditionalFile(String filename, byte[] xml) {
+ additionalFiles.put(filename, xml);
+
}
+ /***
+ * internal helper function: get namespace for given zugferd or factur-x version
+ * @param ver
+ * @return
+ */
public String getNamespaceForVersion(int ver) {
if (isFacturX) {
return "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#";
@@ -147,6 +158,11 @@ public class ZUGFeRDExporter implements Closeable {
}
}
+ /***
+ * internal helper: returns the namespace prefix for the given zf/fx version number
+ * @param ver
+ * @return
+ */
public String getPrefixForVersion(int ver) {
if (isFacturX) {
return "fx";
@@ -155,6 +171,11 @@ public class ZUGFeRDExporter implements Closeable {
}
}
+ /***
+ * internal helper: return the name of the file attachment for the given zf/fx version
+ * @param ver
+ * @return
+ */
public String getFilenameForVersion(int ver) {
if (isFacturX) {
return "factur-x.xml";
@@ -374,8 +395,8 @@ public class ZUGFeRDExporter implements Closeable {
PDFAttachGenericFile(doc, filename, "Alternative",
"Invoice metadata conforming to ZUGFeRD standard (http://www.ferd-net.de/front_content.php?idcat=231&lang=4)",
"text/xml", xmlProvider.getXML());
- for (String filenameAdditional : additionalXMLs.keySet()) {
- PDFAttachGenericFile(doc, filenameAdditional, "Supplement", "ZUGFeRD extension/additional data", "text/xml", additionalXMLs.get(filenameAdditional));
+ for (String filenameAdditional : additionalFiles.keySet()) {
+ PDFAttachGenericFile(doc, filenameAdditional, "Supplement", "ZUGFeRD extension/additional data", "text/xml", additionalFiles.get(filenameAdditional));
}
}
@@ -518,7 +539,7 @@ public class ZUGFeRDExporter implements Closeable {
}
/**
- * Sets the ZUGFeRD conformance level (override).
+ * Sets the ZUGFeRD profile.
*
* @param zUGFeRDConformanceLevel the new conformance level
* @deprecated Use {@link ZUGFeRDExporterFromA1Factory} instead
@@ -532,7 +553,7 @@ public class ZUGFeRDExporter implements Closeable {
}
/**
- * Sets the ZUGFeRD conformance level (override).
+ * Sets the ZUGFeRD profile.
*
* @param zUGFeRDConformanceLevel the new conformance level
* @deprecated Use {@link #setConformanceLevel(PDFAConformanceLevel)} instead
@@ -572,6 +593,10 @@ public class ZUGFeRDExporter implements Closeable {
XMPSchemaPDFAExtensions pdfaex = new XMPSchemaPDFAExtensions(this, metadata, ZFVersion, attachZUGFeRDHeaders);
pdfaex.setZUGFeRDVersion(ZFVersion);
metadata.addSchema(pdfaex);
+ for (String filenameAdditional : additionalFiles.keySet()) {
+ XMPSchemaPDFAExtensionsAdditionalData pdfaexadd = new XMPSchemaPDFAExtensionsAdditionalData(metadata);
+ metadata.addSchema(pdfaexadd);
+ }
}
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
index e748332c..117d0e5d 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
@@ -32,7 +32,6 @@ import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
-import org.mustangproject.toecount.Toecount;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
@@ -163,21 +162,6 @@ public class ZUGFeRDImporter {
}
}
- private void prettyPrint(Document document) throws TransformerException {
- TransformerFactory tf = TransformerFactory.newInstance();
- Transformer transformer = null;
- try {
- transformer = tf.newTransformer();
- } catch (TransformerConfigurationException e) {
- Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e);
- }
- transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
- StringWriter writer = new StringWriter();
- transformer.transform(new DOMSource(document), new StreamResult(writer));
- String output = writer.getBuffer().toString();//.replaceAll("\n|\r", "");
- System.err.println(output);
- }
-
private Document getDocument() { return document; }
private void setDocument() throws ParserConfigurationException, IOException, SAXException {
@@ -368,6 +352,16 @@ public class ZUGFeRDImporter {
}
+ public int getVersion() throws Exception {
+ if (!containsMeta) throw new Exception("Not yet parsed");
+ if (getUTF8().contains("