skimemo


skimemo - 日記/2019-10-05/wkhtmltopdfをApacheから呼ぶ際にはまった話 の変更点


#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()