jpg convert code php pdf imagemagick jpeg

convert - pdf to jpg php



Convierte PDF a JPEG con PHP e ImageMagick (5)

Asegúrese de que el PDF se crea con los perfiles de color correctos, una vez tuve mi JPG muy borroso después de cambiar el tamaño debido a que el archivo de origen se creó con un perfil de color incorrecto. Ver también: la conversión de ImageMagick a JPEG da como resultado un cuadrado verde donde la imagen debe ser

Estoy usando una pequeña secuencia de comandos para convertir PDF a JPG. Eso funciona pero la calidad es muy pobre.

La secuencia de comandos:

$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();

Una cosa más, quiero mantener el tamaño original del PDF, pero la conversión cosecha el tamaño del JPG.


Haga clic here para más detalles. Prueba esto:

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"; }


La calidad de la imagen producida desde el PDF puede cambiarse configurando la density (que es el DPI) antes de leer en el PDF; esto pasa a ghostscript (gs) debajo de la cual rasteriza el PDF. Para obtener un buen resultado, muestree el doble de la densidad que necesita, y use resample para volver al DPI deseado. Recuerde cambiar el colorspace de colorspace a RGB si desea un JPEG RGB.

Una versión de línea de comando típica para convert podría ser:

convert -density 600 document.pdf[0] -colorspace RGB -resample 300 output.jpg

Si necesita recortarlo, un comando -shave después de la nueva muestra suele ser razonable, si la imagen está centrada dentro de la página.

En cuanto a la extensión PHP IMagick , bueno, nunca la uso personalmente, así que no estoy seguro de cómo se especifican las sugerencias de lectura de archivos, pero espero que sea posible.


Se puede hacer usando setResolution , pero debe hacerlo antes de cargar una imagen. Pruebe algo como esto:

// 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();


$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]");