<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>iReceipt PRO blog</title>
    <link>https://ireceipt.pro/blog</link>
    <atom:link href="https://ireceipt.pro/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <description>Guides and articles on generating PDF and image documents from templates: getting started with the iReceipt PRO API, and longer pieces on HTML-to-PDF rendering.</description>
    <language>en-us</language>
    <lastBuildDate>Sun, 08 Nov 2026 12:00:00 +0000</lastBuildDate>
    <item>
      <title>Generate documents with Claude: MCP and Claude Code</title>
      <link>https://ireceipt.pro/blog/documents-from-claude</link>
      <guid isPermaLink="true">https://ireceipt.pro/blog/documents-from-claude</guid>
      <pubDate>Sun, 08 Nov 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
      <category>MCP</category>
      <category>Claude</category>
      <category>Claude Code</category>
      <category>API</category>
    </item>
    <item>
      <title>Sylius invoices still render through wkhtmltopdf. Here is the seam to replace</title>
      <link>https://ireceipt.pro/sylius-invoice-pdf</link>
      <guid isPermaLink="true">https://ireceipt.pro/sylius-invoice-pdf</guid>
      <pubDate>Thu, 05 Nov 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>DocRaptor or iReceipt PRO: one converts documents, the other fills templates</title>
      <link>https://ireceipt.pro/docraptor-vs-ireceipt-pro</link>
      <guid isPermaLink="true">https://ireceipt.pro/docraptor-vs-ireceipt-pro</guid>
      <pubDate>Wed, 04 Nov 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Running Puppeteer yourself, or calling an API: the honest build-vs-buy</title>
      <link>https://ireceipt.pro/puppeteer-vs-rendering-api</link>
      <guid isPermaLink="true">https://ireceipt.pro/puppeteer-vs-rendering-api</guid>
      <pubDate>Tue, 03 Nov 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Migrating off wkhtmltopdf: what actually breaks, and what to move to</title>
      <link>https://ireceipt.pro/wkhtmltopdf-migration</link>
      <guid isPermaLink="true">https://ireceipt.pro/wkhtmltopdf-migration</guid>
      <pubDate>Sun, 01 Nov 2026 12:00:00 +0000</pubDate>
      <description>Your template survives, because QtWebKit never let it get clever. The four behaviours that do not carry across, and how to pick a destination.</description>
    </item>
    <item>
      <title>Authentication: one header, and four things that look like a bad key</title>
      <link>https://ireceipt.pro/authentication</link>
      <guid isPermaLink="true">https://ireceipt.pro/authentication</guid>
      <pubDate>Wed, 28 Oct 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>When somebody else picks the format: one template per jurisdiction, not per customer</title>
      <link>https://ireceipt.pro/one-template-per-jurisdiction</link>
      <guid isPermaLink="true">https://ireceipt.pro/one-template-per-jurisdiction</guid>
      <pubDate>Tue, 27 Oct 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Errors and retries: what the API sends back when it isn't sending a file</title>
      <link>https://ireceipt.pro/errors-and-retries</link>
      <guid isPermaLink="true">https://ireceipt.pro/errors-and-retries</guid>
      <pubDate>Mon, 26 Oct 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>What a Shopware document renderer is actually handed</title>
      <link>https://ireceipt.pro/shopware-document-renderer</link>
      <guid isPermaLink="true">https://ireceipt.pro/shopware-document-renderer</guid>
      <pubDate>Sun, 25 Oct 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Quickstart: your first PDF in five minutes</title>
      <link>https://ireceipt.pro/quickstart</link>
      <guid isPermaLink="true">https://ireceipt.pro/quickstart</guid>
      <pubDate>Sun, 11 Oct 2026 12:00:00 +0000</pubDate>
      <description>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.</description>
    </item>
  </channel>
</rss>
