ハマログ

株式会社イーツー・インフォの社員ブログ

PhpSpreadsheetとTcpdfでExcelファイルから日本語PDFを作成してみる(そして失敗する)

はじめに
PDFの帳票をLaravelから作成したかったので、いろいろ試しています。Excelテンプレートから変換できると実装も運用もサイコーだと思って試してみた記録です
(あらかじめお断りしておきますが、実用レベルになりませんでした・・・)
環境準備(composer)
composerを利用してPhpSpreadsheetをインストールします
composer require phpoffice/phpspreadsheet
PhpSpreadsheet の公式ドキュメントによると、PDFライブラリは、TCPDF, Dompdf , mPDF libraries の3つが利用できるようです。 全部試しましたが、最終的にTCPDFになりました。でもTCPDFはもうメンテナンスされていないようです。
composer require tecnickcom/tcpdf
バージョン情報
"require": {
    "php": "^7.1.3",
    "phpoffice/phpspreadsheet": "^1.6",
    "tecnickcom/tcpdf": "^6.2"
},
日本語フォントインストール
TCPDFで日本語フォントを利用するを参照に設定してください。
ExcelからPDF出力
動かしたコードは以下になります
(composer でクリーンインストールした Laravel の HomeController で試しています)

事前に、 public/excel/template.xlsx にエクセルファイルを置いてください。
今回はboardの請求書エクセルテンプレート(無料)_タテ型_001で試してみました。
getActiveSheet();
        $sheet->setCellValue('A3', 'サンプル株式会社');

        File::setUseUploadTempDirectory(public_path());

        $writer = IOFactory::createWriter($spreadsheet, 'Tcpdf');
        $writer->setFont('ipaexm');
        $writer->save(public_path() . '/excel/output.pdf');

        $writer = new Xlsx($spreadsheet);
        $writer->save(public_path() . '/excel/output.xlsx');
    }
}
エクセル出力はバッチリでした!
残念なPDF・・・
ということで、日本語出力するという目的は達成できましたが、業務で利用するレベルのPDFにはなりませんでした。PDF出力は闇が深い・・・
このテキストを変更するには編集ボタンをクリックしてください。Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
サンプルプログラムは
composercomposer.jsonfontjapaneseLaravelpdfPHPTCPDF日本語

kaneko tomo   kaneko tomo   2019年2月17日


関連記事

AWSのRDSをアップグレードのためテスト

こんにちはいけしまです。たてつづけにブログ投稿。 もうひとつ前のブログで書いたR…

Maven Cookbook にあった Jetty の手順を試してみる

はじめに Apache Maven 3クックブック という本を買いました そこで…

Laravel NotificationsでChatworkに通知する

Laravel5.3より、Notificationsという仕組みが備わったので、…


← 前の投稿

次の投稿 →