1

这更像是一个概念性问题,但我想知道是否可以在下载时将 mPDF 的输出直接流式传输给用户(例如,无需保存在服务器上的临时文件夹中或加载到用户的浏览器中)。

我正在使用类似的方法成功地使用ZipStreamAWS PHP S3 Stream Wrapper下载 S3 照片的 zip 文件,效果非常好,所以我想为我的 PDF 生成采用类似的方法。

我使用mPDF库在 Heroku 上生成具有 S3 图像的报告。mPDF 文档显示了四个输出选项,包括inlinedownload; inline将其直接加载到用户的浏览器中并download强制下载提示(期望的行为)。

我已经在每个 mPDF Image() 文档的 PDF 中启用了 S3 Stream Wrapper 和嵌入图像,如下所示:

$mpdf->imageVars['myvariable'] = '';

while (!feof($streamRead)) {
    // Read 1,024 bytes from the stream
    $mpdf->imageVars['myvariable'] .= fread($streamRead, 1024);
}
fclose($streamRead);

$imageHTML = '<img src="var:myvariable" class="report-img" />';
$mpdf->WriteHTML($imageHTML);

我还添加了header('X-Accel-Buffering: no');使 ZipStream 在 Heroku 环境中工作所需的内容,但如果有多个图像,脚本总是会超时。

是否可以立即提示下载并将数据流直接提供给用户?我希望这种方法不仅可以用于 zip 下载,而且还不能用于这个特定的应用程序。

4

0 回答 0