print-format

Installation
SKILL.md

Frappe Print Format Reference

Reference for designing Print Formats in Frappe v14+, aligned with the team's edu_quality conventions: self-contained formats (no letter_head / footer injection), wkhtmltopdf pinned as the PDF engine, dd-MM-yyyy date format, and Rs. instead of to dodge font issues.

Team conventions

These are the rules, not suggestions. New formats follow them; reviews flag deviations.

  1. Do NOT use {{ letter_head }} or {{ footer }}. Every print format is self-contained: header (with logo/QR if needed), body, signature block — all inline in the template. The Letter Head DocType is not part of our print pipeline.
  2. Pin pdf_generator: "wkhtmltopdf" in the Print Format JSON. Don't rely on the system default; v15 introduced Chromium and the team has not adopted it.
  3. Date format: formatdate(doc.field, "dd-MM-yyyy") everywhere. No raw date rendering.
  4. Currency: fmt_money(amt, currency="INR") | replace("₹", "Rs.") or hardcode Rs. directly. The wkhtml fonts we ship don't reliably render ; the team standard is Rs..
  5. Margins 15.0 all around, page_number: "Hide", standard: "Yes", print_format_type: "Jinja".
  6. module set to the module name. Files live at {app}/{module}/print_format/{slug}/{slug}.json.

When to use which type

Frappe supports four ways to define a print format:

Installs
6
GitHub Stars
21
First Seen
May 15, 2026
print-format — unityappsuite/frappe-claude