- 追加された行はこの色です。
- 削除された行はこの色です。
[[PHPめも]]
PhpSpreadsheetでExcelファイルをゴニョゴニョし、それをPDFファイルへ変換して出力したい。~
ゴニョゴニョは [[PHPでExcelファイルを読み込む]] を参考。
フリーソフトのLibreOffice(リブレオフィス)を使用すると簡単に実現できそう。
*LibreOfficeのインストール [#lc59fe2f]
大量に色々入ります。
# yum install libreoffice
**AWSなどyumで入れられない場合 [#n668972a]
[[公式サイト:https://ja.libreoffice.org/]]から安定版 Linux x64 (rpm) をダウンロードします。
$ tar xvzf LibreOffice_6.1.6_Linux_x86-64_rpm.tar.gz
# rpm -ivh LibreOffice_6.1.6.3_Linux_x86-64_rpm/RPMS/*.rpm
エラー: 依存性の欠如:
libXinerama.so.1()(64bit) は libobasis6.1-core-6.1.6.3-3.x86_64 に必要とされています
# cd LibreOffice_6.1.6.3_Linux_x86-64_rpm/RPMS/
# yum install *.rpm
$ libreoffice6.1 -h
/opt/libreoffice6.1/program/soffice.bin: error while loading shared libraries: libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
# yum install dbus-glib
$ libreoffice6.1 -h
/opt/libreoffice6.1/program/soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory
# yum install cairo
$ libreoffice6.1 -h
/opt/libreoffice6.1/program/soffice.bin: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory
泣きそう
# yum install cups-libs
$ libreoffice6.1 -h
LibreOffice 6.1.6.3
*フォントの設置 [#ceb22063]
そのまま使用すると日本語が文字化けするのでIPAexフォントを利用させていただきます。~
https://ipafont.ipa.go.jp/
IPAexfont00401.zip をダウンロードし、ipaexg.ttf, ipaexm.ttfの2ファイルを以下へ設置します。~
/usr/share/fonts/japanese/TrueType/
*変換 [#q278bbea]
outdirで指定した場所へ Book1.pdfとして出力されます。
$ libreoffice --headless --nologo --nofirststartwizard --convert-to pdf --outdir ./ Book1.xlsx
PHPから実行する場合はHOMEディレクトリを指定してやります。
exec('export HOME=/tmp;libreoffice --headless --nologo --nofirststartwizard --convert-to pdf --outdir ./ Book1.xlsx');
1ページにうまく納まらない場合は、印刷の拡大縮小の設定を見直すと良いかも。