【TCPDF】ページ全体に画像背景を指定する方法

2010.10.04 Author: Jas

最近おなじみになってきたTCPDFでページ全体に画像背景を指定する方法をご紹介します。

TCPDFの本家サイトでサンプル紹介ページに
「51. Full page background」
と書いてあったので、『お!ついに関数ができたのか!』と喜んでサンプルを見たのですが、
自分で実装する方法が紹介されていました。。。

ということで、今回の記事は基本的に本家サイトに掲載されているサンプルの解説です。


まずは、TCPDFのライブラリを読み込み、TCPDFクラスを継承します。
そして、Header()関数を作成します。

このHeader()関数ですが、AddPage()が呼ばれたタイミングで実行されるので、
背景以外にもページヘッダーのカスタマイズ出力にも利用できます。

class MYPDF extends TCPDF {
   // ヘッダー関数
   public function Header() {
       // 現在のページ設定状態を保存(マージン、自動改ページ設定等)
       $bMargin = $this->getBreakMargin();
       $auto_page_break = $this->AutoPageBreak;

// 自動改ページ機能をOFF
$this->SetAutoPageBreak(false, 0);

// ページ全体に画像を張り付け
$this->Image(BACKGROUND_IMAGE_PATH, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);

// ページ設定を元に戻す
$this->SetAutoPageBreak($auto_page_break, $bMargin);
}
}

Header()関数の中でいくつか処理を行いますが、ポイントとしては自動改ページ機能を無効にしてから背景画像を指定すること。

ページ全体に画像を張り付ける必要があるため、自動改ページ機能を有効にしたまま実行すると、画像のはみだしを検知し、自動でAddPage()が呼ばれます。
そして、AddPage()の実行時にはHeader()が呼ばれるため、処理が無限にループしてしまうのです。

背景画像の指定のため、一時的に無効化した自動改ページ機能は、背景画像の指定後に再度有効にすれば問題ありません。


背景画像は縦横サイズを指定するなどして、ページ全体に表示されるように調整してください。
自動改ページ機能が無効なので、ページ外にはみ出すような画像でも問題ありません。
(ページ領域の外にはみ出した部分はPDFには表示されませんが。)

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ