Start here
-
Quickstart: your first PDF in five minutes
Install the SDK, call one method with a template ID and a JSON object, and write the PDF to disk. A working file before you build any integration code.
-
Authentication: one header, and four things that look like a bad key
Send the key in the Authorization header or as ?token=. X-Api-Key and ?api_key= are not read. Which check answers first, what 401, 403, 400 and 404 mean, and what CORS and allowed domains do and do not protect.
-
Errors and retries: what the API sends back when it isn't sending a file
Success is 201 with file bytes. Every failure is a small JSON object except one, which is HTML - and the SDK retries only the failures a retry could fix.
Articles
-
Generate documents with Claude: MCP and Claude Code
Generate PDFs from your templates in Claude: an MCP connector you approve once, or a network secret so Claude Code in the cloud calls the API without your key.
-
Sylius invoices still render through wkhtmltopdf. Here is the seam to replace
sylius/invoicing-plugin v2.3.0 still reaches a wkhtmltopdf binary through knp-snappy-bundle. The plugin has exactly one clean seam, InvoicePdfFileGeneratorInterface, and it is handed the invoice entity rather than HTML. What you replace it with depends on whether you want to keep your Twig template.
-
DocRaptor or iReceipt PRO: one converts documents, the other fills templates
DocRaptor takes HTML at request time and renders it with Prince. iReceipt PRO takes a template id and JSON. The choice is decided by where your layout has to live, not by a feature table — and this page says plainly where DocRaptor wins.
-
Running Puppeteer yourself, or calling an API: the honest build-vs-buy
The twelve lines are the cheap part. An inventory of what owning a renderer actually costs - binary, container, concurrency, version treadmill - and the one question that decides it.
-
Migrating off wkhtmltopdf: what actually breaks, and what to move to
Your template survives, because QtWebKit never let it get clever. The four behaviours that do not carry across, and how to pick a destination.
-
When somebody else picks the format: one template per jurisdiction, not per customer
When the recipient sets the document format, the layout count is a rate rather than a number and presentation becomes correctness. Four ways to build it, and the one most products ship first.
-
What a Shopware document renderer is actually handed
Every published example of a Shopware format renderer declares a dependency on html, so everyone assumes the slot takes HTML. The abstract class defaults to no dependency and RenderInput carries the order. That changes what you can build in it.