PHP+LibreOfficeでEXCELファイルをPDFファイルを作成する
Contents
CUI環境でLibreOfficeを利用して、EXCELファイルをPDFファイルを作成する
PHPを利用している環境でEXCELファイルをPDFファイルに変換する必要な開発案件がありました。
GUI環境をEXCELからPDFファイルを変換するならOffice系ソフトを利用すれば簡単にできますが、PHPを利用してCUI環境でしようするので、「LibreOffice」を利用してコマンドラインで変換します
【環境】
- CentOS 7.7
- LibreOffice 6.4.4
LibreOfficeをインストール
CUI環境でPDF変換するのでGUI環境のX-Windowは不要です。ファイルのダウンロードのURLはダウンロードされる時期によってバージョンが異なりますので使用環境で変更して下さい
$ sudo cd /usr/local/src $ sudo curl -L -O "http://ftp-srv2.kddilabs.jp/office/tdf/libreoffice/stable/6.4.4/rpm/x86_64/LibreOffice_6.4.4_Linux_x86-64_rpm_langpack_ja.tar.gz" $ sudo curl -L -O "http://ftp-srv2.kddilabs.jp/office/tdf/libreoffice/stable/6.4.4/rpm/x86_64/LibreOffice_6.4.4_Linux_x86-64_rpm_helppack_ja.tar.gz" $ sudo curl -L -O "http://ftp-srv2.kddilabs.jp/office/tdf/libreoffice/stable/6.4.4/rpm/x86_64/LibreOffice_6.4.4_Linux_x86-64_rpm.tar.gz" $ sudo tar xzvf LibreOffice_6.4.4_Linux_x86-64_rpm_langpack_ja.tar.gz $ sudo tar xzvf LibreOffice_6.4.4_Linux_x86-64_rpm_helppack_ja.tar.gz $ sudo tar xzvf LibreOffice_6.4.4_Linux_x86-64_rpm.tar.gz $ sudo rpm -Uvh LibreOffice_6.4.4.2_Linux_x86-64_rpm/RPMS/*.rpm $ sudo rpm -Uvh LibreOffice_6.4.4.2_Linux_x86-64_rpm_langpack_ja/RPMS/*.rpm $ sudo rpm -Uvh LibreOffice_6.4.4.2_Linux_x86-64_rpm_helppack_ja/RPMS/*.rpm
シンボリックリンク作成
実行ファイルは、「/opt/libreoffice6.4/program/soffice」にインストールされます。このままだとバージョンが異なるごとにパスが変わるので「/usr/bin/soffice」にシンボリックリンク作成します
$ sudo ln -s /opt/libreoffice6.4/program/soffice /usr/bin/soffice $ ls -l /usr/bin/soffice lrwxrwxrwx 1 root root 35 Jun 25 16:50 /usr/bin/soffice -> /opt/libreoffice6.4/program/soffice
日本語フォントをインストール
PDF変換時に日本語の文字化けを防ぐ為、日本語フォントをインストールします
$ sudo yum install ipa-gothic-fonts ipa-pgothic-fonts $ sudo fc-cache -fv
PHPでEXCELファイルからPDF変換
EXCELファイルをPDF変換するには、以下のようなPHPで変換できます
LibreOfficeはPDF変換時には、実行ユーザのホームディレクトリにテンポラリファイルを作成します。WEB環境でPHPを使用する場合は、利用者はapacheやnginxのホームディレクトリが無いユーザーで実行されるので、環境変数でHOME設定をおこない「/tmp」等の指定する必要があります
<?php exec("export HOME=/tmp;/usr/bin/soffice \ --headless --convert-to pdf:writer_pdf_Export \ --outdir '/var/www/html/files/tmp' \ '/var/www/html/files/tmp/test.xlsx'"); ?>
ディスカッション
コメント一覧
まだ、コメントがありません