Version 5.2.1
September 1, 2026
Added
- New "Status" panel on the settings page, which converts a test PDF and reports what's missing (#38)
Fixed
- Failed transforms are now logged at error level, so they reach
web.loginstead of being discarded (#38) - Volume settings are now stored as UIDs, so they survive deploys between environments (#38)
- Output Image Volume is now required, and no longer shows the first volume as though it were saved (#38)
- A failed
saveElement()call no longer returnsnullsilently render()andpdfToImage()now catch and log every exception
Version 5.2.0
February 22, 2026
Added
- New "Output Destination" setting to control where generated images are placed: Volume Root (default), Subfolder, or Mirror Source Path (#4)
- New "Subfolder Name" setting for specifying a static subfolder when using the Subfolder destination mode
- New "Auto-Transform Source Volumes" setting to restrict which volumes trigger auto-transform on PDF upload (#30)
Version 5.1.0
February 20, 2026
Added
- New "Clean Filenames" setting to strip the
.pdfextension from generated filenames (e.g.document-123.jpginstead ofdocument.pdf-123.jpg). Disabled by default for backward compatibility. - New "Colour Space" setting with sRGB (default), RGB, CMYK, Grayscale and None options. Fixes inverted colours on CMYK PDFs (#24)
Fixed
- PDF files are now read via Craft's filesystem API instead of HTTP requests, fixing SSRF risk
getVolumeOptions()now usesCraft::$app->getVolumes()instead of instantiating an unconfiguredVolumesservice- Replaced predictable
mt_randtemp filenames withuniqidto avoid collisions - Asset save event listener now only fires for assets instead of all element types
- Temporary PDF files are now cleaned up after conversion to prevent disk space leaks
render()now re-creates the image asset if the file exists on disk but the asset record is missingpdfToImage()now returnsnullexplicitly on failure instead of returning voidurl()Twig variable now returnsnullexplicitly when no render is available- Added
?Assettype hints and null guards torender()andurl()methods - Removed empty CSS/JS asset bundle files that caused unnecessary HTTP requests
- File existence check now uses volume path instead of filesystem path, fixing duplicate generation on volumes with subpaths (#25)
- Auto-transform on upload no longer crashes when the asset file is not yet available, fixing corrupt image headers (#23)
- Added null checks for image volume to prevent "getFs() on null" errors when volume is misconfigured (#18)
Changed
imageFormatsetting is now validated to only allowjpgorpngvalues
Version 5.0.1
May 30, 2024
Changed
- Icon to a new shiny (literally) icon
Version 5.0.0
May 30, 2024
Changed
- Craft 5 compatibility
Version 2.0.1
November 14, 2022
Added
- Amazon S3 Compatability
- Servd Compatability (Thanks @mattgrayisok / @servd)
- New
.render()method that outputs the transformed image as a Craft asset (No longer just the URL 🎉)
Version 2.0.0
June 17, 2022
Changed
- Now requires PHP ^8.0.0.
- Now requires Craft CMS ^4.0.0
Version 1.0.6
April 13, 2022
Fixed
- Updated Composer dependencies
- Updated Composer to work with Composer 2
- Added PHP 8.0 support with spatie/pdf-to-image package
Version 1.0.5
November 11, 2020
Fixed
- Source path for asset bundle
Version 1.0.4
November 6, 2020
Fixed
- Case issue on settings Assets Bundle
Version 1.0.3
October 29, 2020
Fixed
- Composer 2 Compatibility
Version 1.0.2
November 15, 2018
Fixed
- Issue where any element that was saved was throwing an error because it wasn't a PDF.
Version 1.0.1
November 14, 2018
Added
- PDF's are now transformed when any .pdf file is uploaded to the CMS. Speeding up the .url() method
- Transformed PDF's are now indexed in the Asset Volume specified in settings
Version 1.0.0
October 25, 2018
Added
- Initial release