PHPでPDF出力 6(PDF出力のクラス化)

6.PDF出力のクラス化

「縮小して全体を表示する」と「折り返して全体を表示する」ための関数をPDF出力側に作成した。

もっと使い勝手を良くするためにクラス化に修正した。

実行していた「index.php」のソースである。

<?php
require_once(dirname(__FILE__)."/../lib/TCPDF-master/tcpdf.php");
$tcpdf = new TCPDF();
【 ここに、ジェネレーター出力定義を貼り付け 】
$tcpdf->Output('samurai.pdf', 'I');
public function adjustToWidth($source, $width, $font, $size) {
global $tcpdf;
}
public function adjustToHeight($source, $pos, $maxwidth, $width, $height) {
global $tcpdf;
}
?>

その前に、Excelの「発注日」「図番」等は入力項目の可変である。

Excelに変数情報を埋め込むことにした。

Excel変数埋め込み

 変数の識別に「{$}」を使うことにし、上記のように変数を設定した。

想定したのは、以下のような処理である。

$day='8/8';
:
$source =$day;
$info = $tcpdf->adjustToWidth($source, 35,kozgopromedium,12);
$tcpdf->SetFont('kozgopromedium', '',$info);
$tcpdf->SetXY($hPos, $pos);
$tcpdf->Cell(35,8, $source, 0, 0,'L',0,'',0,0,'T','M');

 

これで変数が多くなると可読性に問題でてくる。

いっそのこと、TCPDFの定義ファイルも関数にすれば、可読性の問題は解決できる。

代入編集処理をTCPDFの継承クラスにすることにした。また、定義ファイルは代入編集処理の継承クラスで作成した。

Class tcpdfEditer extends TCPDF {
var $pdf;
public function tcpdfEdit() {
$pdf = new TCPDF();
}
//変数に代入するメソッド 
public function assign($var, $value=null) {
}
//PDF出力メソッド 
public function out($pdfname, $dest) {
$this->Output($pdfname, $dest);
}
}
定義ファイルのクラス
Class tcpDefine extends tcpdfEditer {
}

変数を代入するメソッドは、Smartyのassign風にしてみた。

 $this->assign('day','8/8');

修正後のindex.php

<?php
require_once(dirname(__FILE__)."/../lib/TCPDF-master/tcpdf.php");
// tcpdf編集用
require_once(dirname(__FILE__)."/tcpdfEditer.php");
// tcpdf定義ファイル
require_once(dirname(__FILE__)."/smaple.php");
$pdf = new tcpDefine();
$pdf->assign('day','8/8');
$pdf->assign('zuban','JFA-550-081');
$pdf->assign('kosuu','10');
$pdf->assign('tanka','12,000');
$pdf->assign('nouki','9/5');
$pdf->assign('kaisuu','12');
$pdf->out('sample.pdf', 'I');
?>

 結果は上々。

      代入結果PDF

また疑問が。

請求明細書のように明細内容を繰り返しをどうするか? 改ページは?

まだまだクリアすべきことが山積み。

次回は、明細の繰り返しの処理追加