PhpSpreadsheetをインストールしてXLSX→PDF変換を試す

PHPを使ってExcelからPDF変換のベストプラクティスを探しているときの覚書。

環境: CentOS Stream 8, PHP 7.4.19

PHPでエクセルを編集するのはPhpSpreadsheetが最強。

サンプルコードはGitHub上のsampleディレクトリにある。
・・・けど、ドキュメントで十分だった。

composerを使ってインストールする。
$ composer require phpoffice/phpspreadsheet

例えばエクセルを読み込んで特定のセルに値を入れて保存する処理はこちら。

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('input.xlsx');
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('I3', 'テスト');

$writer = new Xlsx($spreadsheet);
$writer->save('output.xlsx');

元よりファイルサイズが小さくなっているのが気になるけど問題なく出力できた。


TCPDFを使う場合はcomposerでインストールするだけでOK。
$ composer search tcpdf
$ composer require tecnickcom/tcpdf

PDF変換をするサンプルコードはこちら。

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('input.xlsx');
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('I3', 'テスト');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Tcpdf');
$writer->setFont('kozgopromedium');
$writer->save('output.pdf');

フォントはvendor/tecnickcom/tcpdf/fontsのファイル名。
kozgopromedium: KozGoPro-Medium-Acro(小塚ゴシック Pro)

PDF変換は成功したが見事にレイアウトが崩れている。

次は外部APIを使ったPDF変換を試す予定。


【関連記事】