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);
}
}
}
}