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;