PhpSpreadsheetでExcelファイルをゴニョゴニョし、それをPDFファイルへ変換して出力したい。 フリーソフトのLibreOffice(リブレオフィス)を使用すると簡単に実現できそう。 LibreOfficeのインストール †大量に色々入ります。 # yum install libreoffice AWSなどyumで入れられない場合 †公式サイトから安定版 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 フォントの設置 †そのまま使用すると日本語が文字化けするのでIPAexフォントを利用させていただきます。 IPAexfont00401.zip をダウンロードし、ipaexg.ttf, ipaexm.ttfの2ファイルを以下へ設置します。 変換 †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ページにうまく納まらない場合は、印刷の拡大縮小の設定を見直すと良いかも。 |