Version 1.1.2

June 23, 2026

Fixed

  • download() and inline() still returned a blank text/html response on some PHP-FPM/NGINX setups (the 1.1.1 fix was incomplete). Called from a Twig template, setting the response format to RAW bypassed Craft's mid-render end() handling, and setDownloadHeaders() couldn't override the existing text/html Content-Type. Headers are now forced, the format is left untouched, and buffered output is dropped so the body starts at %PDF (#3, #4)
  • WeasyPrint driver produced no PDF — the temp file from tempnam() already existed, so php-weasyprint threw FileAlreadyExistsException. It is now told to overwrite it

Version 1.1.1

June 14, 2026

Fixed

  • download() (and inline() with a filename) returned a blank response on some PHP-FPM/NGINX setups. The 1.1.0 streaming path set an explicit Content-Length header, which collided with the server's transfer handling and truncated the body. The PDF is now streamed without pinning Content-Length, while keeping the sanitized RFC 5987 Content-Disposition header

Version 1.1.0

June 10, 2026

Added

  • cache($duration) builder method — caches the rendered PDF in Craft's data cache, keyed on the resolved content, driver, and all page options
  • driver($handle) builder method — override the configured driver for a single PDF from Twig or PHP
  • craft.paperclip.dataUrl() Twig helper — inline an asset element or file path as a base64 data URL for embedding images and fonts in PDF templates

Fixed

  • inline() and download() now build the Content-Disposition header via Yii's response helpers, escaping quotes/control characters and adding an RFC 5987 fallback for non-ASCII filenames

Version 1.0.1

June 9, 2026

Fixed

  • Cloudflare driver: PDF options were sent under pdf_options instead of pdfOptions, which the Browser Rendering API rejects (#1)
  • Cloudflare driver: standard paper sizes are now sent via the API's format enum instead of explicit width/height; explicit dimensions are still used for custom sizes (#1)
  • Cloudflare driver: external images and fonts now finish loading before the PDF is captured (gotoOptions.waitUntil: networkidle0) (#2)
  • Cloudflare driver: API error responses now surface Cloudflare's error message instead of a generic Guzzle exception

Version 1.0.0

March 9, 2026

Added

  • Five PDF rendering drivers: DOMPDF, Browsershot, Gotenberg, Cloudflare Browser Rendering, WeasyPrint
  • Fluent builder API for PDF generation (html(), url(), view())
  • Output methods: pdf(), base64(), save(), inline(), download(), toAsset()
  • Page configuration: format, orientation, custom paper sizes, margins
  • Header/footer support via HTML strings or Twig templates
  • Environment variable support for all settings
  • Twig integration via craft.paperclip
  • Custom driver registration via EVENT_REGISTER_DRIVERS
  • Control panel settings page with per-driver configuration