You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FPDF无法添加Calibri字体,代码无报错中断该如何解决

FPDF添加Calibri字体故障排查与解决方案

代码无报错直接终止的原因

你遇到的无报错终止本质是PHP触发了未捕获的致命错误,结合Ubuntu 20.04 + PHP 7.4的环境,常见诱因有三个:

  1. 错误显示默认关闭:PHP 7.4生产环境默认关闭display_errors配置,致命错误不会打印到页面,只会直接终止执行。
  2. 权限不足:/usr/share/php/fpdf/font目录默认属主为root,Web运行时的www-data用户没有该目录下字体文件的读取权限。
  3. 字体文件问题:转换生成的calibri.php等字体定义文件损坏、不存在,或者文件名大小写不匹配(Linux系统大小写敏感),加载时触发文件不存在的致命错误。

编码选择方案

  1. 若你的PDF仅包含西欧语言字符,可继续使用默认的cp1252编码,无需额外调整。
  2. 若需要输出中文、东亚字符或特殊符号,必须转换为UTF-8编码,转换字体时需指定编码参数为UTF-8,同时开启Unicode支持即可。

字体路径正确配置方法

  1. 路径正确性校验:在定义FPDF_FONTPATH后新增一行校验代码,确认路径有效:
var_dump(is_dir(FPDF_FONTPATH));

如果返回bool(false),说明你填写的FPDF字体目录路径错误,需替换为实际存放font文件夹的绝对路径。
2. 权限配置:执行两条命令配置目录权限,确保Web用户可读取字体文件:

sudo chmod -R 755 /usr/share/php/fpdf/font
sudo chown -R www-data:www-data /usr/share/php/fpdf/font
  1. 文件校验:确认转换生成的三个字体文件calibri.php、calibri.z、calibri.ttf(未开启压缩则不需要)都已放入font目录,文件名大小写和AddFont方法中填写的完全一致。

快速修复步骤

  1. 代码开头开启错误显示,先拿到具体报错信息:
ini_set('display_errors', 1);
error_reporting(E_ALL);
  1. 重新转换字体:使用FPDF自带的makefont工具转换Calibri字体,若使用UTF-8编码执行以下命令:
php makefont.php calibri.ttf UTF-8 true
  1. 转换完成后将生成的三个文件上传到font目录,重新执行代码即可。

内容的提问来源于stack exchange,提问作者Mohamed Ayman Ragab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:45:03