DOMPDF 是通过 Composer 安装的 PHP 类库,需用 composer require dompdf/dompdf 而非 composer install;安装后需手动编写 PHP 脚本调用 Dompdf 类渲染 HTML 为 PDF,依赖 mbstring 和 gd 扩展,且不支持 flex/grid 等现代 CSS。

DOMPDF 不是 Composer 的“安装目标”,而是通过 Composer 安装的 PHP 库;你真正要做的,是用 composer require 加入 dompdf/dompdf,再手动加载或配合自动加载使用 —— 它本身不提供命令行工具,也不自动生成 PDF。
为什么 composer install dompdf 会报错?
因为 composer install 只读取当前项目的 composer.json 并安装依赖,它不接受包名作为参数。想加 DOMPDF,必须用 composer require。
-
composer install dompdf/dompdf→ 报错:Unknown command "install"或类似提示 - 正确命令是:
composer require dompdf/dompdf - 如果项目没初始化过 Composer,先运行
composer init或直接composer require(会自动创建composer.json) - 国内用户建议提前配置镜像源,否则可能卡在下载
dompdf/dompdf或其依赖phenx/php-font-lib上
安装后怎么用?不是执行一个命令就出 PDF
DOMPDF 是一个类库,不是 CLI 工具。你需要写 PHP 脚本,实例化 Dompdf 类,传入 HTML 字符串,再调用 render() 和 output()。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 确保已启用 PHP 的
mbstring和gd扩展(DOMPDF 渲染字体和图像依赖它们) - 最简可用示例:
<?php require 'vendor/autoload.php'; use Dompdf\Dompdf; $dompdf = new Dompdf(); $dompdf->loadHtml('<h1>Hello World</h1>'); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); $dompdf->stream('hello.pdf'); - 注意:
$dompdf->stream()会直接输出 PDF 到浏览器并终止脚本;如需保存文件,改用$dompdf->output()获取二进制内容,再用file_put_contents()
常见报错和对应处理
DOMPDF 错误往往不直观,但高频问题就那几个:
-
Class 'Dompdf\Dompdf' not found→ 检查是否漏了require 'vendor/autoload.php',或命名空间拼写错误(比如写成DOMPDF或dompdf) -
Failed to load PDF document(前端报错)→ 实际是 PHP 输出了警告/错误(如未启用mbstring),导致 PDF 流被污染;用ob_clean()+flush()前置清理输出缓冲,或先用error_reporting(0)快速验证 - 中文乱码或空白 → DOMPDF 默认不支持中文字体;必须显式注册字体(如 Noto Sans CJK),并确保字体文件路径可读,且在 HTML 中用
font-family指定 - 大 HTML 渲染超时 → DOMPDF 内存占用高;可通过
ini_set('memory_limit', '512M')临时放宽限制,但更稳妥的是精简 HTML 结构、避免复杂 CSS 布局
DOMPDF 的核心复杂点不在安装,而在 HTML 到 PDF 的渲染边界:它不支持所有 CSS(比如 flex、grid、position: fixed 多数无效),字体和图片路径也必须是绝对本地路径或 data URI。这些细节不报错,但结果出不来,最容易让人反复怀疑是不是装错了。


















