ウェブサイトのキャプチャとか〜
linuxサーバーでwkhmltopdf/wkhtmltoimgをつかってキャプチャする場合です。
これをつかいます。
Google Code Archive - Long-term storage for Google Code Project Hosting.
レンタルではサーバーをいじれないので使えません
CGIの禁止事項でバイナリファイルは使用不可=サンプルはありません。
■インストール手順
# cd /usr/local/src
# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2
# tar jxf wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2
# cp wkhtmltoimage-i386 /usr/local/bin/wkhtmltoimage
ここらへんはバージョンの違いとかいろいろあるので、検索で調べてみてくださいw
上記にはwkhtmltopdfとwkhtmltoimageの両方があるので両方いれます。
■PHPで飾り気のないものをつくりました
・以下の設置は/var/www/html/wkとしました。
・キャプチャデータも同じフォルダに生成されます。適宜変更してください。
(注意:キャプチャデータが生成されるフォルダのパーミッションを書込み可にする)
wk.php
<?php class wkTool{ var $size; var $url; var $nam; var $ext; function __construct($s="100",$u,$n="sample",$e="jpg"){ $this->setData($s,$u,$n,$e); } function setData($s,$u,$n,$e){ $this->size=$s; $this->url=$u; $this->nam=$n; $this->ext=$e; } //IMG function wkhtmltoImage(){ $s=$this->size; $u=$this->url; $f="/var/www/html/wk/".$this->nam.".".$this->ext; exec("/usr/local/bin/wkhtmltoimage --quality $s $u $f"); } function showImage(){ $s=$this->size; $u=$this->url; $f=$this->nam.".".$this->ext; $i=getimagesize($f); $w=$i[0]*$s/100; $h=$i[1]*$s/100; $d=$this->dlLink(); $str='<img src="'.$f.'" width="'.$w.'" height="'.$h.'"/><br />'; $str.='<a href="'.$u.'">'.$u.'</a>('.$s.'%)'.$d; return $str; } //PDF function wkhtmltoPDF(){ $s=$this->size; $u=$this->url; $f="/var/www/html/wk/".$this->nam.".".$this->ext; exec("/usr/local/bin/wkhtmltopdf $u $f"); } function showPDF(){ $s=$this->size; $u=$this->url; $f=$this->nam.".".$this->ext; $d=$this->dlLink(); $str='<a href="'.$u.'">'.$u.'</a>('.$s.'%)'.$d.'<br />'; $str.='<embed src="'.$f.'#zoom='.$s.'" type="application/pdf" width="100%" height="100%"/>'; return $str; } //inner method private function dlLink(){ $f=$this->nam.".".$this->ext; $fs=filesize($f); $str='<form method="post" action="download.php">'; $str.='<input type="hidden" name="filepath" value=""/>'; $str.='<input type="hidden" name="filename" value="'.$f.'"/>'; $str.='<input type="hidden" name="ext" value="'.$this->ext.'"/>'; $str.='<input type="submit" value="ダウンロード"/>('.$this->ext.':'.$fs.'byte)'; $str.='</form>'; return $str; } } ?> <html> <head> <style> ul{ position:relative; list-style:none; } ul li label{ display:inline-block; width:100px; } img{ border:3px solid black; } </style> </head> <body> <form action="" method="post"> <ul> <li> <label for="ext">変換形式</label> <input type="radio" name="ext" id="ext_pdf" value="pdf"/><label for="ext_pdf">PDF</label> <input type="radio" name="ext" id="ext_jpg" value="jpg" checked="checked"/><label for="ext_jpg">JPEG</label> </li> <li><label for="size">大きさ(%)</label><input type="text" name="size" id="size" size="4"/></li> <li><label for="url">変換元URL</label><input type="text" name="url" id="url"/></li> <li><label for="nam">名前</label><input type="text" name="nam" id="nam"/></li> <li><label></label><input type="submit" value="変換"/></li> </ul> </form> <?php if(isset($_POST["url"])){ $udat=new wkTool($_POST["size"],$_POST["url"],$_POST["nam"],$_POST["ext"]); switch($_POST["ext"]){ case "pdf": $udat->wkhtmltoPDF(); echo $udat->showPDF(); break; case "jpg": $udat->wkhtmltoImage(); echo $udat->showImage(); break; default:exit(); } } ?> </body> </html>
download.php
<?php $filename=$_POST['filename']; $fullpath=$_POST['filepath'].$filename; $ext=$_POST['ext']; $ctype=""; switch($ext){ case "jpg":$ctype="image/jpeg";break; case "pdf":$ctype="application/pdf";break; default:exit(); } header("Content-type: $ctype"); header("Content-Disposition: attachment; filename=$filename"); readfile($fullpath); ?>