diff --git a/composer.json b/composer.json index e0aeeef1e..7e9f6bf02 100644 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "pestphp/pest": "^2.28", "phpstan/extension-installer": "^1.3.1", "spatie/laravel-ray": "^1.33", - "spatie/pdf-to-image": "^2.2", + "spatie/pdf-to-image": "^2.2|^3.0", "spatie/pest-plugin-snapshots": "^2.1" }, "conflict": { diff --git a/src/Conversions/ImageGenerators/Pdf.php b/src/Conversions/ImageGenerators/Pdf.php index 9d745ebbc..6206243cc 100644 --- a/src/Conversions/ImageGenerators/Pdf.php +++ b/src/Conversions/ImageGenerators/Pdf.php @@ -2,6 +2,8 @@ namespace Spatie\MediaLibrary\Conversions\ImageGenerators; +use Composer\InstalledVersions; +use Composer\Semver\VersionParser; use Illuminate\Support\Collection; use Imagick; use Spatie\MediaLibrary\Conversions\Conversion; @@ -14,11 +16,20 @@ public function convert(string $file, ?Conversion $conversion = null): string $pageNumber = $conversion ? $conversion->getPdfPageNumber() : 1; - (new \Spatie\PdfToImage\Pdf($file))->setPage($pageNumber)->saveImage($imageFile); + if ($this->usesPdfToImageV3()) { + (new \Spatie\PdfToImage\Pdf($file))->selectPage($pageNumber)->save($imageFile); + } else { + (new \Spatie\PdfToImage\Pdf($file))->setPage($pageNumber)->saveImage($imageFile); + } return $imageFile; } + private function usesPdfToImageV3(): bool + { + return InstalledVersions::satisfies(new VersionParser, 'spatie/pdf-to-image', '^3.0'); + } + public function requirementsAreInstalled(): bool { if (! class_exists(Imagick::class)) {