Posts Tagged 'pdf'

PDF cover thumbnails for attached files

Tested on:

  • Drupal 5.x
  • Content Templates module
  • ImageMagick 6.3.7
  • GhostScript 8.15.3

Using ImageMagick + GhostScript you can convert the first page of a PDF into a thumbnail image linking to file. You can cut and paste this function on your theme main script: you have to manually create the thumb directory and grant write permission by scripts. Check also the path to ImageMagick convert command.


function pdf_thumb_attachments(){
 $allowed_mime = array("application/pdf");
	foreach($files as $file){
	if(in_array(strtolower($file->filemime),$allowed_mime) && strstr(strtolower($file->description),"classifica")){
		$title = $file->description;
		if(substr($title,-4)==".pdf"){
			# create link title from file name (Transliteration module suggested)
			$title = str_replace("_"," ",substr($title,0,strlen($title)-4));
		}
		$img = "";
		$local_src_path = getcwd() . "/" . $file->filepath;
		$destfilename = substr($file->filename,0,strlen($file->filename)-4) . ".gif";
		# YOUR-FILES-DIRECTORY/pdfgen will hosts the generated thumbnails
		$local_dest_path = getcwd() . "/" . file_directory_path() . "/pdfgen/" . $destfilename;
		$imageurl = base_path() . file_directory_path() . "/pdfgen/" . $destfilename;
		/* create thumbnail on node reading if file doesn't exist */
		if(!file_exists($local_dest_path)){
			# choose the first page of the PDF, scale to 90x90px and convert to GIF
			$exec = '/usr/bin/convert -scale 90x90 "'.$local_src_path.'"[0] "'.$local_dest_path . '"';
			shell_exec($exec);
			/* delete this line if you cannot read the generated file
			$exec = "chmod 777 ".$local_src_path;
			shell_exec($exec);
			//*/
		}
		$img = '<img src="'.$imageurl.'" alt="'.$title.'" />';
		$output .= "<li>". l($img." ".$title,$file->filepath, $attributes = array("title"=>$title), $query = NULL, $fragment = NULL, $absolute = TRUE, $html = TRUE) . "</li>";
	}
	}
 if(!empty($output)){
	$output = '<div class="my-attachments"><ul>' . $output . "</ul></div>";
 }
 return $output;
}

Update

You can alternatively use imagemagick function provided by image.module (the image.imagemagick.inc file on drupal/includes):


function file_preview_path($filename, $filepath = 'filepreview') {
  /** generate jpg thumbnails **/
  return $filepath . "/" . substr($filename,0,strlen($filename)-4) . ".jpg";
}

 function file_preview(&$file, $pages = Array(1)) {
   $allowed_mime = array("application/pdf");
   if(in_array(strtolower($file->filemime),$allowed_mime)){
	$local_src_path = getcwd() . "/" . $file->filepath;
	$local_dest_path = getcwd() . "/" . file_directory_path() . "/" . file_preview_path($file->filename);
	# create thumbnail only when needed
	$imagemagick = getcwd() . '/includes/' . 'image.imagemagick.inc';
	if(!file_exists($local_dest_path) && file_exists($imagemagick)){
		include_once($imagemagick);
               _image_imagemagick_convert($local_src_path.'[0]',
                                                       $local_dest_path, array('-colorspace RGB'));
		# all can read thumbnail files
		if(file_exists($local_dest_path))
			chmod($local_dest_path, 0777);
	}
	return file_preview_path($file->filename);
    }
    else{
	return FALSE;
    }
 }

Create nice pdf with ps2pdf and any word processing utility

Apply on: any GNU/Linux distrubution

Applications like OpenOffice allow to export document in the PDF format. However, sometimes the result is not very much professional. To obtain the best from your document in printing, you can follow a two-step conversion using any word processing utility.

  1. Use the option “Print to file” to convert your document to PostScript format. (i.e. my_document.ps)
  2. Convert the generated PostScript file in PDF using ps2pdf

Conversion tips:

To generate a document to print (more heavy), with embedded fonts, best image rendering etc. you can use:

ps2pdf -dPDFsettings=/prepress my_document.ps

The “prepress” distiller parameter automatically choose the best settings for print, but you can override it.

See also:
How to use ps2pdf advanced options


IE6: Rust in Peace

Blog Stats

  • 101,154 hits
My Bookshelf

Texts double licensed under Creative Commons Attribution - Share Alike license and GNU Free Documentation License. Examples may contain software licensed under GNU General Public License. Images and comments texts aren't necessarily licensed under these terms.