Drop a .docx here. It is posted to a Cloudflare Worker, which opens the
package, resolves the style cascade, paginates it and writes a PDF — no headless Chromium,
no LibreOffice, no container. The whole renderer is TypeScript that runs where a Worker
runs.
Nothing is stored. The bytes are rendered in the request and the PDF comes straight back.
Characters dropped counts what the PDF's WinAnsi encoding could not represent. It is reported rather than hidden, because a renderer that quietly loses a character is worse than one that will not start.
Pictures drawn counts what was embedded. JPEG and PNG go in whole — the PDF filters are those formats — and GIF, BMP and EMF are refused by name and counted, so a missing seal is visible rather than silent.
The page count is the paginator's, and it is the same number the editor shows for the same document. That is the point: one layout decided both.