使用mpdf生成多个pdf文件但只生成一个

Generating mutliple pdf files using mpdf but only one is generated

我想用mpdf库生成多个文件,可惜只生成了一个文件,没有生成多个,请问怎么办。感谢您的关注。

for ($i=1; $i<count($sheetData); $i++)
 {
  $name = $sheetData[$i][0];
  $fName = $sheetData[$i][1];
                      
  $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => [290, 236]]);
  $stylesheet = file_get_contents('../assets/css/style.css');
  $mpdf->WriteHTML($stylesheet, \Mpdf\HTMLParserMode::HEADER_CSS);
  ob_end_clean();
                       
  $html = $mpdf->WriteHTML('<p>My Layout is there</p>');
  $filename = time().'.pdf';
  $mpdf->Output($filename ,'D');
  unset($mpdf);
}

你需要保存它们。你不能用“D”或“I”一次输出它们

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

如果需要一个文件并添加 Page() https://mpdf.github.io/reference/mpdf-functions/addpage.html

$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => [290, 236]]);

for ($i = 1; $i < count($sheetData); $i++) {
    $name = $sheetData[$i][0];
    $fName = $sheetData[$i][1];

    $stylesheet = file_get_contents('../assets/css/style.css');

    if ($i > 1) {
        $mpdf->AddPage();
    }
    $mpdf->WriteHTML($stylesheet, \Mpdf\HTMLParserMode::HEADER_CSS);
    $mpdf->WriteHTML('<p>My Layout is there</p>');


}

$filename = 'my.pdf';
$mpdf->Output($filename, 'F');

你也可以先创建html

$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => [290, 236]]);
$html = '';
for ($i = 1; $i < count($sheetData); $i++) {
    $name = $sheetData[$i][0];
    $fName = $sheetData[$i][1];
    
    $html .=  '<p>My Layout is there</p>';
    
}

$stylesheet = file_get_contents('../assets/css/style.css');

$mpdf->WriteHTML($stylesheet, \Mpdf\HTMLParserMode::HEADER_CSS);
$mpdf->WriteHTML($html);
$filename = 'my.pdf';
$mpdf->Output($filename, 'D');

您想将多个 PDF 文件发送到客户端还是将它们保存在磁盘上?

您正在使用 time() 作为伪随机文件名,但是如果 PDF 文件的生成速度足够快并且在同一秒内发生,您将覆盖之前生成的文件,至少如果您选择将生成的文件存储在磁盘上。你可能想使用 "generated_$i" 之类的东西而不是 time().