pdf

En esta entrada os voi a mostrar como generar imágenes a partir de un PDF con Imagick en PHP.

En este caso tenemos 2 opciones. Generamos la imágen al vuelo o guardamos la imágen en el servidor para luego ser leida.

Siempre es mejor guardar la imágen ya que sino se deberá generar la imñagen cada vez que se consulte, y ello conlleva una carga de proceso para el servidor, mientras que si ya está generada y guardada solo se consume esta carga extra una vez.

Para hacer la imágen al vuelo lo podemos hacer con esta función:

function echoPdfThumbnail($pdfPath){
   if (!file_exists($pdfPath)){
     echo "ERR. The pdf doesn't exists";
     return;
   }
   $im = new imagick($pdfPath.'[0]');
   $im->setImageFormat( "jpg" );

   $im->thumbnailImage(300,0);
   header( "Content-Type: image/jpeg" );
   echo $im;
 } 

Simplemente llamándola desde un php haremos que la salida del script sea una imágen, para llamar a esta función simplemente deberemos pasar la ruta del pdf, y el tamaño de la imágen de salida. Si queremos que se ajuste a una anchura o altura concreta, debemos pasar la altura o anchura deseadas y el otro parámetro dejarlo a 0. Así conservará las proporciones originales.

echoPdfThumbnail("PATH TO PDF", 0, 300);

La otra opción es guardar la imágen generada en un archivo en el servidor, esto se puede hacer por ejemplo, cada vez que en el sistema que tengamos se suba un pdf nuevo, se ejecuta esta función para generar su previsualización, así luego siempre tendremos la imágen ya generada y solo deberemos linkarla donde queramos mostrarla. Para ello usaremos la siguiente función:

function createPdfThumbnail($pdfPath, $thumbnailSave, $width, $height = 0){
   if (!file_exists($pdfPath)){
     echo "ERR. The pdf doesn't exists";
     return;
   }
   $im = new imagick($pdfPath.'[0]');
   $im->setImageFormat( "jpg" );

   $im->thumbnailImage($width, $height);
   $thumb->writeImage($thumbnailSave);
 }

Como vemos la única diuferencia es que ahora le debemos pasar la ruta de dónde queremos guardar el archivo.

Lo más interesante de esto es la funcion constructora de imagick

$im = new imagick($pdfPath.'[0]');

Concatenamos a la ruta del pdf el string ‘[0]‘, con esto indicamos que queremos hacer la imágen de la página 0 del pdf, si quisieramos otrapágina simplemente cambiamos el [0] por la página que queramos.

Como apunte extra, a parte de tener imagick instalado en nuestro servidor, necesitaremos también tener instalado ghostscript para poder usar las funciones para procesar pdf.

http://www.php.net/manual/en/imagick.requirements.php

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2022 David Rojo González | Tecnología, programación web, SEO Suffusion theme by Sayontan Sinha