忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP TCPDFの画像ファイルの出力について(imageメソッド)・その3

PHP PDF出力の方法について・マージンとヘッダ/フッタ(TCPDF)」 の記事では TCPDF クラスを継承し Header メソッドを上書きすることでページのヘッダ処理のカスタマイズを行いました。

この Header メソッドは、ページを追加するメソッドの AddPage を実行すると毎回CALLされる様になっています。
TCPDF クラスを継承し Header メソッドのに、ページ全体に背景画像を設定する様にしてみます。

取敢えず Image メソッドの引数はに付いて以下に記します。

// Imageメソッド
public function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='', $align='', 
					   $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, 
					   $border=0, $fitbox=false, $hidden=false, $fitonpage=false, $alt=false, 
					   $altimgs=array())
// $file      : 画像ファイル名
// $x         : 領域左上のX座標[指定しない場合、現在のX座標位置]
// $y         : 領域左上のY座標[指定しない場合、現在のY座標位置]
// $w         : 領域の幅 [指定しない場合、自動計算される]
// $h         : 領域の高さ [指定しない場合、自動計算される]
// $type      : 画像フォーマット("JPEG", "PNG")
// $link      : AddLink()で作成したリンク識別子
// $align     : 次の画像を表示する位置
//             [T]: top-right for LTR or top-left for RTL
//             [M]: middle-right for LTR or middle-left for RTL
//             [B]: bottom-right for LTR or bottom-left for RTL
//             [N]: next line
// $resize    : [true]画像サイズを$wや$hに合わせてリサイズ
// $dpi       : 解像度(dot per inch)
// $palign    : 画像を現在の行のどこに配置するか
//             [L] : 左端
//             [C] : 中央
//             [R] : 右端
//             ['']: 左端(RTLの場合は右端)
// $ismask    : [true]画像をマスクする場合
// $imgmask   : 画像オブジェクトをメソッドの戻り値として取得する
//              (描画しない、w、h、x、yは無視される)場合true
// $border    : 境界線表示(0:枠無し,1:枠有 または "LRTB"の文字列で「左右上下」を指定)
// $fitbox    : [ture]($w, $h)で指定する領域に合わせて拡縮
// $hidden    : [ture]画像を画面に表示しない
// $fitonpage : [ture]ページの大きさに拡大する
// $alt       : If true the image will be added as alternative and not directly printed
//              (the ID of the image will be returned).
// $altimgs   : Array of alternate images IDs. Each alternative image must be an array with two values: 
//              an integer representing the image ID (the value returned by the Image method)
//              and a boolean value to indicate if the image is the default for printing. 






■ページを追加するごとに、画像を用紙全体に表示する

画像データは以下のものを使います。画像の大きさは「459×640」ピクセルです。


この画像を用紙全体に表示を行います。

TCPDF を継承しクラス名を EXPDF とします。 Header メソッド内の処理は先ず getBreakMargin メソッドで改頁までの余白を取得し getAutoPageBreak メソッドで自動改ページモードを取得し退避します。

その後で SetAutoPageBreak メソッドで自動改ページ機能をOFF、及びページ下端からのマージンを「0」に設定します。 そして Image メソッドで画像をページ全体指定で表示します。

画像表示後 SetAutoPageBreak メソッドで自動改ページ状態と改頁までの余白の設定値を戻してやります。

ここで少し注意点があります。TCPDF クラスではデフォルトでヘッダ出力の設定が true になっているので AddPage メソッド実行時に上書きした Header メソッドが実行されます。 ただし setPrintHeader メソッドで false に設定すると Header メソッドが実行されなくなるので注意が必要です。

<?php
require_once('../tcpdf/tcpdf.php');

// TCPDF クラスを継承
class EXPDF extends TCPDF {
	// [Header]を上書き
	public function Header() {
        // 改頁までの余白取得
        $svBreakMargin = $this->getBreakMargin();
        // 自動改ページモード取得
        $svAutoPageBreak = $this->getAutoPageBreak();
        // 自動改ページ機能をOFF(ページ下端からのマージン;0設定)
        $this->SetAutoPageBreak(false, 0);
        // ページ全体に画像を張り付け
        $this->Image('../_test_pdf/test-backg.png', 0, 0, 210, 297);
        // ページ設定を元に戻す
        $this->SetAutoPageBreak($svAutoPageBreak, $svBreakMargin);
	}
}

// TCPDFを継承したクラス生成
$pdf = new EXPDF();

// デフォルトで用意されている日本語フォント[小塚ゴシックPro M]
$strFont = "kozgopromedium";
// ヘッダ・フッタ出力設定
$pdf->setPrintHeader(true);	// デフォルトではヘッダ出力「true」なので要らないが
$pdf->setPrintFooter(false);
// 本文の日本語フォント[小塚ゴシックPro M]
$pdf->SetFont($strFont, "", 10);

// 新しいpdfページを追加
$pdf->AddPage();
// 1ページ目タイトル表示
$strOut = '<h1>HTML Imageテスト3・1ページ目表示</h1>';
$pdf->writeHTML($strOut, true, false, true, false, '');

// 新しいpdfページを追加
$pdf->AddPage();
// 1ページ目タイトル表示
$strOut = '<h1>HTML Imageテスト3・2ページ目表示</h1>';
$pdf->writeHTML($strOut, true, false, true, false, '');

// pdf表示設定
$pdf->Output('pdf-img-7-1.pdf', 'I');
?>

これの実行結果は以下の通りです。















PR

コメント

コメントを書く