2012年12月01日

PDFファイルを画像ファイル化する(PHPサンプル)

今回は、Quick PDF Libraryを使って、PDFファイルを画像化(JPEGなど)することをやってみたいと思います。実際には、JPEGだけでなく、PNGやTIFFでの出力も可能です。例えば、PDFファイルへのリンクの際に、1ページ目のサムネイルを表示させるというシチュエーションでも使えそうです。

今回のサンプル(PHP)の中心は、RenderPageToFileメソッドになりますが、同メソッドについての詳細は、Quick PDF Libraryの体験版もしくは製品版のマニュアル(PDF)にも記載されていますが、こちらにも記載されています。

ただし、バージョン9.12では、日本語のPDFファイルについて、正しく出力できないケースが稀にあるようです。(10のうち1つぐらいですが、作り方によっては100%という場合もあるかもしれません。今、サポートに問い合わせ中です。)日本語のテキストの部分だけ抜け落ちます。英語のテキストは正しく表示されています。また、日本語でも元々画像内に表示されていたものであれば、画像化してもやはり表示されています。

<?php
	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

	$PDFLibrary= new COM("DebenuPDFLibraryAX0912.PDFLibrary");
	if(!$PDFLibrary){
		echo "COM error";
		exit;
	}

	if($PDFLibrary->UnlockKey("ライセンスキー") == 1){
		echo "License validation successful!";
		echo "
"; echo "Valid license key: "; echo $PDFLibrary->LicenseInfo; echo "

"; }else{ echo "License validation failed!"; echo "

"; exit; } $filename="hogehoge.pdf"; if(!file_exists($filename)){ print $filename . " does not exist."; exit; } $jpeg_name_basic = basename($filename,".pdf") . ".jpg"; //Quick PDF Libraryで扱う場合、ファイルのパスはフルパスに $filename = realpath($filename); $result = $PDFLibrary->LoadFromFile($filename,""); if(!$result){ echo "load error $filename"; exit; } //ページ数を取得 $pages = $PDFLibrary->PageCount(); //echo $pages . "
"; //DPIを上げると画像は綺麗になりますが、ファイルサイズは増大します。 $dpi = 96; //JPEGの質を1から100までで指定します。何も指定しなければ75になっている //ようですが、75だと特に明朝系の文字で汚く仕上がる傾向があるようです。 $quality=80; $result=$PDFLibrary->SetJPEGQuality($quality); if(!$result){ echo "can not set jpeg quality of $filename.
"; exit; } //1 = JPEG output。PNGやTIFFでの出力も可能です。 // パラメータの詳細は、http://www.quickpdflibrary.com/help/quickpdf/RenderPageToFile.php $options = 1; for($i=1;$i<=$pages;$i++){ $result = $PDFLibrary->SelectPage($i); if(!$result){ echo "can not select page $i of $filename.
"; exit; } //保存用PDFファイルのパス。Quick PDF Libraryでは常にフルパスに変換して処理 $jpeg_name = str_replace(".jpg","_page${i}_dpi${dpi}_q${quality}.jpg",$jpeg_name_basic); $jpeg_name = realpath("./") ."/jpeg/". $jpeg_name; //echo $jpeg_name . "
"; $result2 = $PDFLibrary->RenderPageToFile($dpi,$i,$options,$jpeg_name); if(!$result2){ echo "can not output jepg of page $i. $filename.
"; exit; } } echo "success
"; ?>




posted by PDF太郎 at 16:01| Comment(0) | TrackBack(0) | サンプルプログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。