What Brevier prints, and when

Every feature on this page carries its status. Available means it is in the code today. In 1.0 means it ships with the first release. Planned means it is decided but not scheduled.

Write the template

  • HTML and CSS templates

    Status: Available

    The page is HTML with CSS. No proprietary format, no coordinate calculations, no design software needed.

  • Markdown for static content documents

    Status: Available

    Write a document in Markdown, for example a book or an article. Brevier turns it into a PDF directly. brevier compile writes the HTML, when you want to go on in HTML.

  • Data binding

    Status: Available

    Handlebars syntax binds JSON into the HTML: values, loops and conditions. Deliberately we do not use any other template engine, just the Handlebars preprocessor.

  • Money, date and number formats

    Status: Available

    Amounts and dates print in German format, 1.234,50 € and 25.09.2026, whatever the language of the server.

  • The visible middle

    Status: Available

    --debug writes the exact HTML and CSS the engine received, and brevier html renders a web view of the same document.

  • Validate HTML templates against a JSON schema

    Status: Available

    A misspelt field fails the check before anything prints. The error names the field and the line of the template.

Print the page

  • German and English hyphenation

    Status: Available

    Compound words break at their joins: Berufsunfähigkeits-versicherung, not Beruf-sunfähigkeit. At most 3 lines in a row end in a hyphen. Your code does not have to care about that.

  • Field types and a data cleaner

    Status: Available

    Each field is text, multiline, rich or raw. Stray <br/>, &nbsp; and double spaces are cleaned per field. Your objects don't have to be clean. We understand your need for paragraphs, not lines.

  • Tables that span pages

    Status: Available

    Declared column widths and a header row that repeats on every page. You do not have to worry about tables splitting across pages. We do it for you, needing only the JSON data.

  • Übertrag - Running totals

    Status: Available

    The running total is carried to the bottom of each page and to the top of the next.

  • Headers, footers and page counters

    Status: Available

    Corporate identity, logos, page nr. of total pages, in one editable block, on every page. Set and reuse.

  • Contracts and fine print

    Status: Available

    Numbered clauses, a table of contents with page numbers, and small print that stays readable. No heading is left alone at the bottom of a page. CSS page-break rules keep headings and clauses together across pages.

  • DIN 5008 letters and invoices

    Status: Available

    The address sits in the envelope window, with fold marks and the reference line where German offices expect them.

  • One company stylesheet

    Status: Available

    Logo, colours and fonts are plain CSS in one company file. Templates link or import it, so one change restyles every document.

  • PDF/A-3b for archiving

    Status: Available

    Every PDF is PDF/A-3b and passes veraPDF. Your documents embed their used fonts and colors, so they can print reliably for decades to come.

  • ZUGFeRD and Factur-X e-invoices

    Status: Available

    The invoice XML is bound from the same data as the page, so the two cannot disagree.

Bring what you have

  • Start from your classes

    Status: Available

    The Java, Python, TypeScript and .NET clients write a JSON Schema from your own classes. brevier template turns it into a starting template and sample data.

    JavaPythonC#TypeScript
  • Import JasperReports and BIRT

    Status: Available

    .jrxml files (JasperReports 6) and BIRT .rptdesign files become an HTML template, a stylesheet and a JSON Schema. The import converts text fields, formats, totals, groups, images and borders. It lists every element it cannot convert, with its line.

  • Import Word

    Status: Available

    .docx files and their merge fields become an HTML template, a stylesheet and a JSON Schema. The import reads the fields of XDocReport, docx4j, docxtpl, docxtemplater and DocxTemplater.

  • Replace your render call

    Status: Available

    For JasperReports and Word services in Java, Python, TypeScript and C#. Step 1 keeps your data code and changes the call. Step 2 passes your objects directly.

  • Import AcroForm PDFs

    Status: In 1.0

    The forms iText fills today become templates, with their fields as a schema.

Run it in your pipeline

  • Brevier lint

    Status: Available

    Finds overflowing text, squeezed columns, hyphen runs and missing glyphs, each pointing at a line of the HTML. Runs in CI.

  • Three ways to install

    Status: Available

    pip, a Docker image, or a one-line script for Linux, macOS and Windows.

  • Brevier preview

    Status: Available

    Re-renders in the browser every time you save.

  • Brevier serve

    Status: Available

    Runs the engine as a service for your applications.