pub struct Document {Show 19 fields
pub children: Vec<Node>,
pub metadata: Metadata,
pub default_page: PageConfig,
pub first_page: Option<PageConfig>,
pub left_page: Option<PageConfig>,
pub right_page: Option<PageConfig>,
pub named_pages: HashMap<String, NamedPageSet>,
pub fonts: Vec<FontEntry>,
pub default_style: Option<Style>,
pub tagged: bool,
pub pdfa: Option<PdfAConformance>,
pub pdf_version: PdfVersion,
pub pdf_ua: bool,
pub pdf_ua2: bool,
pub embedded_data: Option<String>,
pub attachments: Vec<Attachment>,
pub zugferd: Option<ZugferdMeta>,
pub flatten_forms: bool,
pub certification: Option<CertificationConfig>,
}Expand description
A complete document ready for rendering.
Fields§
§children: Vec<Node>The root nodes of the document. Typically one or more Page nodes, but can also be content nodes that get auto-wrapped in pages.
metadata: MetadataDocument metadata (title, author, etc.)
default_page: PageConfigDefault page configuration used when content overflows or when nodes aren’t explicitly wrapped in Page nodes.
first_page: Option<PageConfig>Page configuration for the FIRST page only, when it differs from
default_page (CSS @page :first). Margins and background may
vary; size should match default_page — flowing content bakes
widths at layout time, so per-page size changes are not supported.
left_page: Option<PageConfig>Page config for LEFT (verso, even 1-based) pages — CSS @page :left.
Flow layout always uses the base horizontal geometry; mirrored
margins (equal left+right sum) are applied as a constant x
translation at finalize, never a re-layout — so unequal sums are
unsupported (the HTML mapper normalizes and warns). :first
outranks parity on page 1.
right_page: Option<PageConfig>Page config for RIGHT (recto, odd 1-based) pages — CSS @page :right. Page 1 is a right page (left-to-right page progression per
CSS Paged Media; RTL page progression is not modeled).
named_pages: HashMap<String, NamedPageSet>Named page configs (CSS @page <name> + the page property).
A PageName marker node switches the active name; a named run
starts at a forced page break, so its REAL config (base) may
genuinely differ vertically. Horizontal geometry follows the same
translation rule as :left/:right (mirrored margins only).
fonts: Vec<FontEntry>Custom fonts to register before layout. Each entry contains the font family name, base64-encoded font data, weight, and style.
default_style: Option<Style>Default style applied to the root of the document tree.
Useful for setting a global font_family, font_size, color, etc.
tagged: boolWhether to produce a tagged (accessible) PDF with structure tree.
Defaults to true: every render emits a structure tree unless the
caller explicitly sets tagged: false. Tagging is layout-neutral —
the tag tree is built after layout, so geometry and visual output are
byte-for-byte unchanged; only the structural PDF objects differ.
pdfa: Option<PdfAConformance>PDF/A conformance level. When set, forces tagged = true for “2a”.
pdf_version: PdfVersionOutput PDF version. 1.7 (the default) is today’s writer,
byte-for-byte. 2.0 writes an ISO 32000-2 file: the %PDF-2.0
header, XMP document metadata always (no trailer /Info — 2.0
deprecates its entries and PDF/A-4 forbids the key), and embedded
fonts required (2.0 removes the standard-14 provision, so a
non-embedded Helvetica is a bet on reader goodwill; register
fonts or use fonts-standard, exactly as pdfA requires). 1.7-based
conformance claims (pdfA 2*/3*, pdfUa) are hard errors under 2.0.
pdf_ua: boolWhen true, the PDF claims PDF/UA-1 conformance. Forces tagged = true.
pdf_ua2: boolWhen true, the PDF claims PDF/UA-2 (ISO 14289-2:2024) conformance —
the PDF 2.0 accessibility standard. Implies pdfVersion: "2.0" and
tagged; contradicts pdfUa (UA-1) and the 1.7 pdfa levels.
Composes with pdfa: "4"/"4f" for archival + accessible.
embedded_data: Option<String>Optional JSON string to embed as an attached file in the PDF.
Enables round-tripping structured data through PDF files.
Forbidden under PDF/A-1/-2 (which allow only PDF/A attachments);
use a PDF/A-3 level ("3b" etc.) or drop the conformance claim.
attachments: Vec<Attachment>Files to embed as PDF attachments (associated files). Under
PDF/A-3 each becomes a conformant associated file: MIME /Subtype
on the stream, /F+/UF+/AFRelationship on the filespec, and
membership in the catalog /AF array. Forbidden under PDF/A-1/-2.
zugferd: Option<ZugferdMeta>Factur-X / ZUGFeRD e-invoice identification (XMP fx: schema).
Container-level only: the caller supplies the invoice XML as an
attachment; this drives the XMP that names it. Requires a PDF/A-3
level and an attachment whose name matches document_file_name.
flatten_forms: boolWhen true, form field values are rendered as static content and no interactive AcroForm widgets are emitted. The resulting PDF has no fillable fields.
certification: Option<CertificationConfig>Digital certification configuration. When set, the rendered PDF is certified with the specified X.509 certificate and RSA private key.