html2fpdfで確実に改ページする方法


PHPプログラムで、動的にPDFファイルを生成することがよくあります。
このとき、mbfpdfというPDF生成ライブラリを利用するのが主なのですが、
簡単な帳票などは、html2fpdfというライブラリを私は利用しています。

この時、以下のような現象になりがちです。
html2pdf

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 ロゴスウェア (全て見る)

Comments are closed.