Click here for the English article.
Einleitung
Durch die Anbindung von List & Label können Rechnungsdaten entsprechend des ZUGFeRD-Standards erzeugt und verarbeitet werden. Dabei können die von List & Label erzeugten PDF-Dateien zusammen mit den von der Anwendung bereitgestellten XML-Daten ins ZUGFeRD-konforme PDF/A-3 Format erstellt werden. Weitere allgemeine Details finden sich im Artikel
ZUGFeRD, Factur-X und XRechnung – Elektronische Rechnungsformate in List & Label.
Ab List & Label Version 31.000 wird bis zur ZUGFeRD-Version 2.3 unterstützt, ab Version 31.001 auch die ZUGFeRD-Version 2.4.
Umsetzung
Die notwendige XML-Datei, die in das PDF eingebettet werden soll, muss von der Anwendung selbst erzeugt und bereitgestellt werden.
Tipp: Bei der Erstellung der ZUGFeRD-konformen XML-Datei kann der Artikel ZUGFeRD-XML-Dateien erstellen und in PDF einbetten unterstützen.
Dann reicht es aus, wenn in List & Label lediglich die Export-Option PDF.ZUGFeRDXmlPath auf den Pfad der erstellten XML-Datei gesetzt wird. Der Rest wird dann von List & Label selbst übernommen:
.NET/C#
...
// Define path to the ZUGFeRD XML file
string xmlPath = @"C:\temp\ZUGFeRD-invoice.xml";
// Define List & Label export configuration with ZUGFeRD XML file
ExportConfiguration exportConfig =
new ExportConfiguration("PDF", @"C:\temp\Output.pdf", "invoice.lst");
exportConfig.ExportOptions.Add(LlExportOption.PdfZUGFeRDXmlPath, xmlPath);
// Start export
LL.Export(exportConfig);
...
Delphi (VCL/FireDAC)
...
// Define path to the ZUGFeRD XML file
xmlPath := 'C:\temp\ZUGFeRD-invoice.xml';
// Define List & Label export configuration with ZUGFeRD XML file
exportConfig := TLlExportConfiguration.Create
(TLlExportTarget.Pdf, 'C:\temp\Output.pdf', 'invoice.lst');
exportConfig.ExportOptions.Add(TLlExportOption.PdfZUGFeRDXmlPath, xmlPath);
// Start export
ListLabel.Export(exportConfig);
...
Native API/C++
// Define path to the ZUGFeRD XML file
CString sXmlPath = _T("C:\\\temp\\ZUGFeRD-invoice.xml");
// Define List & Label export options with ZUGFeRD XML file and silent PDF export
::LlXSetParameter(m_hLlJob, LL_LLX_EXTENSIONTYPE_EXPORT, _T("PDF"),
_T("PDF.ZUGFeRDXmlPath"), sXmlPath);
::LlXSetParameter(m_hLlJob, LL_LLX_EXTENSIONTYPE_EXPORT, _T("PDF"),
_T("Export.File"), _T("output.pdf"));
::LlXSetParameter(m_hLlJob, LL_LLX_EXTENSIONTYPE_EXPORT, _T("PDF"),
_T("Export.Path"), _T("C:\\temp\\"));
::LlXSetParameter(m_hLlJob, LL_LLX_EXTENSIONTYPE_EXPORT, _T("PDF"),
_T("Export.Quiet"), _T("1"));
// Start export process with the defined options
if (::LlPrintStart(pJDR->_hJob, LL_PROJECT_LIST,
_T("invoice.lst"), LL_PRINT_EXPORT, 0) < 0)
return; // Error
// Define explicit export format to PDF
::LlPrintSetOptionString(m_hLlJob, LL_PRNOPTSTR_EXPORT, _T("PDF"));
// Now process with the printing loop by calling ::LlPrint(),
// ::LlPrintFields(), ::LlPrintEnd() etc.
// ...