]> git.ipfire.org Git - thirdparty/python-drafthorse.git/commitdiff
Field correction and updated pdf.py to zugferd2.2
authorBen Dangelmayr <dangelmayr@rami.io>
Tue, 19 Jul 2022 12:11:17 +0000 (14:11 +0200)
committerBen Dangelmayr <dangelmayr@rami.io>
Tue, 19 Jul 2022 12:11:17 +0000 (14:11 +0200)
drafthorse/models/accounting.py
drafthorse/models/document.py
drafthorse/models/payment.py
drafthorse/pdf.py
drafthorse/schema/ZUGFeRD2p2_extension_schema_BASIC.xmp [new file with mode: 0644]
drafthorse/schema/ZUGFeRD2p2_extension_schema_EN16931.xmp [new file with mode: 0644]
drafthorse/schema/ZUGFeRD2p2_extension_schema_EXTENDED.xmp [new file with mode: 0644]
drafthorse/schema/ZUGFeRD2p2_extension_schema_MINIMUM.xmp [new file with mode: 0644]

index 3c995492288f69d862a2b8c2a2a7d7fd7954b373..640556f86a2b1a7eac6715befd2ffd810de0fb19 100644 (file)
@@ -177,7 +177,7 @@ class MonetarySummation(Element):
         profile=BASIC,
         _d="Steuerbasisbetrag",
     )
-    tax_total = MultiDecimalField(
+    tax_total = DecimalField(
         NS_RAM, "TaxTotalAmount", required=True, profile=BASIC, _d="Steuergesamtbetrag"
     )
     grand_total = DecimalField(
index 70170366f3c5cd1db4039870b48a22732a769d14..1796a89d57bb9622c865ae806a063e8c496e58e5 100644 (file)
@@ -33,7 +33,7 @@ class BusinessDocumentContextParameter(Element):
 
 class DocumentContext(Element):
     test_indicator = IndicatorField(
-        NS_RAM, "TestIndicator", required=False, profile=BASIC, _d="Testkennzeichen"
+        NS_RAM, "TestIndicator", required=False, profile=EXTENDED, _d="Testkennzeichen"
     )
     business_parameter = Field(
         BusinessDocumentContextParameter,
index e41ec9e028fa0b8230caa2ad0b83a7fd346f5579..353aa9777fdf91fa3dee49d3454e9ff78290d8a3 100644 (file)
@@ -49,7 +49,7 @@ class PayeeFinancialInstitution(Element):
 
 
 class PaymentMeans(Element):
-    type_code = StringField(NS_RAM, "TypeCode", required=False, profile=COMFORT)
+    type_code = StringField(NS_RAM, "TypeCode", required=True, profile=COMFORT)
     information = MultiStringField(
         NS_RAM, "Information", required=False, profile=COMFORT
     )
index e72d3f08991884c83762375cbe4a52a6b6413949..027f0b304fd9ad110ef5fa27232beb40189a5780 100644 (file)
@@ -158,7 +158,7 @@ def _prepare_pdf_metadata_xml(level, pdf_metadata):
     fx_doc_filename = etree.SubElement(
         zugferd_desc, ns_zf + "DocumentFileName", nsmap=nsmap_zf
     )
-    fx_doc_filename.text = "ZUGFeRD-invoice.xml"
+    fx_doc_filename.text = "{}.xml".format(level)
     fx_doc_version = etree.SubElement(zugferd_desc, ns_zf + "Version", nsmap=nsmap_zf)
     fx_doc_version.text = "1.0"
     fx_conformance_level = etree.SubElement(
@@ -167,7 +167,7 @@ def _prepare_pdf_metadata_xml(level, pdf_metadata):
     fx_conformance_level.text = level
 
     xmp_file = os.path.join(
-        os.path.dirname(__file__), "schema", "ZUGFeRD1p0_extension_schema.xmp"
+        os.path.dirname(__file__), "schema", "ZUGFeRD2p2_extension_schema_{}.xmp".format(level)
     )
     # Reason for defining a parser below:
     # http://lxml.de/FAQ.html#why-doesn-t-the-pretty-print-option-reformat-my-xml-output
@@ -219,7 +219,7 @@ def _facturx_update_metadata_add_attachment(
         {NameObject("/F"): file_entry_obj, NameObject("/UF"): file_entry_obj}
     )
 
-    fname_obj = createStringObject("ZUGFeRD-invoice.xml")
+    fname_obj = createStringObject(facturx_level + ".xml")
     filespec_dict = DictionaryObject(
         {
             NameObject("/AFRelationship"): NameObject("/Alternative"),
diff --git a/drafthorse/schema/ZUGFeRD2p2_extension_schema_BASIC.xmp b/drafthorse/schema/ZUGFeRD2p2_extension_schema_BASIC.xmp
new file mode 100644 (file)
index 0000000..4e968d8
--- /dev/null
@@ -0,0 +1,87 @@
+<!--
+PDFlib GmbH 2013-2014
+Sample ZUGFeRD XMP with the required PDF/A extension schema description
+for the XMP properties of the ZUGFeRD schema and the actual ZUGFeRD properties.
+Schema name: ZUGFeRD Schema
+Preferred schema namespace prefix: zf
+Schema namespace URI: urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#
+Notes on the ZUGFeRD schema namespace URI:
+- The use of mixed upper/lowercase in "CrossIndustryDocument" conforms to
+  the ZUGFeRD 1.0 specification. The PDF samples distributed with the
+  ZUGFeRD 1.0 info package use all-lowercase spelling "crossindustrydocument"
+  which is not correct since it violates the ZUGFeRD specification.
+- The required trailing "#" character is missing in the comment in the
+  ZUGFeRD 1.0 extension schema description which is included in the ZUGFeRD
+  specification, but it is correctly present in the actual XMP.
+Based on the ZUGFeRD 1.0 package (published 2014-06 on www.ferd-net.de)
+which is Copyright AWV e.V. 2014.
+2014-07-01 (based on ZUGFeRD 1.0)
+Adjustments for ZUGFeRD 1.0:
+- updated header comments
+- switched to new namespace URI
+- adjusted property descriptions in the extension schema descriptions
+2013-06-19 (based on ZUGFeRD RC)
+Added a trailing hash character "#" to the "zf" namespace name as required
+by the XMP 2005 specification which is referenced in PDF/A-2 and PDF/A-3.
+Without this change Acrobat XI Preflight validation for PDF/A-3 complains
+"Extension schema present but not valid"
+2013-06-19
+Singled out the zf properties into a separate rdf:Description node to work
+around bug #4433 in PDFlib 9.0.0 which has been fixed in PDFlib 9.0.1.
+-->
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+  <!-- The actual ZUGFeRD properties; adjust if required -->
+  <rdf:Description rdf:about="" xmlns:zf="urn:ferd:pdfa:CrossIndustryDocument:invoice:2p2#">
+        <zf:ConformanceLevel>BASIC</zf:ConformanceLevel>
+        <zf:DocumentFileName>BASIC.xml</zf:DocumentFileName>
+        <zf:DocumentType>INVOICE</zf:DocumentType>
+        <zf:Version>1.0</zf:Version>
+  </rdf:Description>
+
+  <!-- PDF/A extension schema description for the ZUGFeRD schema.
+     It is crucial for PDF/A-3 conformance. Don't touch! -->
+  <rdf:Description rdf:about=""
+               xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
+               xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
+               xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">
+
+        <pdfaExtension:schemas>
+               <rdf:Bag>
+                  <rdf:li rdf:parseType="Resource">
+                         <pdfaSchema:schema>ZUGFeRD PDFA Extension Schema</pdfaSchema:schema>
+                         <pdfaSchema:namespaceURI>urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI>
+                         <pdfaSchema:prefix>zf</pdfaSchema:prefix>
+                         <pdfaSchema:property>
+                                <rdf:Seq>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentFileName</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentType</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>INVOICE</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>Version</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The actual version of the ZUGFeRD XML schema</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The conformance level of the embedded ZUGFeRD data</pdfaProperty:description>
+                                       </rdf:li>
+                                </rdf:Seq>
+                         </pdfaSchema:property>
+                  </rdf:li>
+               </rdf:Bag>
+        </pdfaExtension:schemas>
+  </rdf:Description>
+</rdf:RDF>
diff --git a/drafthorse/schema/ZUGFeRD2p2_extension_schema_EN16931.xmp b/drafthorse/schema/ZUGFeRD2p2_extension_schema_EN16931.xmp
new file mode 100644 (file)
index 0000000..633782d
--- /dev/null
@@ -0,0 +1,87 @@
+<!--
+PDFlib GmbH 2013-2014
+Sample ZUGFeRD XMP with the required PDF/A extension schema description
+for the XMP properties of the ZUGFeRD schema and the actual ZUGFeRD properties.
+Schema name: ZUGFeRD Schema
+Preferred schema namespace prefix: zf
+Schema namespace URI: urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#
+Notes on the ZUGFeRD schema namespace URI:
+- The use of mixed upper/lowercase in "CrossIndustryDocument" conforms to
+  the ZUGFeRD 1.0 specification. The PDF samples distributed with the
+  ZUGFeRD 1.0 info package use all-lowercase spelling "crossindustrydocument"
+  which is not correct since it violates the ZUGFeRD specification.
+- The required trailing "#" character is missing in the comment in the
+  ZUGFeRD 1.0 extension schema description which is included in the ZUGFeRD
+  specification, but it is correctly present in the actual XMP.
+Based on the ZUGFeRD 1.0 package (published 2014-06 on www.ferd-net.de)
+which is Copyright AWV e.V. 2014.
+2014-07-01 (based on ZUGFeRD 1.0)
+Adjustments for ZUGFeRD 1.0:
+- updated header comments
+- switched to new namespace URI
+- adjusted property descriptions in the extension schema descriptions
+2013-06-19 (based on ZUGFeRD RC)
+Added a trailing hash character "#" to the "zf" namespace name as required
+by the XMP 2005 specification which is referenced in PDF/A-2 and PDF/A-3.
+Without this change Acrobat XI Preflight validation for PDF/A-3 complains
+"Extension schema present but not valid"
+2013-06-19
+Singled out the zf properties into a separate rdf:Description node to work
+around bug #4433 in PDFlib 9.0.0 which has been fixed in PDFlib 9.0.1.
+-->
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+  <!-- The actual ZUGFeRD properties; adjust if required -->
+  <rdf:Description rdf:about="" xmlns:zf="urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#">
+        <zf:ConformanceLevel>EN16931</zf:ConformanceLevel>
+        <zf:DocumentFileName>EN16931.xml</zf:DocumentFileName>
+        <zf:DocumentType>INVOICE</zf:DocumentType>
+        <zf:Version>1.0</zf:Version>
+  </rdf:Description>
+
+  <!-- PDF/A extension schema description for the ZUGFeRD schema.
+     It is crucial for PDF/A-3 conformance. Don't touch! -->
+  <rdf:Description rdf:about=""
+               xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
+               xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
+               xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">
+
+        <pdfaExtension:schemas>
+               <rdf:Bag>
+                  <rdf:li rdf:parseType="Resource">
+                         <pdfaSchema:schema>ZUGFeRD PDFA Extension Schema</pdfaSchema:schema>
+                         <pdfaSchema:namespaceURI>urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI>
+                         <pdfaSchema:prefix>zf</pdfaSchema:prefix>
+                         <pdfaSchema:property>
+                                <rdf:Seq>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentFileName</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentType</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>INVOICE</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>Version</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The actual version of the ZUGFeRD XML schema</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The conformance level of the embedded ZUGFeRD data</pdfaProperty:description>
+                                       </rdf:li>
+                                </rdf:Seq>
+                         </pdfaSchema:property>
+                  </rdf:li>
+               </rdf:Bag>
+        </pdfaExtension:schemas>
+  </rdf:Description>
+</rdf:RDF>
diff --git a/drafthorse/schema/ZUGFeRD2p2_extension_schema_EXTENDED.xmp b/drafthorse/schema/ZUGFeRD2p2_extension_schema_EXTENDED.xmp
new file mode 100644 (file)
index 0000000..0e28b17
--- /dev/null
@@ -0,0 +1,87 @@
+<!--
+PDFlib GmbH 2013-2014
+Sample ZUGFeRD XMP with the required PDF/A extension schema description
+for the XMP properties of the ZUGFeRD schema and the actual ZUGFeRD properties.
+Schema name: ZUGFeRD Schema
+Preferred schema namespace prefix: zf
+Schema namespace URI: urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#
+Notes on the ZUGFeRD schema namespace URI:
+- The use of mixed upper/lowercase in "CrossIndustryDocument" conforms to
+  the ZUGFeRD 1.0 specification. The PDF samples distributed with the
+  ZUGFeRD 1.0 info package use all-lowercase spelling "crossindustrydocument"
+  which is not correct since it violates the ZUGFeRD specification.
+- The required trailing "#" character is missing in the comment in the
+  ZUGFeRD 1.0 extension schema description which is included in the ZUGFeRD
+  specification, but it is correctly present in the actual XMP.
+Based on the ZUGFeRD 1.0 package (published 2014-06 on www.ferd-net.de)
+which is Copyright AWV e.V. 2014.
+2014-07-01 (based on ZUGFeRD 1.0)
+Adjustments for ZUGFeRD 1.0:
+- updated header comments
+- switched to new namespace URI
+- adjusted property descriptions in the extension schema descriptions
+2013-06-19 (based on ZUGFeRD RC)
+Added a trailing hash character "#" to the "zf" namespace name as required
+by the XMP 2005 specification which is referenced in PDF/A-2 and PDF/A-3.
+Without this change Acrobat XI Preflight validation for PDF/A-3 complains
+"Extension schema present but not valid"
+2013-06-19
+Singled out the zf properties into a separate rdf:Description node to work
+around bug #4433 in PDFlib 9.0.0 which has been fixed in PDFlib 9.0.1.
+-->
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+  <!-- The actual ZUGFeRD properties; adjust if required -->
+  <rdf:Description rdf:about="" xmlns:zf="urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#">
+        <zf:ConformanceLevel>EXTENDED</zf:ConformanceLevel>
+        <zf:DocumentFileName>EXTENDED.xml</zf:DocumentFileName>
+        <zf:DocumentType>INVOICE</zf:DocumentType>
+        <zf:Version>1.0</zf:Version>
+  </rdf:Description>
+
+  <!-- PDF/A extension schema description for the ZUGFeRD schema.
+     It is crucial for PDF/A-3 conformance. Don't touch! -->
+  <rdf:Description rdf:about=""
+               xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
+               xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
+               xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">
+
+        <pdfaExtension:schemas>
+               <rdf:Bag>
+                  <rdf:li rdf:parseType="Resource">
+                         <pdfaSchema:schema>ZUGFeRD PDFA Extension Schema</pdfaSchema:schema>
+                         <pdfaSchema:namespaceURI>urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI>
+                         <pdfaSchema:prefix>zf</pdfaSchema:prefix>
+                         <pdfaSchema:property>
+                                <rdf:Seq>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentFileName</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentType</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>INVOICE</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>Version</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The actual version of the ZUGFeRD XML schema</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The conformance level of the embedded ZUGFeRD data</pdfaProperty:description>
+                                       </rdf:li>
+                                </rdf:Seq>
+                         </pdfaSchema:property>
+                  </rdf:li>
+               </rdf:Bag>
+        </pdfaExtension:schemas>
+  </rdf:Description>
+</rdf:RDF>
diff --git a/drafthorse/schema/ZUGFeRD2p2_extension_schema_MINIMUM.xmp b/drafthorse/schema/ZUGFeRD2p2_extension_schema_MINIMUM.xmp
new file mode 100644 (file)
index 0000000..a01351a
--- /dev/null
@@ -0,0 +1,87 @@
+<!--
+PDFlib GmbH 2013-2014
+Sample ZUGFeRD XMP with the required PDF/A extension schema description
+for the XMP properties of the ZUGFeRD schema and the actual ZUGFeRD properties.
+Schema name: ZUGFeRD Schema
+Preferred schema namespace prefix: zf
+Schema namespace URI: urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#
+Notes on the ZUGFeRD schema namespace URI:
+- The use of mixed upper/lowercase in "CrossIndustryDocument" conforms to
+  the ZUGFeRD 1.0 specification. The PDF samples distributed with the
+  ZUGFeRD 1.0 info package use all-lowercase spelling "crossindustrydocument"
+  which is not correct since it violates the ZUGFeRD specification.
+- The required trailing "#" character is missing in the comment in the
+  ZUGFeRD 1.0 extension schema description which is included in the ZUGFeRD
+  specification, but it is correctly present in the actual XMP.
+Based on the ZUGFeRD 1.0 package (published 2014-06 on www.ferd-net.de)
+which is Copyright AWV e.V. 2014.
+2014-07-01 (based on ZUGFeRD 1.0)
+Adjustments for ZUGFeRD 1.0:
+- updated header comments
+- switched to new namespace URI
+- adjusted property descriptions in the extension schema descriptions
+2013-06-19 (based on ZUGFeRD RC)
+Added a trailing hash character "#" to the "zf" namespace name as required
+by the XMP 2005 specification which is referenced in PDF/A-2 and PDF/A-3.
+Without this change Acrobat XI Preflight validation for PDF/A-3 complains
+"Extension schema present but not valid"
+2013-06-19
+Singled out the zf properties into a separate rdf:Description node to work
+around bug #4433 in PDFlib 9.0.0 which has been fixed in PDFlib 9.0.1.
+-->
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+  <!-- The actual ZUGFeRD properties; adjust if required -->
+  <rdf:Description rdf:about="" xmlns:zf="urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#">
+        <zf:ConformanceLevel>MINIMUM</zf:ConformanceLevel>
+        <zf:DocumentFileName>MINIMUM.xml</zf:DocumentFileName>
+        <zf:DocumentType>INVOICE</zf:DocumentType>
+        <zf:Version>1.0</zf:Version>
+  </rdf:Description>
+
+  <!-- PDF/A extension schema description for the ZUGFeRD schema.
+     It is crucial for PDF/A-3 conformance. Don't touch! -->
+  <rdf:Description rdf:about=""
+               xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
+               xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
+               xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">
+
+        <pdfaExtension:schemas>
+               <rdf:Bag>
+                  <rdf:li rdf:parseType="Resource">
+                         <pdfaSchema:schema>ZUGFeRD PDFA Extension Schema</pdfaSchema:schema>
+                         <pdfaSchema:namespaceURI>urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI>
+                         <pdfaSchema:prefix>zf</pdfaSchema:prefix>
+                         <pdfaSchema:property>
+                                <rdf:Seq>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentFileName</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>DocumentType</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>INVOICE</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>Version</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The actual version of the ZUGFeRD XML schema</pdfaProperty:description>
+                                       </rdf:li>
+                                       <rdf:li rdf:parseType="Resource">
+                                          <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>
+                                          <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                                          <pdfaProperty:category>external</pdfaProperty:category>
+                                          <pdfaProperty:description>The conformance level of the embedded ZUGFeRD data</pdfaProperty:description>
+                                       </rdf:li>
+                                </rdf:Seq>
+                         </pdfaSchema:property>
+                  </rdf:li>
+               </rdf:Bag>
+        </pdfaExtension:schemas>
+  </rdf:Description>
+</rdf:RDF>