Dieses Paket bietet eine benutzerfreundliche Klasse zum Konvertieren einer PDF-Datei in ein oder mehrere Bilder.
Sie sollten Imagick und Ghostscript installiert haben. Weitere Informationen finden Sie unter Probleme mit Ghostscript- und Imagick-Problemen.
Das Paket kann über Composer installiert werden und erfordert PHP 8.2+:
composer require spatie/pdf-to-image
Wenn Sie PHP < 8.2 verwenden, verwenden Sie Version 2.0 dieses Pakets.
Das Konvertieren einer PDF-Datei in ein Bild ist einfach.
$ pdf = new Spatie PdfToImage Pdf ( $ pathToPdf );
$ pdf -> save ( $ pathToWhereImageShouldBeStored );
Wenn der Dateiname, den Sie an saveImage
übergeben, die Erweiterungen jpg
, jpeg
, png
oder webp
hat, wird das Bild in diesem Format gespeichert; andernfalls ist das Ausgabeformat jpg
.
Die Methode save()
gibt ein Array mit den Dateinamen der gespeicherten Bilder zurück, wenn mehrere Bilder gespeichert werden, andernfalls gibt sie einen String mit dem Pfad zum gespeicherten Bild zurück.
Ermitteln Sie die Gesamtzahl der Seiten im PDF:
/** @var int $numberOfPages */
$ numberOfPages = $ pdf -> pageCount ();
Überprüfen Sie, ob ein Dateityp ein unterstütztes Ausgabeformat ist:
/** @var bool $isSupported */
$ isSupported = $ pdf -> isValidOutputFormat ( ' jpg ' );
Standardmäßig wird nur die erste Seite der PDF-Datei gerendert. Um eine andere Seite zu rendern, rufen Sie die Methode selectPage()
auf:
$ pdf -> selectPage ( 2 )
-> save ( $ pathToWhereImageShouldBeStored ); //saves the second page
Oder wählen Sie mehrere Seiten mit der Methode selectPages()
aus:
$ pdf -> selectPages ( 2 , 4 , 5 )
-> save ( $ directoryToWhereImageShouldBeStored ); //saves the 2nd, 4th and 5th pages
Ändern Sie das Ausgabeformat:
$ pdf -> format ( Spatie PdfToImage Enums OutputFormat :: Webp )
-> save ( $ pathToWhereImageShouldBeStored ); //the saved image will be in webp format
Stellen Sie die Ausgabequalität (die Komprimierungsqualität) von 0 bis 100 ein:
$ pdf -> quality ( 90 ) // set an output quality of 90 %
-> save ( $ pathToWhereImageShouldBeStored );
Stellen Sie die Ausgabeauflösung DPI ein:
$ pdf -> resolution ( 300 ) // resolution of 300 dpi
-> save ( $ pathToWhereImageShouldBeStored );
Geben Sie die Miniaturbildgröße des Ausgabebilds an:
$ pdf
-> thumbnailSize ( 400 ) // set thumbnail width to 400 px; height is calculated automatically
-> save ( $ pathToWhereImageShouldBeStored );
// or:
$ pdf
-> thumbnailSize ( 400 , 300 ) // set thumbnail width to 400 px and the height to 300 px
-> save ( $ pathToWhereImageShouldBeStored );
Legen Sie die Breite des Ausgabebilds fest:
$ pdf -> size ( 400 ) // set the width to 400 px; height is calculated automatically
-> save ( $ pathToWhereImageShouldBeStored );
Legen Sie die Breite und Höhe des Ausgabebilds fest:
$ pdf -> size ( 400 , 300 ) // set the width to 400 px and the height to 300 px
-> save ( $ pathToWhereImageShouldBeStored );
Ermitteln Sie die Abmessungen des PDF. Damit lässt sich feststellen, ob das PDF extrem hochauflösend ist.
/** @var SpatiePdfToImageDTOsPageSize $size */
$ size = $ pdf -> getSize ();
$ width = $ size -> width ;
$ height = $ size -> height ;
Notiz
$directoryToWhereImagesShouldBeStored muss ein vorhandenes Verzeichnis sein
Alle Seiten als Bilder speichern:
$ pdf -> saveAllPages ( $ directoryToWhereImagesShouldBeStored );
Legen Sie die Methode zum Zusammenführen von Ebenen für Imagick fest:
$ pdf -> layerMethod ( Spatie PdfToImage Enums LayerMethod :: Merge );
// or disable layer merging:
$ pdf -> layerMethod ( Spatie PdfToImage Enums LayerMethod :: None );
Legen Sie die Hintergrundfarbe des Ausgabebildes fest:
$ pdf -> backgroundColor ( ' white ' ) // simple text for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
$ pdf -> backgroundColor ( ' #fff ' ) // code for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
$ pdf -> backgroundColor ( ' rgb(255,255,255) ' ) // rgb for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
Dieses Paket verwendet Ghostscript über Imagick. Damit dies funktioniert, sollte der Ghostscripts gs
-Befehl über den PHP-Prozess zugänglich sein. Für den PHP-CLI-Prozess (z. B. die asynchronen Jobs, Befehle usw. von Laravel) ist dies normalerweise bereits der Fall.
Bei PHP auf FPM (z. B. wenn dieses Paket „im Browser“ ausgeführt wird) könnte jedoch das folgende Problem auftreten:
Uncaught ImagickException: FailedToExecuteCommand 'gs'
Dies kann behoben werden, indem Sie die folgende Zeile am Ende Ihrer php-fpm.conf
Datei hinzufügen und PHP FPM neu starten. Wenn Sie nicht sicher sind, wo sich die Datei php-fpm.conf
befindet, können Sie phpinfo()
überprüfen. Wenn Sie Laravel Valet verwenden, befindet sich die Datei php-fpm.conf
im Verzeichnis /usr/local/etc/php/YOUR-PHP-VERSION
.
env[PATH] = /usr/local/bin:/usr/bin:/bin
Dadurch wird PHP FPM angewiesen, an den richtigen Stellen nach der gs
Binärdatei zu suchen.
Wenn Sie eine Fehlermeldung mit der Meldung erhalten attempt to perform an operation not allowed by the security policy 'PDF'
, müssen Sie möglicherweise die folgende Zeile zu Ihrer Datei policy.xml
hinzufügen. Diese Datei befindet sich normalerweise in /etc/ImageMagick-[VERSION]/policy.xml
, z. B. /etc/ImageMagick-7/policy.xml
.
< policy domain = " coder " rights = " read | write " pattern = " PDF " />
spatie/pdf-to-image
verwendet das PEST-Framework für Unit-Tests. Sie können mit dem folgenden Befehl ausgeführt werden:
./vendor/bin/pest
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
Weitere Informationen finden Sie unter BEITRAGEN.
Bitte lesen Sie unsere Sicherheitsrichtlinie zur Meldung von Sicherheitslücken.
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.