2012-11-28 12 views
3

J'utilise ImageMagik pour essayer de convertir le contenu d'un PDF en JPG, mais continuez à obtenir un jpg vide. Je me suis assuré que les perms sont 777 sur tout pour les tests donc je suis un peu perdu comment continuer.Convertir PDF en image JPG avec PHP

Voici le script que je suis en cours d'exécution

<?php 

    exec('convert testfile.pdf output.jpg', $output, $return_var); 

?> 
+0

Vous devrez peut-être spécifier le chemin d'accès complet à convertir. Est-ce que votre entrée et sortie dans le même répertoire que celui où vous exécutez convertir? Vérifiez la variable de sortie $ pour les messages d'erreur? Imagemagick inclut-il les délégués Ghostscript et libjpeg? – fmw42

Répondre

6

Essayez ceci.

<?php 
    $pdf = 'testfile.pdf'; 
    $save = 'output.jpg'; 

    exec('convert "'.$pdf.'" -colorspace RGB -resize 800 "'.$save.'"', $output, $return_var); 

?> 
+1

+1 si vous utilisez 'escapeshellarg' – silly

+0

Cela a fonctionné, merci – tony2

+0

À mes expériences récentes ghostScript est plus rapide que la commande de conversion, essayez cette bibliothèque complète que j'ai écrit qui fait ce super rapide https://github.com/imalhasaranga/PDFBox –

1

Utilisez le chemin absolu du binaire, comme ceci:

exec('/usr/bin/convert testfile.pdf output.jpg', $output, $return_var); 

Mais assurez-vous est en fait sur binaire votre convert/usr/bin vous pouvez vérifier que avec la commande suivante:

which convert

1
convert -normalize yourfile.pdf[0] yourdestination.jpg 
0

ImageMagick utiliser en interne Ghostscript et En général, la conversion de ImageMagick est lent à Ghoastscript comparaison, donc si vous ne souhaitez que sur l'obtention de convertir pdf en images puis commande Ghostscript gs est plus rapide. ci-dessous est un exemple d'enveloppe autour de Ghostscript que j'ai écrit il y a quelques jours.

PDFLib-Php

$pdflib = new ImalH\PDFLib\PDFLib(); 
$pdflib->setPdfPath($pdf_file_path); 
$pdflib->setOutputPath($folder_path_for_images); 
$pdflib->setImageQuality(95); 
$pdflib->setDPI(300); 
$pdflib->setPageRange(1,$pdflib->getNumberOfPages()); 
$pdflib->convert(); 
+0

Non, ce n'est pas PDFBox. L'URL correcte pour PDFBox est https://pdfbox.apache.org/. –

+0

quel est votre problème mate? PDFBox est pour Java et ceci pour php et la question est de savoir comment le faire en PHP pas en Java –

0

Ici vous avez ma solution. Utilisez Imagick directement dans votre code php.

Convertir toutes les pages PDF en JPG

// create Imagick object 
$imagick = new Imagick(); 
// Reads image from PDF 
$imagick->readImage('file.pdf'); 
// Writes an image 
$imagick->writeImages('converted.jpg', false); 

page Convertir PDF spécifique en JPG

// create Imagick object 
$imagick = new Imagick(); 
// Read image from PDF 
$imagick->readImage('test.pdf[0]'); 
// Writes an image 
$imagick->writeImages('converted_page_one.jpg'); 

Une autre façon de traiter ce problème est d'utiliser Spatie/pdf-image bibliothèque .

À la votre!