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
Esto se ve muy bueno, pero no tendran alguna ayuda para poder instalar la libreria en windows y usando xammp?
Hola Gendrith,
Tan solo tendrás que instalar ImageMagick para windows, desde aquí: http://www.imagemagick.org/script/binary-releases.php#windows el habilitar la libreria (el .dll en este caso) desde php.ini y probar que tu php reconoce ImageMagick 😉
Saludos.
Estuve haciendo varias pruebas y no pude usar la clase imagick, me sale un error de not found…
Alguna sugerencia?
Hola Gendrith,
Si no encuentra la libreria (te aparece un error de php indicando que no sabe que funcion es…) tendrás que incluir la dll de imagemagick en el directorio de php de tu instalación, luego editar php.ini y añadir extension=php_imagick.dll y finalmente reiniciar apache, en XAMPP el directorio donde tendria que ir la DLL es en la carpeta php/ext/
A ver si tienes suerte así!
sigue este corto tutorial y no te olvides de instalar ghostscript para windows tambien http://www.kaosconcept.net/tutorial-photoshop/instalar-imagemagick-en-xampp-1-7-7/
Si no tengo ImageMagick instalado en el servidor (porque es compartido), ¿puedo hacerlo de alguna manera?
Hola Juan!
Creo que la librería phpThumb puede hacer uso de GD o de ImageMagick, consulta con tu ISP si disponen de la librería GD y en caso contrario siempre puedes pedirles que te la instalen.
Mi servidor es SOLARIS, hay paquete para este SO
Me temo que para SOLARIS tendrás que compilarlo tu mismo 😉