自分自身の過去記事(既に3年前)の焼き直しです。
時の流れは早い。。過去の自分が役立つかもと思い、整理しました。
PHP+LibreOffice実行環境の構築手順をまとめてます。
ちゃちゃっと環境構築したいなら、「作業手順」の項だけ読んでください。
使い勝手、注意事項
- 変換後PDFの再現度はソコソコ。ページ・印刷設定はまず再現されない。PrimoPDFとかのレベルを期待してはダメ。
- 変換処理速度はそんなに期待できない。PHPExcelと同レベルの遅さかと(体感)。ファイルサイズが数MBを超えだすと1minでもキツそう。
- LibreOfficeインストールに2GB程度はディスク容量が必要。
顧客要件(プレビューの再現性)が厳しい場合のPDF変換には正直、導入しづらい、、、
でも、Word/Excel/PowerPoint全てに対応できる点が◎
作業時にハマったポイント
libreoffice-packageのインストール
wget
,rpm
コマンドを使いこなしている人は大丈夫。yum install
に普段頼りきりだとハマりそう。
font-dataのインストール
linux環境でのゴシック、明朝fontなどの使用を意識できている人は大丈夫。
PHPでのコマンド実行
apacheユーザ・環境変数の設定がキッチリされていれば、すんなり実行できるかも。
コケた場合はwarning・error-log出力などの手がかりなく、超ハマっちゃいました。。。
作業手順
libreoffice-packageのインストール
packageがyum管理下にあるなら、↓で一発。
# yum install libreoffice libreoffice-langpack-ja
ない場合は↓。 (自分でダウンロード、インストールする。)
# cd /tmp
# wget http://download.documentfoundation.org/libreoffice/stable/5.0.4/rpm/x86/LibreOffice_5.0.4_Linux_x86_rpm.tar.gz
# wget http://download.documentfoundation.org/libreoffice/stable/5.0.4/rpm/x86/LibreOffice_5.0.4_Linux_x86_rpm_langpack_ja.tar.gz
# yum install libXinerama.so.1
# yum install libGL.so.1
# tar zxvf LibreOffice_5.0.4_Linux_x86_rpm.tar.gz
# cd LibreOffice_5.0.4.2_Linux_x86_rpm/RPMS/
# rm libobasis5.0-gnome-integration-5.0.4.2-2.i586.rpm
# yum install *.rpm
# tar zxvf LibreOffice_5.0.4_Linux_x86_rpm_langpack_ja.tar.gz
# cd LibreOffice_5.0.4.2_Linux_x86_rpm_langpack_ja/RPMS
# yum install *.rpm
以下のコマンドが通ればインストールOK。
# /opt/libreoffice5.0/program/soffice.bin --help
補足、苦しんだトコ
- libobasis5.0-gnome-integration-5.0.4.2-2.i586.rpmは、依存関係の解消がメンドクサくて断念。GUI機能向けだし、今回のコマンド実行には支障がないためインストール対象から除外した。。
font-dataのインストール
# wget http://dl.mojikiban.ipa.go.jp/IPAmjMincho/ipamjm00301.zip
# unzip ipamjm00301.zip
# cd ipamjm00301
# mv ipamjm.ttf /usr/share/fonts
以下のコマンド結果リストに「IPAmjMincho,IPAmj明朝:style=Regular」があればOK。
#fc-list
補足
- WindowsPC内からMSフォントを持ってきても実行できるが、ライセンス違反なのでやらない。
PHPでのコマンド実行
exec("export HOME=/tmp;/opt/libreoffice5.0/program/soffice.bin --headless --convert-to pdf --outdir /home/s3_bucket/image /home/s3_bucket/image/master.doc");
↑の感じで実行できます。
サンプルだと/home/s3_bucket/image/master.pdfファイルが生成されます。