PDF SDK Documentation

Comprehensive Guide for Developers: Features, Integration, and API Reference

Loading...
Searching...
No Matches
zugferd.h
Go to the documentation of this file.
1// Copyright (c) 2026 Avanquest Software. All rights reserved.
2
3#ifndef PDFSDK_CXX_ZUGFERD_H_INCLUDED_
4#define PDFSDK_CXX_ZUGFERD_H_INCLUDED_
5
10
11#include <filesystem>
12#include <vector>
13
15#include <pdfsdk/cxx/document.h>
16#include <pdfsdk/cxx/exception.h>
17#include <pdfsdk/cxx/progress_monitor.h>
18
19namespace PDF {
20
25 std::filesystem::path path;
26 std::wstring description;
27};
28
41inline void CreateZUGFeRD(const Document& input,
42 const std::filesystem::path& outputFile,
43 const std::filesystem::path& invoiceXml,
44 ZUGFeRDVersion version,
45 ZUGFeRDProfile profile,
46 const std::vector<ZugferdAttachmentEntry>& attachments = {},
47 ProgressMonitor* progress = nullptr) {
48 std::vector<std::wstring> pathStrings;
49 std::vector<std::wstring> descStrings;
50 std::vector<ZUGFeRDAttachment> cAttachments;
51 pathStrings.reserve(attachments.size());
52 descStrings.reserve(attachments.size());
53 cAttachments.reserve(attachments.size());
54
55 for (const auto& a : attachments) {
56 pathStrings.push_back(a.path.wstring());
57 descStrings.push_back(a.description);
59 ca.path = pathStrings.back().c_str();
60 ca.description = a.description.empty() ? nullptr : descStrings.back().c_str();
61 cAttachments.push_back(ca);
62 }
63
64 const auto outputStr = outputFile.wstring();
65 const auto xmlStr = invoiceXml.wstring();
66
67 ZUGFeRDConvertParams params{};
68 params.outputFile = outputStr.c_str();
69 params.invoiceXmlPath = xmlStr.c_str();
70 params.version = version;
71 params.profile = profile;
72 params.attachments = cAttachments.empty() ? nullptr : cAttachments.data();
73 params.numAttachments = cAttachments.size();
74
75 const PDProgressMonitor* progMon = progress ? progress->monitor() : nullptr;
76 void* progData = progress ? progress->userdata() : nullptr;
77
78 PDF_CHECK_SUCCESS_X(PDFCreateZUGFeRD(input.get(), progMon, progData, &params));
79}
80
81} // namespace PDF
82
83#endif // PDFSDK_CXX_ZUGFERD_H_INCLUDED_
Represents a PDF document.
Definition document.h:27
ZUGFeRD/Factur-X hybrid invoice PDF creation API.
ZUGFeRDProfile
ZUGFeRD/Factur-X conformance profile.
Definition zugferd.h:39
ZUGFeRDVersion
Invoice format family and version selector.
Definition zugferd.h:30
PDFSDK_IMPORT_ PDErrCode PDFSDK_CALLCONV PDFCreateZUGFeRD(PDDoc source, const PDProgressMonitor *progress, void *progressData, const ZUGFeRDConvertParams *params)
Creates a ZUGFeRD/Factur-X hybrid invoice PDF/A-3b document.
void CreateZUGFeRD(const Document &input, const std::filesystem::path &outputFile, const std::filesystem::path &invoiceXml, ZUGFeRDVersion version, ZUGFeRDProfile profile, const std::vector< ZugferdAttachmentEntry > &attachments={}, ProgressMonitor *progress=nullptr)
Creates a ZUGFeRD/Factur-X hybrid invoice PDF/A-3b document.
Definition zugferd.h:41
C++ attachment entry for CreateZUGFeRD.
Definition zugferd.h:24
An additional file to embed alongside the invoice XML.
Definition zugferd.h:52
const wchar_t * description
Definition zugferd.h:54
const wchar_t * path
Definition zugferd.h:53
const wchar_t * outputFile
Definition zugferd.h:61
size_t numAttachments
Definition zugferd.h:66
const wchar_t * invoiceXmlPath
Definition zugferd.h:62
ZUGFeRDVersion version
Definition zugferd.h:63
const ZUGFeRDAttachment * attachments
Definition zugferd.h:65
ZUGFeRDProfile profile
Definition zugferd.h:64