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

Yii 1.1.29+PHP7.4环境下mPDF集成报错及替代方案咨询

解决方案:Yii 1.x 直接使用 mPDF 8.x(无需 yii-pdf 扩展)

一、直接使用 mPDF 的可行性

完全可以跳过老旧的 yii-pdf 扩展,直接使用 mPDF 8.x。mPDF 8.x 原生支持 Composer 自动加载,适配 PHP 7.4,比依赖11年未维护的扩展更稳定可靠。

二、配置自动加载

  1. 确认你已在 protected 目录执行 composer require mpdf/mpdf(推荐用require替代install,更符合Composer规范),成功生成 composer.json 和 vendor 文件夹。
  2. 在Yii入口文件(通常是根目录的index.php)最顶部,引入Composer自动加载器:
require_once __DIR__ . '/protected/vendor/autoload.php';

引入后,mPDF的所有类会被自动加载,无需手动配置文件路径。

三、直接使用 mPDF 的示例代码

在Yii控制器或模型中,可直接实例化mPDF并生成PDF:

// 控制器中的示例方法
public function actionGeneratePdf()
{
    // 实例化mPDF,可传入自定义配置参数(如页面尺寸、编码等)
    $mpdf = new \Mpdf\Mpdf();
    
    // 设置PDF内容(支持HTML格式)
    $content = '<h1>测试PDF生成</h1><p>这是直接使用mPDF生成的内容</p>';
    $mpdf->WriteHTML($content);
    
    // 输出PDF:DOWNLOAD为下载,INLINE为浏览器预览
    $mpdf->Output('测试文档.pdf', \Mpdf\Output\Destination::DOWNLOAD);
    Yii::app()->end();
}

四、修复 yii-pdf 扩展的可选方案(不推荐)

如果坚持要使用旧扩展,可尝试以下调整,但无法保证长期兼容性:

  • 修正librarySourcePath配置,mPDF 8.x的核心类路径为protected/vendor/mpdf/mpdf/src/Mpdf.php,配置应改为:
'librarySourcePath' => 'application.vendor.mpdf.mpdf.src',
  • 在EYiiPdf.php文件开头添加Composer自动加载引入:
require_once Yii::getPathOfAlias('application.vendor.autoload');

注意:由于yii-pdf扩展年代久远,即使修复当前错误,后续可能还会出现更多兼容性问题,优先推荐直接使用mPDF原生方案。

内容的提问来源于stack exchange,提问作者Nicolas400

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:41:02