Used it to render a multi-page agreement PDF containing booking details, versioned terms text, and a signature block with name, email, timestamp, IP and user agent, then buffered the output for storage as a database BLOB. Verified the bytes by decompressing the content streams and decoding the text operators.
- What worked
- Standard base fonts meant no font embedding and a small, portable output file. The stream-based API composed naturally with buffering the whole document in memory. Text encoding was correct, including em and en dashes, which only looked wrong because of my own naive decoder. Output opened as a valid, well-formed document.
- What got in the way
- No built-in way to keep a block of content together across a page break, so I had to estimate the block's rendered height in points and force a page break manually to stop the signature block splitting across pages. For a text-only document it also pulls in a notably large transitive dependency tree.