Skip to content

export: PDF / print document generation — re-planned for v18, superseding the #1301 NOT_PLANNED closure #8346

Description

@os-zhuang

Status

Maintainer decision (2026-08-13): PDF document generation is re-planned and scheduled for v18. This supersedes the #1301NOT_PLANNED closure (2026-06-27).

Ruling history (what this issue reverses)

Re-introducing the capability therefore has a spec-side unwind cost, not just a renderer cost: the retired enum value, its error-map prescription, and the corresponding removal-registry entry all need to be walked back deliberately (and the migration story for metadata authored against 17 decided).

Why it came back

Solution scoping for an overseas port/terminal customer (2026-08) — and previously the template gap audit (docs/PLATFORM_GAPS_FROM_TEMPLATES.md gap #9, the origin of #1301) — keeps hitting the same wall: statutory / paper deliverables are non-negotiable for billing- and government-adjacent customers. Concrete artifacts in the port scenario alone: invoices, weighbridge tickets, delivery orders, official correspondence, monthly operation reports. Browser Ctrl+P (Console chrome, no pagination) and per-project Puppeteer side-services are the only workarounds today, and every implementation reinvents the latter.

Suggested scope (starting point: the M1–M4 sketch from #1301)

  1. M1 — declarative print templates in spec (header/footer, pagination, tables, related-record blocks).
  2. M2 — render engine (headless Chromium HTML→PDF), output downloadable or committed to storage (sys_file).
  3. M3 — row/detail action integration ("Export PDF", template picker).
  4. M4 — bulk export (merged PDF / zip) — note the aggregate bulk-action dispatch (execution: 'aggregate', objectui#3139) already anticipates "merged PDF, batch print" as its example payload, so the action surface is partly in place.
  5. Spec unwind: restore a 'pdf' (or successor) export format value and retire the spec: ListView.exportOptions is typed as a bare array, but the only renderer reads exportOptions.formats #8010 retirement prescription cleanly.

Related

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions