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パラメータでひとつだけ指定すればよいことに気づいた。それに伴ない、ショートコード内のサイズ指定を変更した場合も正しくサムネールを作成しなおすよう修正。