2018/11/13 追記 結論
Chromium 72.0.3606.0(Developer Build)を使ったところ直ったので、次のバージョン(1.11)では直るはず。
そのため1.10をスキップするだけで問題は解決しそう。
追記ここまで
yagish履歴書のHTML→PDF変換で使っているpuppeteerのバージョンを1.8.0から1.10.0にしたところ、PDFで日本語が表示できなくなった。
Ubuntu16.04上のDockerで動かしており、puppetter以外の違いはないこと、screenshotの画像は問題なく日本語が表示されるので、フォントのインストールなどは関係なさそう。
リリース情報を見ると、1.9まではChromium 71、1.10からChromium 72を使うようになったのでそこが原因っぽい。
1.9も試したところ問題なかった。
またChromiumではなく別途インストールしたChrome70を、1.10から使った場合も大丈夫だった。
Releases · GoogleChrome/puppeteer · GitHub
生成されたPDFをChromeで開くと問題なく表示されるが、Acrobatで開くと下記のように警告がでる。
PDFへのフォントの埋め込みがうまくいってない?
2018/11/9 14時追記
GihHubのissueを見ていたら文字化けではないけどハングするというのを見つけた。
引き続き調査中
2018/11/13 追記
puppeteerとChrome側をいくつか差し替えて確認
- puppeteer 1.10 + Chromium 72 (デフォ) → NG
- puppeteer 1.10 + Google Chrome 70 → OK
- puppeteer 1.9 +Chromium 71(デフォ) → OK
- puppeteer 1.8 +Chromium 71(デフォ) → OK
ということでChromiuimバージョン72が日本語が表示できない原因である確率がかなり高そう。
1.10 + Chromeで動かす選択肢もあるが、バージョンは揃えた方がいいというのもどっかに書いてあったので、puppeteer1.9を指定してインストールして使うのが今のところ一番良さげ。
Chromium 72 をUbuntuの入っているノートPCで動かそうと思ったけど、apt-getだと70しか入れられず、なかなか面倒。
Developer Buildはバージョン72.0.3606.0、ビルド済みで簡単にダウンロード&実行できたので、Yahoo!トップページをPDF化したところ、問題なく日本語フォントは埋め込まれ表示されてた。
Developer Buildは下記ページをブラウザの開発者ツールでUAをLinuxのものにしたらLinux版がダウンロードできる。
download-chromium.appspot.com
使用したUA
Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
Developer Buildとpuppeteer同梱(72.0.3582.0)は細かいバージョン差があるため、Chromium72自体ではなく、puppeteer1.10との組み合わせの問題なのか、まだ確信が持てない。
そのため下記2つを試す。
- puppeteer 1.9 + Chromium 72.0.3606.0(Developer Build) → OK
- puppeteer 1.10 + Chromium 72.0.3606.0(Developer Build) → OK
なんとChromiumを最新の開発版にするだけで直ってしまった。つまりこのバグはChromium(72.0.3582.0)のもので、開発版ではすでに修正されているみたい。
puppeteer 1.11にはこの直ったChromiumが同梱されるはずなので1.10はスルーして1.11を待つことにする。