Como crear thumbnails de un pdf con php

Como crear thumbnails de un pdf con php

Aqui os dejo un mini “HOW TO” para poder generar Thumbnails de ficheros PDF, usando la libreria ImageMagick para PHP instalando todos los modulos necesarios.

Para poder obtener una imagen de cada pdf he usado la libreria de PHP ImageMagick que proporciona PECL, una clase para el procesado de imagenes muy potente que junto a GD se encuentran instaladas en la mayoria de servidores.

En caso de no tener instalado el paquete ImageMagick lo instalaremos usando el gestor de paquetes de nuestra distribución LINUX, en caso de ser un sistema basado en RPM, usaremos yum:

yum install ImageMagick ImageMagick-devel ghostscript ghostscript-fonts

Hemos instalado ghostscript tambien ya que es necesario par que ImageMagick soporte PDFs.

Una vez seguros de tener instalado el paquete instalaremos el modulo de PHP con PECL:

pecl channel-update pecl.php.net
pecl install imagick

Si no podemos instalar con el instalador de pecl, podemos hacer esta operacion manualmente descargando el paquete de la web y usando phpize (el binario lo incluye el paquete php-devel):

wget http://pecl.php.net/get/imagick-2.3.0.tgz
tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0
phpize && ./configure && make

Si todo ha salido bien, tendremos en modules un fichero “imagick.so”, solo tendremos que copiar este fichero a nuestro directorio de modulos de php y configurar php para que lo cargue correctamente, en nuestro caso en un sistema CentOS de 64 bits, los pasos a seguir serian:

cp modules/imagick.so /usr/lib64/php/modules/
vim /etc/php.d/imagick.ini

El contenido de imagick.ini (el fichero que cargara la extension) es la linea:

extension=imagick.so

Una vez copiado el modulo y creado el fichero .ini recargamos apache y comprobamos que no hay ningun error:

service httpd reload

Comprobaremos con un fichero .php que contenga phpinfo, que aparece el modulo “imagick” y que PDF aparece entre los formatos de fichero soportados, si es que si, ya podemos empezar a programar nuestro script php, aquí teneis un ejemplo sencillo que funciona perfectamente:

// Especificamos el nombre del fichero y la página a procesar
$img = new imagick("fichero.pdf[0]");

// Configuramos la compresion, en este caso generamos un JPG, pero el formato puede ser cualquiera
// de los soportados por imagick
$img->setCompression(Imagick::COMPRESSION_JPEG);
$img->setCompressionQuality(70);
$img->setImageFormat( "jpg" );

// Generamos el thumbnail, indicando ancho y alto, si uno de los 2 parametros es 0, se ajustara la
// imagen al otro manteniendo las proporciones
$im->thumbnailImage(150, 0);

// Podemos escribir ahora en un fichero la imagen y almacenarla o mostrar por pantalla directamente:
// Si la queremos almacenar:
$img->writeImages(."/fichero.jpg", true);

//Si la queremos mostar directamente
header( "Content-Type: image/jpeg" );
echo $img

Comments

  1. Gendrith
    3 julio, 2012
    • raul
      3 julio, 2012
      • gendrith
        9 julio, 2012
        • raul
          9 julio, 2012
  2. Juan Carlos Achig
    22 mayo, 2013
  3. Juan
    12 mayo, 2014
    • raul
      12 mayo, 2014
  4. Japho
    14 febrero, 2015
    • raul
      10 marzo, 2015

Write a Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.