EXCELをPHPでPDF出力(tcpdf) 1
1.開発依頼
とあるクライアントからEXCEL管理をWeb化したい旨の依頼があった。
当初は、Excelを更新してダウンロードする形で進んでいたのだが、
PDFで製造部署がダウンロードする仕様変更が出された。
Excelに更新するだけであれば、工数的にも費用的にも十分余裕があった。
だが、PDF出力となると正直経験不足である。
色々なサイトを調べると、TCPDFがお手軽にhtmlから変換できるようなので、
TCPDFを試してみた。
残念ながら、下図の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用定義ソースのジェネレーターである。
その出力結果が下図である。
ほぼ思い通りに出力できている。
ジェネレーターの開発についてメモとして残すことにした。