You are here

function _scald_file_pdf_thumbnail in Scald File Provider 7

Generate a thumbnail for a pdf file.

1 call to _scald_file_pdf_thumbnail()
scald_file_scald_atom_presave in ./scald_file.module
Implements hook_scald_atom_presave().

File

./scald_file.module, line 172
Scald File is a Scald Atom Provider for Files.

Code

function _scald_file_pdf_thumbnail($atom, $file) {
  if ($file->filemime === 'application/pdf') {
    $uri = drupal_realpath($file->uri);
    if (file_exists($uri)) {
      $temp = file_directory_temp() . '/pdf_thumb.png';
      if (scald_file_is_exec_available() && (scald_file_command_exists('pdfdraw') || scald_file_command_exists('mudraw') || scald_file_command_exists('convert'))) {
        if (scald_file_command_exists('pdfdraw')) {
          exec('pdfdraw -o ' . escapeshellarg($temp) . ' ' . escapeshellarg($uri) . ' 1');
        }
        elseif (scald_file_command_exists('mudraw')) {
          exec('mudraw -o ' . escapeshellarg($temp) . ' ' . escapeshellarg($uri) . ' 1');
        }
        elseif (scald_file_command_exists('convert')) {
          $uri = $uri . '[0]';
          exec('convert ' . escapeshellarg($uri) . ' ' . escapeshellarg($temp));
        }
      }
      elseif (extension_loaded('imagick') && class_exists("Imagick")) {
        $im = new Imagick($uri . '[0]');
        $im = $im
          ->flattenImages();
        $im
          ->setImageFormat("png");
        $im
          ->thumbnailImage(400, 0);
        $im
          ->writeImage($temp);
      }
      if (file_exists($temp)) {
        $handle = fopen($temp, 'r');
        if ($directory = ScaldAtomController::getThumbnailPath('file')) {
          $dest = $directory . '/file-' . $file->fid . '.png';
          $thumb = file_save_data($handle, $dest);
          $langcode = field_language('scald_atom', $atom, 'scald_thumbnail');
          $atom->scald_thumbnail[$langcode][0] = (array) $thumb;
        }
        fclose($handle);
        unlink($temp);
      }
    }
  }
}