2017-06-16 55 views
0

我试图在Yii2框架上使用mdpdf渲染一个非常大的pdf。 我生成一个html页面,但是当我调用render函数时,php耗尽内存。yii2 mpdf渲染html达到最大内存大小

我不想扩大memory_limit ini设置(256M是超过必要的)。 我使用这种配置,$html包含了我巨大的代码:

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

]); 
return $pdf; 

也许有一种方法来呈现步骤步骤的PDF?

回答

0

在Yii2 MPDF内容通常是一个形式布局 一个的RenderPartial和的RenderPartial由是查询例如,结果一个或多个模型填充:

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

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

可能是你的情况查询的结果,检索到多行,这样就可以spliet你的部分内容

例如:使用限制(和偏移量)

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

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

并启动部件的pdf