PuppeteerでWebフォントを含むページのPDF化をするとAdobe Readerで文字化けする
久しぶりにバグの共有エントリ。
Webフォントを使っているページを印刷するとAdobe Readerで読み込んだときだけエラーが出てしまう。ブラウザ上のPDFリーダーやMacのプレビューだと問題なく、Adobe ReaderやAdobe AcrobatだとMac/Winどちらでもエラーが出る。
画像の右側部分のように文字化けしてしまう。
Webフォント(今回はNoto Sans)の読み込みの問題かと思いwaitかけてみたりWebフォントの読み込み方を変えたりしたものの一向に解決せず。
Cloud Functions上だったのでこれはデバッグ無理だなと思ってMacでもやってみたらやはり同様のエラーに。今度はPuppeteerのlaunch部分でMac上のChromeを指定したら問題なく印刷されるように。ということで原因はChromiumだった。
ChromeのバージョンにChromiumが追いつくまで待つのかなぁと思ったらChromiumの最新がv72に対してChromeはv70でChromiumの方がバージョンの進みが早い模様。Chromiumに手を入れてChromeにするから当たり前か。
ということでPuppeteerのバージョンを1.10.0から1.9.0に下げて利用するChromiumのバージョンを71にしたら無事解決。
別件でChromeで印刷してもらう仕組みを作ったことあるけどその時も印刷機能はアップデートで突如としてバグるので辛かったなという思い出。
ひとまずはこれで解決。
GoogleのCloud Functions上で実行していたのだが、Cloud FunctionsもWebフォントもあまり使わないので切り分けがうまくできず原因特定に時間がかかってしまった点は反省したい。
それはそれとしてこの件はChromiumにバグ報告すべきな気もするけどどうしようかな。