EXCELをPHPでPDF出力(tcpdf) 1

 1.開発依頼

とあるクライアントからEXCEL管理をWeb化したい旨の依頼があった。

当初は、Excelを更新してダウンロードする形で進んでいたのだが、

PDFで製造部署がダウンロードする仕様変更が出された。

Excelに更新するだけであれば、工数的にも費用的にも十分余裕があった。

だが、PDF出力となると正直経験不足である。

 

色々なサイトを調べると、TCPDFがお手軽にhtmlから変換できるようなので、

TCPDFを試してみた。

残念ながら、下図のExcel「製造指示書」にまったく対応できない。

       Excel製造指示書

phpにオウンコーディングで試みたが、直ぐに挫折した。

1行目だけで下記のようなコーディングになる。これに罫線の設定をすると気が遠くなる。

-----------------------------------------------------------------------------------------------

 include "lib/TCPDF/tcpdf.php";

$tcpdf = new TCPDF('L','mm','A4',true,'UTF-8')

$tcpdf ->setPrintFooter(0);
$tcpdf ->setHeaderMargin(0);
$tcpdf ->setFooterMargin(0);
$tcpdf ->SetMargins(0.1,2.9,-1,true);

$tcpdf ->AddPage();

$a = $tcpdf ->GetX();
$b = $tcpdf ->GetY();
$tcpdf ->SetFont('kozgopromedium', '',11);
$tcpdf ->SetTextColor(0,0,0);
$tcpdf ->SetXY(1.2,2.9);
$tcpdf ->Cell(21,8, '受 注 日', 0, 0,'C',0,'',0,0,'T','M');
$tcpdf ->SetXY($a,$b);
$tcpdf ->SetXY(21.9, 2.9);
$tcpdf ->Cell(59,8, '図 番', 0, 0,'C',0,'',0,0,'T','M');
$tcpdf ->SetXY($a,$b);
$tcpdf ->SetXY(84.9, 2.9);
$tcpdf ->Cell(12,8, '個数', 0, 0,'C',0,'',0,0,'T','M');
$tcpdf ->SetXY($a,$b);
$tcpdf ->SetXY(92.1, 2.9);
$tcpdf ->Cell(20,8, '単 価', 0, 0,'C',0,'',0,0,'T','M');
$tcpdf ->SetXY($a,$b);
$tcpdf ->SetXY(111.8, 2.9);
$tcpdf ->Cell(24,8, 納 期', 0, 0,'C',0,'',0,0,'T','M');
$tcpdf ->SetXY($a,$b);
$tcpdf ->SetXY(135.4,2.9);
$tcpdf ->Cell(14,8, '回数', 0, 0,'C',0,'',0,0,'T','M');

$tcpdf->Output('seizousiji.pdf', 'I');

 そこで考えたのが、Excelから直接TCPDF用定義ソースのジェネレーターである。

その出力結果が下図である。

    TCPDF出力製造指示書

ほぼ思い通りに出力できている。

ジェネレーターの開発についてメモとして残すことにした。