J'utilise un petit script pour convertir PDF en JPG. Cela fonctionne mais la qualité est très mauvaise.
Le scénario:
$im = new imagick( 'document.pdf[ 0]' );
$im->setImageColorspace(255);
$im->setResolution(300, 300);
$im->setCompressionQuality(95);
$im->setImageFormat('jpeg');
$im->writeImage('thumb.jpg');
$im->clear();
$im->destroy();
Une dernière chose, je veux conserver la taille originale du PDF, mais la conversion réduit la taille du JPG.
Cela peut être fait en utilisant setResolution
, mais vous devez le faire avant de charger une image .
// instantiate Imagick
$im = new Imagick();
$im->setResolution(300,300);
$im->readimage('document.pdf[0]');
$im->setImageFormat('jpeg');
$im->writeImage('thumb.jpg');
$im->clear();
$im->destroy();
La qualité de l'image produite à partir du PDF peut être modifiée en définissant la density
(qui est le DPI) avant d'être lue dans le PDF - ceci passe au-delà de ghostscript (gs)
sous laquelle le rasterise le PDF. Pour obtenir un bon résultat, effectuez un suréchantillonnage au double de la densité requise et utilisez resample
pour revenir au DPI souhaité. N'oubliez pas de changer la colorspace
en RVB si vous voulez un fichier JPEG RVB.
Une version typique de la ligne de commande pour convert
pourrait être:
convert -density 600 document.pdf[0] -colorspace RGB -resample 300 output.jpg
Si vous devez le rogner, une commande -shave
après le rééchantillonnage est généralement utile, si l'image est centrée dans la page.
En ce qui concerne PHP IMagick extension }, eh bien, je ne l'utilise jamais personnellement - je ne suis donc pas sûr de la façon dont vous spécifiez les indications de lecture de fichier, mais j'espère que c'est possible.
$im = new imagick();
//this must be called before reading the image, otherwise has no effect
$img->setResolution(200,200);
//read the pdf
$img->readImage("{$pdf_file}[0]");
Assurez-vous que le PDF est créé avec les profils de couleurs corrects. À l’origine, mon fichier JPG était très délavé après le redimensionnement dû au fait que le fichier source avait été créé avec un profil de couleurs incorrect. Voir aussi: La conversion ImageMagick PDF en JPEG donne un carré vert où l'image devrait être
Cliquez ici pour plus de détails. Essaye ça:
HTML
<html>
<body>
<form action="ConvertPdfToImg.php" enctype="multipart/form-data" method="post" name="f1">
<input id="templateDoc" name="templateDoc" type="file" />
<input type="submit" />
</form>
</body>
</html>
PHP
$pdfAbsolutePath = __DIR__."/test.pdf";
if (move_uploaded_file($_FILES['templateDoc']["tmp_name"], $pdfAbsolutePath)) {
$im = new imagick($pdfAbsolutePath);
$noOfPagesInPDF = $im->getNumberImages();
if ($noOfPagesInPDF) {
for ($i = 0; $i < $noOfPagesInPDF; $i++) {
$url = $pdfAbsolutePath.'['.$i.']';
$image = new Imagick($url);
$image->setImageFormat("jpg");
$image->writeImage(__DIR__."/".($i+1).'-'.Rand().'.jpg');
}
echo "All pages of PDF is converted to images";
}
echo "PDF doesn't have any pages";
}