PHPプログラムで、動的にPDFファイルを生成することがよくあります。
このとき、mbfpdfというPDF生成ライブラリを利用するのが主なのですが、
簡単な帳票などは、html2fpdfというライブラリを私は利用しています。
google先生で検索すると、
色々と改行方法のインフォメーションがあるのですが、
どれも実際はうまく動きませんでした。(あくまで私の使っているバージョンでは)
そこで、半ば無理やりに、但し確実に改ページする方法を紹介します。
html2pdf.phpに
function WriteHTML($html) { $this->ReadMetaTags($html); $html = AdjustHTML($html,$this->usepre); //Try to make HTML look more like XHTML if ($this->usecss) $html = $this->ReadCSS($html); //Add new supported tags in the DisableTags function $html=str_replace('<?','< ',$html); //Fix 'enabledtags); //remove all unsupported tags, but the ones inside the 'enabledtags' string //Explode the string in order to parse the HTML code $a=preg_split('//ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE); foreach($a as $i => $e) { $this->SetFont('SJIS','',9); $this->SetTextColor(0,0,139); $e = mb_convert_encoding($e,'SHIFT-JIS','UTF-8');
このような記述部分があります。
ここでは、変換対象のHTMLを解析し、HTMLタグを抽出し、
それに対応したPDF出力を行う部分になります。
foreach($a as $i => $e)
この$eの中に、タグが格納されています。(tableとかtrとか)
そこで、
例えば「divタグがある場合は、必ず改行」と自分の中でルールを設定し、
foreach($a as $i => $e) { if($e=="div"){ $this->AddPage(); }
このような感じで、mbfpdfの改ページメソッドを叩けば、
その部分で確実に改ページされます。
かなり無理やり感がありますが、
応用すれば、色々なHTMLタグに対して、
いかようにも出力を操作できますので、非常に便利だと思います。
参考にしていただければ幸いです。
The following two tabs change content below.
ロゴスウェア
ロゴスウェア株式会社は、インターネットや情報技術を使って学習に革新的進化をもたらす製品を開発することを目標に、2001年7月に設立されたテクノロジー系ベンチャー企業です。
最新記事 by ロゴスウェア (全て見る)
- Amazon Linux(EC2)と PHPSTORM で Xdebug を行う - 2018年9月26日
- やらないことの合意 - 2018年6月27日
- 卒園アルバムとプロジェクトマネジメント - 2018年3月30日
Comments are closed.