Brevier Die Full-Stack-PDF-Bibliothek
Brevier erzeugt PDF-Dokumente aus den einfachsten Web-Werkzeugen: HTML, CSS, JSON und Handlebars. Vorlagen können Markdown sein.
pip install brevierrechnung/rechnung.html
<!DOCTYPE html>
<html lang="de">
<head>
<title>Rechnung</title>
</head>
<body>
<p>{{ firma.name }}</p>
<h1>Rechnung</h1>
<table>
<tr><th>Text</th><th>Betrag</th></tr>
{{#each rechnung.positionen}}
<tr>
<td>{{ text }}</td>
<td>{{ betrag | money }}</td>
</tr>
{{/each}}
</table>
</body>
</html>rechnung/rechnung.css
@page {
size: A4;
margin: 20mm;
}
body {
font: 10pt sans-serif;
color: #16181c;
}
.absender { font-size: 7pt; }
address { margin: 2mm 0 15mm; }
h1 { font-size: 14pt; }
table { width: 100%; }
th, td { padding: 1.5mm 0; }
td:last-child {
text-align: right;
}rechnung/rechnung.json
{
"firma": {
"name": "Muster AG",
"ort": "Berlin"
},
"kunde": {
"name": "Erika M.",
"ort": "Köln"
},
"rechnung": {
"nr": "R-2026-01",
"positionen": [
{
"text": "Beratung",
"betrag": 84.2
}
]
}
}rechnung/rechnung.schema.json
{
"type": "object",
"properties": {
"firma": {
"type": "object"
},
"kunde": {
"type": "object"
},
"rechnung": {
"type": "object",
"properties": {
"nr": {
"type": "string"
},
"positionen": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"betrag": {
"type": "number"
}
}
}
}
}
}
}
}rechnung/rechnung.pdf

rechnung/rechnung.md
---
style: rechnung.css
---
{{ firma.name }}
An: {{ kunde.name }}
# Rechnung
| Text | Betrag |
| --- | ---: |
{{#each rechnung.positionen}}
| {{ text }} | {{ betrag | money }} |
{{/each}}rechnung/rechnung.css
@page {
size: A4;
margin: 20mm;
}
body {
font: 10pt sans-serif;
color: #16181c;
}
.absender { font-size: 7pt; }
address { margin: 2mm 0 15mm; }
h1 { font-size: 14pt; }
table { width: 100%; }
th, td { padding: 1.5mm 0; }
td:last-child {
text-align: right;
}rechnung/rechnung.json
{
"firma": {
"name": "Muster AG",
"ort": "Berlin"
},
"kunde": {
"name": "Erika M.",
"ort": "Köln"
},
"rechnung": {
"nr": "R-2026-01",
"positionen": [
{
"text": "Beratung",
"betrag": 84.2
}
]
}
}src/main/java/RechnungService.java
import dev.brevier.Brevier;
public class RechnungService {
public byte[] pdf(
Firma f,
Rechnung r,
Kunde k
) {
return Brevier
.template("rechnung")
.render(f, r, k);
}
}app/rechnung.py
import brevier
def pdf(
firma, rechnung, kunde
) -> bytes:
return brevier.template("rechnung").render(
firma, rechnung, kunde
)Alles, was ein Geschäftsdokument braucht
Brevier kümmert sich um die Druckregeln. Sie kümmern sich um Ihre Daten.
Vorlagen in HTML und CSS
Die Seite schreiben Sie in HTML und CSS.
Markdown für statische Inhalte
Aus einer Markdown-Datei wird ein PDF.
Datenbindung
Ihre JSON-Daten füllen das HTML.
HTML-Vorlagen gegen ein JSON-Schema validieren
Ein falsches Feld fällt vor dem Druck auf.
Eine Vorlage aus Ihren Klassen erzeugen
Aus Ihren Klassen entsteht eine erste Vorlage.
Import aus JasperReports und BIRT
Berichte aus JasperReports und BIRT übernehmen.
Import aus Word
.docx-Dateien mit Feldern übernehmen.
Aufruf ersetzen
Ihr alter Render-Aufruf wird durch Brevier ersetzt.
Das HTML und CSS ansehen
Sie sehen genau das HTML und CSS der Engine.
Deutsche und englische Silbentrennung
Richtige Silbentrennung auf Deutsch und Englisch.
Tabellen über mehrere Seiten
Tabellen mit Kopfzeile auf jeder Seite.
Übertrag
Laufende Summen von Seite zu Seite.
Kopf- und Fußzeilen mit Seitenzähler
Kopf- und Fußzeilen mit Seitenzahlen auf jeder Seite.
Verträge und Kleingedrucktes
Nummerierte Klauseln und ein Inhaltsverzeichnis.
Alle Funktionen, jeweils mit Status
Zur Funktionsliste
Ein Brevier ist ein Gebetbuch – das kleine Handbuch, das man immer griffbereit hat und jeden Tag nutzt. Brevier soll Ihre verlässliche Bibliothek für die programmatische PDF-Erzeugung sein, genauso lässt sich damit aber auch PDF-Rendering einfach in Ihre Web-Anwendungen einbinden. Nachdem ich mich jahrelang mit umständlichen PDF-Tools herumschlagen musste, habe ich Brevier gebaut, um die Dokumentenerzeugung in bestehendem Code intuitiv, einfach und nahtlos zu gestalten.
Liviu IonesiEntwickler von BrevierBaut auf dem auf, was Sie schon kennen
HTML, CSS, JSON und Ihr eigener Code. Nichts Neues zu lernen.
HTML für die Seite
Die Vorlage ist eine HTML-Seite. Handlebars verbindet sie mit Ihren Daten: Werte, Schleifen und Bedingungen.
developer.mozilla.orgCSS für die Gestaltung
CSS bestimmt Schriften und Farben und auch das Seitenlayout: Format, Ränder, Kopf- und Fußzeilen, Seitenzahlen.
CSS @pageJSON für die Daten
Ihre Objekte werden als JSON serialisiert. Ein JSON Schema validiert jedes Feld vor dem Rendern.
json-schema.orgIhr eigener Code
Übergeben Sie die Objekte, die Sie schon haben, in Java, Python, .NET und TypeScript. Brevier schreibt sie in jeder Sprache gleich als JSON. Aus Java- und Python-Klassen schreibt es auch ein JSON Schema und eine erste Vorlage.
JavaPythonC#TypeScript
Überall installieren
Installieren Sie Brevier mit pip, einem Einzeiler-Skript oder Docker. Es läuft unter Linux, macOS und Windows.
Aus Ihrer Sprache aufrufen- pip
- Linux und macOS
- Windows
- Docker