这更像是一个概念性问题,但我想知道是否可以在下载时将 mPDF 的输出直接流式传输给用户(例如,无需保存在服务器上的临时文件夹中或加载到用户的浏览器中)。
我正在使用类似的方法成功地使用ZipStream和AWS PHP S3 Stream Wrapper下载 S3 照片的 zip 文件,效果非常好,所以我想为我的 PDF 生成采用类似的方法。
我使用mPDF库在 Heroku 上生成具有 S3 图像的报告。mPDF 文档显示了四个输出选项,包括inline
和download
; 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 下载,而且还不能用于这个特定的应用程序。