mpdf composer包已废弃,必须改用官方mpdf/mpdf包;其因未适配psr-4、不支持php 7.4+及composer 2.x,且2018年已从packagist下架并归档github仓库。

mPDF Composer 包早已废弃,官方不再维护,直接安装会失败或生成损坏 PDF;现在必须用 mpdf/mpdf 官方包。
为什么 mpdf/mpdf-composer 装不上或报错
这个包在 2018 年就从 Packagist 下架了,GitHub 仓库也归档(read-only),Composer 找不到它,或者拉到的是空壳版本。常见错误包括:
Could not find package mpdf/mpdf-composerRoot composer.json requires mpdf/mpdf-composer ^8.0, it could not be found- 装上后调用
new \mPDF()报类不存在——因为自动加载没注册,包结构不兼容现代 PSR-4
根本原因:它只是早期对 mPDF 的简单打包,没做命名空间适配、没加 autoload 配置,也不支持 PHP 7.4+ 和 Composer 2.x。
正确安装官方 mpdf/mpdf 的步骤
从 v8.0 开始,mPDF 官方自己维护 Composer 包,路径是 mpdf/mpdf,不是 mpdf/mpdf-composer。安装前确认:
- PHP 版本 ≥ 7.4(v8.1+ 要求 ≥ 8.0)
- 已启用
mbstring、gd、xml扩展(缺一个都可能静默失败) - 磁盘有写权限(临时字体缓存目录需要可写)
运行:
composer require mpdf/mpdf
如果项目用了 Laravel 或 Symfony,不需要额外配置自动加载——它自带 PSR-4 声明,new \Mpdf\Mpdf() 可直接用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
初始化时最常踩的坑:中文乱码和字体报错
mPDF 默认不带中文字体,utf-8 内容直接输出会空白或方块。别急着下载字体文件手动复制,先用内置方案:
- 用
autoScriptToLang+autoLangToFont自动映射:$mpdf = new \Mpdf\Mpdf([ 'autoScriptToLang' => true, 'autoLangToFont' => true ]); - 确保 HTML 中声明了语言:
,否则自动识别失效 - 如果仍报
Unable to find TTF font file,说明系统缺失默认字体(如 DejaVuSans),此时才需显式指定:$mpdf = new \Mpdf\Mpdf([ 'fontDir' => __DIR__ . '/fonts/', 'fontData' => [ 'simhei' => [ 'R' => 'simhei.ttf', ] ], 'default_font' => 'simhei' ]);
注意:fontDir 路径必须是绝对路径,相对路径会导致找不到文件;.ttf 文件需放在该目录下且 Web 服务器有读权限。
生成 PDF 后空白或只显示标题
不是代码问题,大概率是输出前有意外输出(比如 echo、空格、BOM)破坏了 HTTP 头。检查:
- PHP 文件保存为 UTF-8 无 BOM 格式(VS Code / PHPStorm 默认可能带 BOM)
- 所有
.php文件顶部不能有任何空行、<?php前不能有空格 - 调用
$mpdf->Output()前,确保没触发过var_dump、print_r、error_log等 - 如果走 AJAX 请求生成 PDF,不要用
fetch直接接收二进制流——浏览器不会自动下载,得用responseType: 'blob'+URL.createObjectURL
调试技巧:先注释掉 Output(),改用 file_put_contents('test.pdf', $mpdf->Output('', 'S')),确认内容是否正常生成。
字体路径、HTTP 输出污染、扩展缺失——这三处出问题的概率加起来超过八成。其他细节可以慢慢调,但这三个点不先清掉,PDF 就永远是白纸一张。










