Convertir pdf en imagen, generar portada automáticamente en Drupal

php.jpg
Solucionex
05
Feb 14

La necesidad es: Al subir un PDF en un tipo de contenido Drupal, tenemos que generar una imagen con la portada del pdf y guardarla en un campo portada de tipo imagen.

Se puede utilizar el módulo: https://drupal.org/project/pdf_to_imagefield

En este caso lo planteamos desde un módulo ya que responde a requerimientos muy concretos.

Instalamos ImageMagick

sudo apt-get install imagemagick

Desde línea de comando podemos ejecutar: convert documento.pdf portada.jpg, esto creará tantas imágenes como páginas tiene el pdf. Para limitarlo a sólo la primera página indicaremos: convert documento.pdf[0] portada.jpg

En nuestro módulo:

$path_destino = $filedir_base . "/portadas_tmp/foo.png"; $command = "convert " . $path . "[0] " . $path_destino; $response = shell_exec($command); $imagen_portada = $path_destino;

Y asignamos el fichero generado a un campo de tipo file

$file_path = drupal_realpath($imagen_portada); $file = (object) array( 'uid' => 1, 'uri' => $file_path, 'filemime' => file_get_mimetype($file_path), 'status' => 1, ); $file = file_copy($file, 'public://'); $node->field_documento_portada[LANGUAGE_NONE][0] = (array)$file;