--> -->
#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();
- この記事に助けられました…ありがとうございます。 -- &new{2020-04-30 (木) 13:35:33};
- コメントありがとうございます、お役に立ったようで何よりです ;-) -- [[あき]] &new{2020-05-01 (金) 18:02:54};
#comment(above)
#blog2navi()