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: AvailableThe page is HTML with CSS. No proprietary format, no coordinate calculations, no design software needed.
Markdown for static content documents
Status: AvailableWrite 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: AvailableHandlebars 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: AvailableAmounts 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: AvailableA 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: AvailableCompound 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: AvailableEach field is text, multiline, rich or raw. Stray <br/>, 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: AvailableDeclared 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: AvailableThe running total is carried to the bottom of each page and to the top of the next.
Headers, footers and page counters
Status: AvailableCorporate identity, logos, page nr. of total pages, in one editable block, on every page. Set and reuse.
Contracts and fine print
Status: AvailableNumbered 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: AvailableThe address sits in the envelope window, with fold marks and the reference line where German offices expect them.
One company stylesheet
Status: AvailableLogo, 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: AvailableEvery 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: AvailableThe 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: AvailableThe 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#TypeScriptImport 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: AvailableFor 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.0The forms iText fills today become templates, with their fields as a schema.
Run it in your pipeline
Brevier lint
Status: AvailableFinds 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: Availablepip, a Docker image, or a one-line script for Linux, macOS and Windows.
Brevier preview
Status: AvailableRe-renders in the browser every time you save.
Brevier serve
Status: AvailableRuns the engine as a service for your applications.