WHMCS设置:账单PDF不能显示中文

2023年10月14日 | 分类: 【源码】

问题:当生成账单PDF时,中文字符不能正常显示。

原因: WHMCS 使用开源项目 TCPDF 来生成 PDF 文件,但该项目本身并不支持中文字符因为缺少相关中文字体。

解决办法:
1. 下载字体文件:https://drive.google.com/file/d/1jpDY0C3YnTVV4Sq-hqHzSdnHa0rOW8xe/view?usp=sharing
2. 上传3个字体文件至 whmcs 相关目录之下:/vendor/tecnickcom/tcpdf/fonts/
3. 到WHMCS后台:Configuration () > System Settings > General Settings (WHMCS 8.0之前版本, Setup > General Settings). 选择 Invoices 选项栏。
4. PDF Font Family 选项中选择Custom并填入 droidsansfallback

对文件不放心的可自己制作相关PHP字体文件:
1. 首先下载ttf字体文件: https://github.com/aosp-mirror/platform_frameworks_base/blob/de0fe2daafb769cc37ca922ffef6dbafb8c6cae2/data/fonts/DroidSansFallbackFull.ttf
注意这里得下载DroidSansFallbackFull 而不是 DroidSansFallback,因为本人实测直接使用DroidSansFallback.ttf制作的字体反而无法/正常显示英文。
2. 更换文件名 DroidSansFallbackFull.ttf 为 DroidSansFallback.ttf
3. 下载TCPDF项目并上传至装有PHP的linux服务器当中:https://github.com/tecnickcom/tcpdf
把DroidSansFallback.ttf字体放入fonts文件夹,并随便创立一个 a.php 文件:

<?php
require_once('../tcpdf.php');
$font = TCPDF_FONTS::addTTFfont(DroidSansFallback.ttf);
?>

4. 用php a.php 执行, 或者直接网页中打开 a.php 网页开始转档,转好之后会在fonts里面产生三个档案:droidsansfallback.php、droidsansfallback.ctg.z、droidsansfallback.z

参考:
https://whmcs.community/topic/273009-pdf-invoice-version-is-broken/
https://charles4code.blogspot.com/2018/09/few-notes-about-tcpdf-open-source-php.html
https://3wa.tw/mypaper/?uid=shadow&mode=view&id=1793
https://docs.whmcs.com/PDF_Invoice_Customisation