Speichern Sie Jede PDF-Seite ein Bild Mit Imagick

Habe ich folgende php-Funktion, die die Konvertierung einer lokalen PDF-Datei in Bilder. Kurz gesagt, ich möchte jede PDF-Seite umgewandelt werden in ein separates Bild.

Die Funktion wandelt das PDF in ein Bild - aber nur auf der letzten Seite. Ich will jeder Seite der PDF-Datei konvertiert werden, um ein Bild und nummeriert. Nicht nur auf der letzten Seite der PDF-Datei.

Derzeit ist diese Funktion wandelt die letzten Seite example.pdf zu example-0.jpg. Problem ich bin mir sicher, dass liegt in der for Methode. Was bin ich?

$file_name = 'example.pdf'; //using just for this example, I pull $file_name from another function

function _create_preview_images($file_name) {

    //Strip document extension
    $file_name = basename($file_name, '.pdf');

    //Convert this document
    //Each page to single image
    $img = new imagick('uploads/'.$file_name.'.pdf');

    //Set background color and flatten
    //Prevents black background on objects with transparency
    $img->setImageBackgroundColor('white');
    $img = $img->flattenImages();

    //Set image resolution
    //Determine num of pages
    $img->setResolution(300,300);
    $num_pages = $img->getNumberImages();

    //Compress Image Quality
    $img->setImageCompressionQuality(100);

    //Convert PDF pages to images
    for($i = 0;$i < $num_pages; $i++) {         

        //Set iterator postion
        $img->setIteratorIndex($i);

        //Set image format
        $img->setImageFormat('jpeg');

        //Write Images to temp 'upload' folder     
        $img->writeImage('uploads/'.$file_name.'-'.$i.'.jpg');
    }

    $img->destroy();
}
  • Ich weiß nicht, ob sich etwas geändert hat, aber letztes mal war ich um die Generierung von pdf thumbnail es war $img = new imagick('file.pdf[0]'); nur die erste Seite.
  • Ja...ich bin mir dessen bewusst, dass. Aber ich will nicht die ersten, mittleren oder letzten Seite - ich will, dass ALLE Seiten konvertiert in einzelne Bilder.
  • Ich weiß, was ich zu sagen versuche ist, dass PDF nicht gut funktionieren, wie andere multi-image-Formate, so dass Sie wahrscheinlich haben, um die Anzahl der Seiten und in der Schleife erstellen, die neue imagick-Instanzen anfügen [$i] Dateiname.
  • Hast du dir überhaupt den code...das ist genau das, was ich zu tun versuche...
  • Diese Methode funktioniert nicht mit einem multi-page PDF. $img->flattenImages(); führt alle Seiten auf der jeweils anderen und exportiert die Datei als einzelnes Bild, unabhängig von der Anzahl der Seiten. Für eine Lösung für multi-Seite PDF-Dateien mit schwarzem hintergrund stackoverflow.com/q/26793063/2028547
InformationsquelleAutor Mike Barwick | 2013-12-15
Schreibe einen Kommentar