修正 Akaunting 出 PDF 中文字的問題

最近搞緊喱個 Akaunting 會計軟件,用到中文嘅時候啲 PDF 出唔倒中文字,個情況就好似上面張圖咁。

有片睇:

Akaunting 個畫面係出到中文字嘅:

問題係出 PDF 嘅時侯,佢用咗 Embedded Font,係正確嘅選擇,不過個 font 係 DejaVu Sans 就出事,DejaVu Sans 本身雖然已經係 utf-8 (Unicode),不過就唔係咩 language 佢都有字符,冇嘅話就會出現方格,就好似上面最大張嗰張圖咁,而中文字就正正係冇字符嘅,死未?

可以點?冇問題嘅,用 custom fonts 囉。

Akaunting 用 Laravel/DomPDF 出 PDF,Laravel/DomPDF 係 DOMPDF 嘅 wrapper,於是,跟 DOMPDF 教你點樣可以用 custom fonts 就對了。

DOMPDF 提供咗一個 handy 嘅 PHP Utils 俾你自動咁增加 fonts,手續係:

  • Download 隻 font 同埋 load_font.php 落去你隻 Akaunting 嘅 root
  • 改一改 load_font.php:
    #9 $fontDir = “storage/fonts”
  • 執行 terminal command:
    php load_font.php “Font Name” ./FontFile.ttf
  • 修改一下 config/dompdf.php:
    #81 “enable_font_subsetting” => true,
    #154 “default_font” => “YourFontName, DejaVu Sans, sans-serif”,
  • 修改一下 resources/views/partialsprint/head.blade.php
    #19 font-family: YourFontName, DejaVu Sans, sans-serif !important;

收工,就係咁簡單!

中文 font 我選咗 Google 同 Adobe 合作嘅 Noto Sans (思源黑體),佢有專為香港做嘅版本,而且,有網友再將思源加工做出昭源黑體,昭源黑體有齊 OTF 同 TTF 兩種,我哋要用 TTF,啱哂!