/
How to add XML file to PDFA as Factur-X attachment
How to add XML file to PDFA as Factur-X attachment
XFRX 19.0.0 has method CreateFACTURXMetadata()
Workaround for XFRX 17.3-18.2
LOCAL m.lcXFRX, m.lnRetVal, m.lcXMLMD, m.lcRDFMD, m.lcXMLFile m.lcXMLFile="c:\temp\Factur-X.xml" m.loXFRX=EVALUATE([xfrx("XFRX#INIT")]) m.lnRetVal = loXFRX.SetParams("Factur-X.pdf",,,,.T.,,"PDF") IF m.lnRetVal = 0 m.loXFRX.setpdfa(.T.,"3B") && Must version 3 m.lcXMLMD=[ <rdf:Description rdf:about="" xmlns:fx="urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#">]+CHR(13)+CHR(10)+; [ <fx:ConformanceLevel>BASIC</fx:ConformanceLevel>]+CHR(13)+CHR(10)+; [ <fx:DocumentFileName>]+JUSTFNAME(m.lcXMLFile)+[</fx:DocumentFileName>]+CHR(13)+CHR(10)+; [ <fx:DocumentType>INVOICE</fx:DocumentType> ]+CHR(13)+CHR(10)+; [ <fx:Version>1.0</fx:Version>]+CHR(13)+CHR(10)+; [ </rdf:Description>]+CHR(13)+CHR(10) m.lcRDFMD=[ <rdf:li rdf:parseType="Resource">]+CHR(13)+CHR(10)+; [ <pdfaSchema:schema>Factur-X PDFA Extension Schema</pdfaSchema:schema>]+CHR(13)+CHR(10)+; [ <pdfaSchema:namespaceURI>urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI>]+CHR(13)+CHR(10)+; [ <pdfaSchema:prefix>fx</pdfaSchema:prefix>]+CHR(13)+CHR(10)+; [ <pdfaSchema:property>]+CHR(13)+CHR(10)+; [ <rdf:Seq>]+CHR(13)+CHR(10)+; [ <rdf:li rdf:parseType="Resource">]+CHR(13)+CHR(10)+; [ <pdfaProperty:name>DocumentFileName</pdfaProperty:name>]+CHR(13)+CHR(10)+; [ <pdfaProperty:valueType>Text</pdfaProperty:valueType>]+CHR(13)+CHR(10)+; [ <pdfaProperty:category>external</pdfaProperty:category>]+CHR(13)+CHR(10)+; [ <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description>]+CHR(13)+CHR(10)+; [ </rdf:li>]+CHR(13)+CHR(10)+; [ <rdf:li rdf:parseType="Resource">]+CHR(13)+CHR(10)+; [ <pdfaProperty:name>DocumentType</pdfaProperty:name>]+CHR(13)+CHR(10)+; [ <pdfaProperty:valueType>Text</pdfaProperty:valueType>]+CHR(13)+CHR(10)+; [ <pdfaProperty:category>external</pdfaProperty:category>]+CHR(13)+CHR(10)+; [ <pdfaProperty:description>INVOICE</pdfaProperty:description>]+CHR(13)+CHR(10)+; [ </rdf:li>]+CHR(13)+CHR(10)+; [ <rdf:li rdf:parseType="Resource">]+CHR(13)+CHR(10)+; [ <pdfaProperty:name>Version</pdfaProperty:name>]+CHR(13)+CHR(10)+; [ <pdfaProperty:valueType>Text</pdfaProperty:valueType>]+CHR(13)+CHR(10)+; [ <pdfaProperty:category>external</pdfaProperty:category>]+CHR(13)+CHR(10)+; [ <pdfaProperty:description>The actual version of the Factur-X XML schema</pdfaProperty:description>]+CHR(13)+CHR(10)+; [ </rdf:li>]+CHR(13)+CHR(10)+; [ <rdf:li rdf:parseType="Resource">]+CHR(13)+CHR(10)+; [ <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>]+CHR(13)+CHR(10)+; [ <pdfaProperty:valueType>Text</pdfaProperty:valueType>]+CHR(13)+CHR(10)+; [ <pdfaProperty:category>external</pdfaProperty:category>]+CHR(13)+CHR(10)+; [ <pdfaProperty:description>The conformance level of the embedded Factur-X data</pdfaProperty:description>]+CHR(13)+CHR(10)+; [ </rdf:li>]+CHR(13)+CHR(10)+; [ </rdf:Seq>]+CHR(13)+CHR(10)+; [ </pdfaSchema:property>]+CHR(13)+CHR(10)+; [ </rdf:li>]+CHR(13)+CHR(10) m.loXFRX.AddAttachment(m.lcXMLFile, .T., "XML-Format", "text/XML", "Data", m.lcXMLMD) m.loXFRX.AttachmentsList.cExtensiondata=m.lcRDFMD m.loXFRX.ProcessReport("FActur-X.frx") ENDIF
Use method CreateFACTURXMetadata()
LOCAL m.lcXFRX, m.lnRetVal, m.lcXMLFile, m.loFile m.lcXMLFile="c:\temp\Factur-X.xml" m.loXFRX=EVALUATE([xfrx("XFRX#INIT")]) m.lnRetVal = loXFRX.SetParams("Factur-X.pdf",,,,.T.,,"PDF") IF m.lnRetVal = 0 m.loXFRX.setpdfa(.T.,"3B") && Must version 3 m.loFile=m.loXFRX.AddAttachment(m.lcXMLFile, .T., "XML-Format", "text/XML", "Data") m.loFile.CreateFACTURXMetadata("BASIC", "INVOICE", "1.0") m.loXFRX.ProcessReport("FActur-X.frx") ENDIF
, multiple selections available,