yii2 mpdf渲染html达到最大内存大小

时间:2017-06-16 15:45:45

标签: yii2 mpdf

我试图在Yii2框架上使用mdpdf渲染一个非常大的pdf。 我创建了一个html页面,但是当我调用render函数时,php会耗尽内存。

我不想扩展memory_limit ini设置(256M超出必要条件)。 我使用这个配置,$html包含我的巨大代码:

$pdf = new Pdf([
    'mode' => Pdf::MODE_CORE,  
    'content' => $html,
    'options' => [
        'title' => 'Report',
    ],        
    'marginHeader' => 2,

]);
return $pdf;

也许有一种方法来渲染步骤pdf?

1 个答案:

答案 0 :(得分:0)

在Yii2 mpdf中,内容通常是表单布局的renderPartial 并且renderPartial由一个或多个模型填充,这些模型是查询的结果,例如:

    $models = MyModel::find()->all();
    $content = $this->renderPartial('_mpdf_report_scheda',  [
            'model' => $models,
           ]);

$pdf = new Pdf([
    .......
    'content' => $content,

可能是在你的情况下,查询的结果检索到很多行,所以你可以在一个部分中拆分你的内容

例如:使用limit()和offset()

    $models = MyModel::find()
    ->limit(20)
    ->all();

      $models = MyModel::find()
    ->limit(20)
    .>offset(20)
    ->all();    

并启动部分的pdf