PeachPDF

PeachPDF

FacturXOptions Class

Turns the generated PDF into a Factur-X / ZUGFeRD hybrid e-invoice, via FacturX: a PDF/A-3 document that carries a human-readable invoice (the pages PeachPDF renders) together with the same invoice as structured XML, so software can process it without reading the pages. Factur-X (France) and ZUGFeRD (Germany) are one format under two names.

public sealed class FacturXOptions

Inheritance System.Object → FacturXOptions

Remarks

PeachPDF embeds the XML you supply; it neither generates the invoice XML (use any Cross Industry Invoice / EN 16931 generator) nor validates it against the format’s schemas and business rules (use a validator such as Mustang or ZUV). What PeachPDF does is everything on the PDF side: the embedded-file structure, the document-level /AF and /EmbeddedFiles entries, the /AFRelationship, and the XMP metadata block with its PDF/A extension schema that identifies the document as a Factur-X invoice.

Requires one of the PDF/A-3 levels in PdfAConformance (any of PdfA3B, PdfA3U, PdfA3A; the specification recommends the accessible PdfA3A) and, like every XMP-bearing PDF, a creation date (CreationDate, or a date in the source HTML). Targets Factur-X 1.0x / ZUGFeRD 2.1 and later (the fx XMP schema); the legacy ZUGFeRD 1.0 and 2.0 XMP schemas are not supported.

Properties  
Description An optional human-readable description of the embedded XML file.
Profile The profile of Xml. When null (the default) it is derived from the XML’s own guideline identifier (GuidelineSpecifiedDocumentContextParameter/ID, business term BT-24). When set it must agree with that identifier, so a document cannot claim a profile its XML does not meet; and it is required when the XML declares a guideline PeachPDF does not recognise.
Relationship How the embedded XML relates to the PDF (/AFRelationship). When null (the default) the value the specification calls for is used: Data for Minimum and BasicWl, otherwise Alternative.
Xml The invoice as Cross Industry Invoice (CII) XML, exactly as it should be embedded. Required.