想要使用 mpdf 在单个文件中生成多个 pdf

问题描述

我正在使用 mpdf lib 生成多个文件,我不想单独生成所有文件,我想生成一个页面分隔的 pdf 格式的文件

添加了 addpage 方法生成单个文件,但出现问题,我的第一页按预期打印,但第二页是空白的。我知道我需要取消 dom 设置,因为这个库可以为多个文件生成新实例。

然后我决定在循环中取消设置 dom,当我的循环迭代完成时,它说 $mpdf var 不存在。有没有其他方法可以取消设置在单个文件生成多个页面的 dom?

如果我在文件末尾添加 unset,只有第一页可以成功,但第二页会留空。

 for ($i=1; $i<count($sheetData); $i++) {
  $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8','format' => [290,236]]);
                      $stylesheet = file_get_contents('style.css');
                      
                      $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
                     $html = $mpdf->WriteHTML('Hello World');
                     $filename = $key.''.time().'.pdf';
                      $targetPath = 'challans/Multiple/'.$dirName.'/';
                     
                     $mpdf->AddPage();  
                      
                  }  
                  $mpdf->Output($targetPath.$filename,'F');
                  unset($mpdf);

解决方法

在循环外创建新实例,它就像一个魅力,也删除了 $mpdf->AddPage();方法,因为它会自动分配新页面。

喜欢

for ($i=1; $i<count($sheetData); $i++) {
  $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8','format' => [290,236]]);
}

$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8',236]]);
for ($i=1; $i<count($sheetData); $i++) {
}

$mpdf->Output($targetPath.$filename,'F');
unset($mpdf);