--> -->
#blog2navi() *wkhtmltopdfをApacheから呼ぶ際にはまった話 [#l38836e8] ~PHPからPDFを生成する際のライブラリの中で、最強と名高い[[wkhtmltopdf:https://wkhtmltopdf.org/]]を使ってみました。 ~今までは[[TCPDF:https://tcpdf.org/]]を使用していたものの、制限が多すぎて色々と苦労していたのも一気に解決です。 ~ ~PHPでPDFを生成するライブラリはTCPDFの他にも幾つかありますが、いずれも自前でCSS等をレンダリングしており、昨今の非常に複雑なCSSを網羅できるものではありません。しかし、wkhtmltopdfはwebkitのエンジンを使うGoogle謹製のツールとのことで、若干ずるいですがこれに勝るものは無いと同時に、通常のHTMLにできてこれでできない事は無いと思われます。 ~ ~インストールや使い方は、[[ググればいくらでも:https://www.google.com/search?q=wkhtmltopdf+php]]出てきますので、そちらを参考にしてください。 ~本題です。 ** 問題 [#q9472dda] ~手順通りに日本語フォントをインストールしたのに、''WEBサーバー経由でPDF生成した場合だけフォントが表示されない''です。 ** 原因 [#n7d80740] ~原因は、フォントファイルの権限がインストール者の700になっていたためでした。~ フォントのインストール手順は、いずれの解説ページでも以下のような感じになっています。 $ wget https://oscdl.ipa.go.jp/IPAexfont/IPAexfont00401.zip $ unzip IPAexfont00401.zip $ sudo mv IPAexfont00401 /usr/share/fonts しかしこのままでは、ファイルの状態が以下のようになります。 -rwx------ 1 atsumi atsumi 6099900 Apr 26 12:20 ipaexg.ttf -rwx------ 1 atsumi atsumi 7835672 Apr 26 12:20 ipaexm.ttf -rw-r--r-- 1 atsumi atsumi 20564 Apr 26 13:44 IPA_Font_License_Agreement_v1.0.txt -rwx------ 1 atsumi atsumi 1834 Apr 26 14:05 Readme_IPAexfont00401.txt 結果、テスト時に自分のアカウントでコマンドラインからwkhtmltopdfを実行すると、作成されるPDFでは正常に日本語が表示されるのですが、いざPHPに組み込んでWEBサーバー経由で実行すると文字化けする(実行ユーザーがapache等なのでフォントファイルが読めない)、という現象が起きます。 ~私はapacheユーザーと自分ユーザーの環境を比較したりと、半日ほど使って諸々調べた結果、漸くたどり着きました。 ** 解決策 [#k05d1d95] ~もちろん以下の通りです。 $ sudo chown root:root /usr/share/fonts/IPAexfont00401 -R $ sudo chmod 644 /usr/share/fonts/IPAexfont00401/*.ttf 皆様もお気をつけを・・(何に?)。 #htmlinsert(twitterbutton.html) RIGHT:Category: [[[Linux>日記/Category/Linux]]] - 15:14:49 ---- RIGHT:&blog2trackback(); #comment(above) #blog2navi()