[[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ページにうまく納まらない場合は、印刷の拡大縮小の設定を見直すと良いかも。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS