【问题标题】:How to generate a multiple documents by mpdf library?如何通过 mpdf 库生成多个文档?
【发布时间】:2019-06-27 11:12:11
【问题描述】:

我一直在尝试生成多个 pdf。我该怎么做?

我尝试使用 for 循环,但不知道如何继续。

for ($i = 0; $i < 10; $i++) {
    $mpdf = new mPDF();
    $mpdf->WriteHTML('<p>Only test$i</p>');
    $mpdf->Output("Document_name$i.pdf", "D");
}

exit;    

我预计此脚本将下载 10 个文档。

【问题讨论】:

    标签: php mpdf


    【解决方案1】:

    虽然 HTTP 在技术上确实通过 MIME-Multipart 在单个响应中支持多个文件,但浏览器支持是 mostly non-existent

    一种可能的做法是将每个生成的 PDF 添加到 ZIP 存档中,并将 ZIP 文件作为响应提供:

        $zip = new ZipArchive();
        $zipFile = tempnam('/tmp', 'zip');
        $zip->open($zipFile, ZipArchive::CREATE);
    
        for ($i = 0; $i < 10; $i++) {
            $mpdf = new mPDF();
            $mpdf->WriteHTML('<p>Only test$i</p>');
            $pdfData = $mpdf->Output("", \Mpdf\Output\Destination::STRING_RETURN);
            $zip->addFromString("Document_name{$i}.pdf", $pdfData);
        }
    
        $zip->close();
    
        header("Content-type: application/zip");
        header('Content-Disposition: attachment; filename=Documents.zip'); 
        readfile($zipFile);
    
        unlink($zipFile);
        exit;
    

    【讨论】:

    • 你能告诉我怎么做吗?我真的不知道,我站在这一步超过 1 周。
    • 谢谢您,先生,您救了我的命!
    • 我很抱歉垃圾邮件.. zip 已成功下载,但我无法打开存档。请你帮助我好吗? mpdf是composer下载的,所以我认为这里没有问题,我有最新版本的库。
    • 我的错误——readfile($zipData) 行中有一个错误。 readfile 需要 $zipFile 变量。现已修复。
    • 为了进一步调试,我建议暂时注释掉对unlink的调用并检查服务器上的ZIP文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多