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