Help us understand the problem. What is going on with this article?

office系ファイルをPDFに変換する(PHP+LibreOffice)

自分自身の過去記事(既に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でのコマンド実行

sample.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ファイルが生成されます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした