WordPress PDF埋込みプラグイン

<?php
 /*
 Plugin Name: PDF Viewer
 Plugin URI: 
 Description: Embed PDF with [pdf src="url" size="xxx"]
 Author: juangotoh
 Version: 0.1
 Author URI: 
 */
 
function pdfEmbed($attrs, $content = null) {  
	$src="http://";
	$size="200";
	extract($attrs);
	$thumb=$src."-thumb.jpg";
	$sizeStr="";
	$curSize=0;
	$a=explode("wp-content", $src);
	$pdfPath=WP_CONTENT_DIR.$a[1];
	$thumbPath=$pdfPath."-thumb.jpg";
	$pi=pathinfo($pdfPath);
	$thumbSize=getimagesize($thumbPath);
	if ($thumbSize){
		if ($thumbSize[0]>$thumbSize[1]) $curSize=$thumbSize[0];
		else $curSize=$thumbSize[1];
	}
	if (strtoupper($pi['extension']) == 'PDF'){
		if ($curSize!=$size){ // create thumb
			exec("convert -resize ".$size."x".$size." '".$pdfPath."[0]"."' ".$thumbPath);
		}
		if (file_exists($thumbPath)){
			$thumbSize=getimagesize($thumbPath);
			$sizeStr=$thumbSize[3];
		}
		return '<a href="'.$src.'"><img src="'.$thumb.'" '.$sizeStr.' /></a>';  
	}
	return 'PDF is not exist!';  
}  

add_shortcode("pdf", "pdfEmbed");  

 
?>

とりあえずでっちあげたもの。アップロードしたPDFファイルのURLをコピーして。

[pdf src="http://なんちゃら.pdf" size="xxx"]

というようなショートコードを記事に書けば、PDFの1ページ目をjpegに変換したサムネールが表示され、クリックでPDFが開かれる。

ただしPHPからexec()でImageMagicのconvertコマンドが使える環境に限られます。さくらインターネットレンタルサーバスタンダードでは使用できました。

2009/3/20修正。
サムネールのサイズがイメージタグのwidth,heightにうまく取り込まれていなかったバグを修正。また、サムネールサイズは縦横長い方が指定サイズになるため、width, heightではなく、sizeパラメータでひとつだけ指定すればよいことに気づいた。それに伴ない、ショートコード内のサイズ指定を変更した場合も正しくサムネールを作成しなおすよう修正。