ハマログ

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

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出力は闇が深い・・・
サンプルプログラムは
composercomposer.jsonfontjapaneseLaravelpdfPHPTCPDF日本語

  kaneko tomo   2019年2月17日


関連記事

MySQLのインデックスサイズに767byteまでしかつかえない問題と対策

Laravel5.4でmigrationを実行したところ、エラーになりました。 …

XAMPPのphpMyAdminを最新版にアップグレード

XAMPP for WindowsのphpMyAdminを最新版にアップデートす…

よく知られているプログラミングの命名法

システムを複数人で開発するときに、記法や単位を一定のルールで統一します。 これを…


← 前の投稿

次の投稿 →