EXCELをPHPでPDF出力 2(TCPDFジェネレーター開発)

2.TCPDFソースジェネレーター開発着手

ExcelからTCPDF用の定義を出力を考え、ジェネレーターを作成することにした。

Webで完結するために、PHPExcelの書式を取得できないかと模索したが、それらしきものを見つける出すことができなかった。

 

取り敢えず、Microsoft Visual StudioVB.NETで開発することにした。

まずは、Excelファイルを読み込み、セル書式から文字列をジェネレートすることにした。

取得する情報は、

 文字列、フォント名、フォントサイズ、前景色、横縦揃えに絞った。

これらの情報から定義できるのは、以下のようになる。

 SetFont(フォント名、サイズ)

    SetTextColor(前景色)

 Cell(幅、高さ、文字列、横揃え、縦揃え)

下図のExcelの3行目まで実行してみた。

   f:id:sesjk:20200428123103p:plain

定義ソースは、それらしく出力された。

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

$tcpdf->SetFont('kozgopromedium', '',11);
$tcpdf->SetTextColor(0,0,0);
$source ='受 注 日';
$tcpdf->Cell(21,8, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='図 番';
$tcpdf->SetFont('kozgopromedium', '',$info);
$tcpdf->Cell(59,8, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='個数';
$tcpdf->SetFont('kozgopromedium', '',11);
$tcpdf->Cell(12,8, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='単 価';
$tcpdf->SetFont('kozgopromedium', '',11);
$tcpdf->Cell(20,8, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='納 期';
$tcpdf->Cell(24,8, $source, 0, 0,'C',0,'',0,0,'T','M');
$tcpdf->SetFont('kozgopromedium', '',11);

$source ='回数';
$tcpdf->Cell(14,8, $source, 0, 0,'C',0,'',0,0,'T','M');
$tcpdf->SetFont('kozgopromedium', '',24);
$source ='製 造 指 示 書';
$tcpdf->Cell(82,14, $source, 0, 0,'C',0,'',0,0,'T','M');
$tcpdf->SetFont('kozgopromedium', '',11);
$source ='8/8';
$tcpdf->SetFont('kozgopromedium', '',$info);
$tcpdfs->Cell(9,13, $source, 0, 0,'C',0,'',0,0,'T','M');
$tcpdf->SetFont('kozgopromedium', '',22);
$tcpdf->SetTextColor(255,0,0);
$source ='Ⅹ';
$tcpdf->Cell(12,13, $source, 0, 0,'C',0,'',0,0,'T','M');
$tcpdf->SetFont('kozgopromedium', '',18);
$tcpdf->SetTextColor(0,0,0);
$source ='HFA-450-091';
$tcpdf->SetFont('kozgopromedium', '',18);
$tcpdf->Cell(47,13, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='10';
$tcpdf->SetFont('kozgopromedium', '',11);
$tcpdf->Cell(12,13, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='12000';
$tcpdf->SetFont('kozgopromedium', '',11);
$tcpdf->Cell(20,13, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='9/1';
$tcpdf->Cell(24,13, $source, 0, 0,'C',0,'',0,0,'T','M');
$source ='5';
$tcpdf->Cell(14,13, $source, 0, 0,'C',0,'',0,0,'T','M');

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

果たして、PDFを出力してみると下図の通り。1行に重なってしまった。

     f:id:sesjk:20200428162406p:plain

SetXYが定義されていないためであることが判明した。

 

そこで、SetXYで定義する縦位置と横位置を取得する処理を追加することになる。

これが、単純そうでなかなかの苦戦であった。