Print Invoice & Delivery Notes for WooCommerceの文字化け対策

WordPress + WooCommerce環境で、注文/発送完了メールに自動的に領収書や納品書PDFを添付する表記プラグインPrint Invoice & Delivery Notes for WooCommerceですが、Edgeでは表示できるものの、AcrobatやiOS/macOSの「プレビュー」では文字化けしてしまいます。

Acrobatではこうしたエラーも。

■Step1. 全化けに対処

どうもフォントの埋込みに失敗しているっぽい。このプラグインには「WooCommerce」→「Print Invoices & Delivery Notes」→「Settings」→「Font Setting」にフォントをアップロードする項目があります。

これをいつどうやって設定したか覚えていませんが、こうなっていました。

NotoSansJP_v5.ttfと同_boldがアップされている状態。これを改めて「Download Noto Sans JP→」リンクからGoogle Fontsにとんでダウンロード。解凍すると以下のファイル群が出てきます。

_v5がついておらず、-Regularがついています。ファイルサイズも1/3くらい。v5をどこから拾ってきたアップしたのか覚えていませんが、とりあえずv5を一度削除(Remove)して、RegularとBoldをアップロード。

これで、大半の文字化けが治りました。

Step2.「領収書」見出しとショップ名の文字化け対策

しかし、まだ完璧とはいかず、先頭部分になにやら「NO GLYPH」のような表示が残ります。

HTMLプレビューでは上が「領収書」、二段目が店名のようです。これがPDF時点ではこうなってしまいます。

生成されたPDFをpdfontsコマンドで覗いてみると、

先程の、2フォントに加え、Interという欧文フォントが内部で使用されていることがわかりました。しかし、プラグインの設定画面にはこの第三のフォントを上書きする欄がありません。

そこでClaudeさんに相談して提案されたのが、HTMLプレビュー時点の「領収書」タイトルと店名のスタイルシートを上書きする方法。開発者モードでそれぞれのクラスを調べると、.wcdn-titleと.wcdn-shop-nameでした。これをちょちょいと上書きしてここのNotoSansJPを使用するように書き換えるPHPコードをfunctions.phpに書いたら、見事最後の文字化けも解消しました。

将来的にはプラグイン自体が修正されて、第三フォントの上書き設定項目が追加されるかも知れませんが、やってることは既存の2フォントへのフォールバックで、きちんと極太ウェイト(600)にもなっているので、フィルターを消し忘れても実害はないかなと思います。

この記事がお役に立ったなら簡単にカンパできます。

QRコードを読み取って寄付

スマホから

Powered by Stripe logo

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)