Pipeline diagram: backend data flows through a document engine and a tested layout into business documents

Document Generation Is Backend Infrastructure

Most backend systems eventually need to produce documents: invoices, reports, offers, letters, CVs, certificates, export packs. The business treats those documents as serious output. They are sent to customers, attached to applications, used by operations teams, and archived for compliance. The code that produces them often does not get the same respect. This is the companion to What Drove Me to Build GraphCompose — that post was the personal story of how GraphCompose started. This one is about a claim I now believe after living inside that code: document generation is backend infrastructure, and it pays off when you build it like infrastructure instead of like a one-off script. ...

15 June 2026 · 4 min · Artem Demchyshyn
A developer connecting layout fragments into finished document pages

What Drove Me to Build GraphCompose

It started with a simple idea: I wanted to create my own CV in pure Java. No big framework. No designer tool. No attempt to overengineer everything before I even had one page. Just Java, PDFBox, and the confidence every developer has right before a supposedly small task becomes a real project. At first I thought: how hard can it be? Very quickly I found myself inside the classic PDF generation loop: ...

14 June 2026 · 9 min · Artem Demchyshyn
A developer looking at layered document layout plans

Lessons from Building a Java PDF Engine

Building a PDF engine in Java is a useful way to meet a lot of hidden complexity at once. Text measurement, pagination, styling, rendering order, reusable components, API design, testing, and performance all become visible very quickly. This is not a tutorial about drawing text into a PDF. It is a reflection on what I learned while building the layout engine behind GraphCompose: the hard part is rarely one isolated algorithm. The hard part is making many small rules work together until the final document feels reliable. ...

14 June 2026 · 7 min · Artem Demchyshyn