it-swarm.com.de

Wie konvertiere ich ein PDF Dokument in ein Vorschaubild in PHP?

Welche Bibliotheken, Erweiterungen usw. wären erforderlich, um einen Teil eines PDF Dokumentes in eine Bilddatei zu rendern?

Die meisten der von mir gefundenen PHP PDF) - Bibliotheken befassen sich mit dem Erstellen von PDF) - Dokumenten, aber gibt es eine einfache Möglichkeit, eine zu rendern? Dokument in ein für den Webgebrauch geeignetes Bildformat umwandeln?

Unsere Umgebung ist ein LAMP-Stack.

190
Mathew Byrne

Sie benötigen ImageMagick und GhostScript

<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

Das [0] meint page 1.

220

Für diejenigen, die ImageMagick aus irgendeinem Grund nicht haben, funktionieren die Gd-Funktionen auch in Verbindung mit GhostScript. Führen Sie den Ghostscript-Befehl mit exec() aus, um ein PDF in JPG zu konvertieren, und bearbeiten Sie die resultierende Datei mit imagecreatefromjpeg().

Führen Sie den Ghostscript-Befehl aus:

exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')

Erstellen Sie zum Bearbeiten ein neues Platzhalterbild, $newimage = imagecreatetruecolor(...), und fügen Sie das aktuelle Bild ein. $image = imagecreatefromjpeg('whatever.jpg') und dann können Sie imagecopyresampled() verwenden, um die Größe oder eine beliebige Anzahl anderer eingebauter Befehle zu ändern, die nicht - imagemagick sind

33
Andrew

Sie können die Seitenzahl auch mit abrufen

$im->getNumberImages();

Anschließend können Sie mit einer Schleife Thumbnails aller Seiten erstellen, z.

'file.pdf['.$x.']'
31
Jason

Verwenden Sie die PHP-Erweiterung Imagick . Verwenden Sie die Funktion setResolution , um die gewünschte Größe des Rasterausgabebilds zu steuern

<?php    
$im = new Imagick();
$im->setResolution(300, 300);     //set the resolution of the resulting jpg
$im->readImage('file.pdf[0]');    //[0] for the first page
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

(Erweiterung auf Paolo Bergantino seine Antwort und Luis Melgratti seinen Kommentar. Sie müssen die Auflösung einstellen, bevor Sie das Bild laden.)

15
Sebastian

Wenn Sie PDF aus einem Blob laden, erhalten Sie die erste Seite anstelle der letzten Seite:

$im->readimageblob($blob);
$im->setiteratorindex(0);
11
jrjohnson

Sie können auch versuchen, das mit imagemagick gelieferte Hilfsprogramm 'convert' auszuführen.

exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
8
Preet Sandhu

Ich bin der Autor von PDFlib , einem GhostScript Wrapper für PHP. Der Vorteil dieser Bibliothek ist, dass sie bereits getestet wurde und keine ImageMagic

Immer sind GhostScript - Befehle schneller als ImageMagic, wenn es um PDF geht. Sie sollten sich entweder für einen GhostScript-Wrapper oder reine GhostScript-Befehle entscheiden

$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();

Ich installiere fertig! Es hat funktioniert!

Sie können base install imagemagick unter Windows ausführen.

Verwenden Sie in php (local) call exec(<command line>) ex:

<?php
$pdf = "filename.pdf";
$info = pathinfo($pdf);
$file_name =  basename($pdf,'.'.$info['extension']);
echo $file_name;
$pdf = "filename.pdf[0]";
exec("convert $pdf convert-img/$file_name.jpg");    
?>

Außerdem können Sie class imagick in PHP-Imagick-Klasse

Danke, alles hat mir geholfen!

3
Duy Khanh

Anders denken, Sie können die folgende Bibliothek verwenden, um PDFs mit Javascript in Bilder umzuwandeln

http://usefulangle.com/post/24/pdf-to-jpeg-png-with-pdfjs

1
jewelhuq

Hier ist eine einfache Klasse, die ich für einige Projekte geschrieben und verwendet habe. Es bricht nur imagick um und schreibt jede Seite auf die Festplatte. Wenn noch jemand nach einem einfachen Weg sucht, kann dieser Link hilfreich sein.

1
user664995