2017-06-16 52 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