Laravel 9 中Dompdf生成PDF异常:每个字母单独换行
Laravel Dompdf生成PDF每个字母单独换行(仅本地环境)的解决思路
以下是针对该问题的具体排查和解决步骤:
检查Dompdf版本一致性
虽然你没执行过composer命令,但本地composer.lock里的Dompdf版本可能和测试/生产环境不一致。先在本地执行composer show dompdf/dompdf查看版本,再对比测试环境的版本。如果版本不同,执行composer require dompdf/dompdf:线上版本号同步版本。重置Dompdf字体缓存
本地字体缓存损坏可能导致渲染异常。找到Laravel项目中Dompdf的字体缓存目录(一般是storage/framework/cache/dompdf或storage/app/dompdf),删除该目录下的所有文件,然后重新生成PDF。
同时可以在PDF视图的CSS里强制指定系统通用字体,避免自定义字体加载失败:body { font-family: "Arial", "Helvetica", sans-serif; }清理Laravel视图与应用缓存
本地视图编译缓存可能存在异常,执行以下命令清除:php artisan view:clear php artisan cache:clear之后重新生成PDF测试。
检查PHP扩展配置
Dompdf依赖GD或Imagick扩展处理文本渲染,本地扩展版本或启用状态可能和线上不同:- 运行
php -m查看GD、Imagick是否已启用; - 对比本地与线上的phpinfo()输出,确认扩展版本差异;
- 尝试切换渲染后端,在
config/dompdf.php中修改DOMPDF_ENABLE_IMAGICK的值(true/false),再测试。
- 运行
排查视图模板的CSS问题
虽然线上正常,但本地环境可能对某些CSS属性解析不同:- 检查容器元素是否设置了过窄的宽度,或者误加了
word-break: break-all、white-space: pre这类强制换行的属性; - 简化视图模板,先输出一段普通文本(比如
<p>测试文本内容</p>),看是否还会出现字母换行,逐步定位问题代码块。
- 检查容器元素是否设置了过窄的宽度,或者误加了
内容的提问来源于stack exchange,提问作者userpc1000
相关产品推荐
相关产品推荐

