[PHP] PHPExcel と LibreOffice で PDF 作成がかなり良い

BtoB だと PHP でエクセルや PDF を扱う機会はちょいちょいある。エクセルだと PHPExcel。PDF だと FPDF。今回エクセルと PDF 両方必要になってちょっと考えた。PDF を PHP で作るのって面倒。エクセルをそのまま PDF 化できたら楽じゃないかなと。PHPExcel でも PDF で出力できるんだけど、レイアウトがまったく意図しないものになって使い物にならない。

いろいろ探してる中で実際やってみてこれだ!ってのがあったのでここにまとめておきます。たぶんこのパターンが定石だと。てか、結構一般的なのだろうか?みなさんどうしてます?PHPExcel でエクセルファイルを作って LibreOffice で PDF に変換。PHPExcel の使い方は検索すればいくらでも出てくるので割愛(PHPExcel が遅い)。で、LibreOffice の使い方。

インストールの方法はいくつかあるだろうけど簡単そうなので yum で。
yum install libreoffice libreoffice-langpack-ja
さっそくエクセルファイルを PDF に変換してみたらこんなエラー。
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)

なんかよくわからないけどいろいろ検索しては試してで解決に導いてくれたコマンドがこれ。
yum install openoffice.org-headless
後はこんな感じでエクセルが PDF に!
libreoffice --headless --nologo --nofirststartwizard --convert-to pdf filename.xlsx
※開発サーバーにインストールしようとしたら容量が足りなくて失敗。2Gくらい空き容量が必要。あと JAVA とか PostgreSQL なんかも絡んできたり。

かわのくんとは

Web系IT企業でプログラミングやマネジメントをしています。趣味で音楽を少々。

Youtubeでライブ動画配信中

Ustreamでライブ動画配信中

スマートフォン向けにPCサイトを自動変換(コンバート)する『CONV2SP』 CSS作成支援ツール『CSSツクール』