Home / Blog

Blog

Guides to the API, and longer articles on turning templates and data into PDF files and images.

RSS feed

Start here

Articles

  1. 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.

    • MCP
    • Claude
    • Claude Code
    • API
  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.