Skip to content

Print ​

<!-- generated:meta -->

Grupui
Planeresource
Spec structPrintSpec

<!-- /generated:meta -->

Kapan Memakai ​

kind: Print adalah dokumen cetak untuk satu entity, multi-target output.

Kapan memakai Print:

  • Invoice, struk POS, surat jalan, label
  • Output pdf / thermal / dotmatrix / html

Kapan TIDAK pakai Print:

  • Laporan tabular terparameterisasi → kind: Report

Sumber kontrak: docs/spec/frontend/06-page-kinds.md §8.

Contoh Manifest ​

yaml
apiVersion: formspec.dev/v1
kind: Print
metadata: { name: receipt, module: billing }
spec:
  entity: billing.order
  output:
    format: pdf # pdf | thermal | dotmatrix | html
    paper: { size: A5, margin: 12mm }
  header: { logo: true, title: "Receipt {order.number}" }
  body:
    - fields: [number, paid_at, customer.name]
    - child_table: { field: items, columns: [product_id, quantity, price] }
    - totals: { field: total, format: currency }
  footer: { text: "Thank you — {tenant.name}" }

Atribut ​

<!-- generated:attributes -->

AtributTipeWajibContohDeskripsi
publicboolean—trueIf true (default), a route /module/print/<name> is auto-generated.
entitystring✅billing.order
assetstring—Asset is the spec-root-relative asset path for a document whose markup the
bindsPageBinds—Binds is the backend footprint (entities/actions/subscribe) an
templatestring—
outputPrintOutput—
headerPrintHeader—
body[]PrintBodyItem—
footerPrintFooter—

<!-- /generated:attributes -->

Gotchas ​

  • Semua format kecuali html render server-side → hasil ke download tray. html render di browser (window.print() + CSS @media print). dotmatrix belum diimplementasi dan endpoint menolaknya 501.
  • output.print_mode (default preview) — direct menjalankan aksi format sekali begitu record termuat: html membuka dialog cetak peramban, pdf/thermal mengunduh artifact server. Opt-in per manifest; tidak ada parameter URL yang membaliknya.
  • Interpolasi {dotted.path} menembus relasi belongs_to dua hop pada pembacaan single-record ({branch.name}, {branch.parent.name}). Daftar (List) tetap satu hop.
  • asset menggantikan layout deklaratif — bila asset diisi, header/body/footer wajib kosong (formspec validate menolaknya). binds menyatakan footprint entity/action-nya (tipe yang sama dengan PageBinds).
  • Kertas custom custom: { width, height, unit } divalidasi saat formspec validate.
  • Print programatik: ctx.print(entity_id, "receipt") — format per-manifest Print, bukan per-panggilan. → ⏸️ belum diimplementasi (todo).
  • Cross-ref: docs/spec/frontend/06-page-kinds.md §8 · ai_skills/formspec-kinds

Standar terbuka (CC0) dengan implementasi referensi.