繁体   English   中英

尝试在 Laravel 7 中发送 PDF 文件下载时出现“响应回调不能为空”

[英]"The Response callback must not be null" when trying to send a PDF file download in Laravel 7

在我的 Laravel 7 应用程序中,我有一个动态生成 PDF 的路径,我希望浏览器将其视为文件下载。

在写这篇文章时,我发现了一些关于 Laravel 使用保存在文件系统上的文件来提供文件下载的文档和问题,但就我而言,我不想将 pdf 存储在文件系统中。 我只想在用户点击路由时动态生成,然后浏览器下载pdf。

我正在使用 mpdf 库,它似乎正在正确地形成一个 pdf 文件。 然而,Laravel 抛出了一个The Response callback must not be null LogicException。 在浏览器中,我看到显示的 PDF 数据,然后是异常堆栈跟踪。

这是控制器方法:

public function pdf($id) {
    $manual = new \App\manual($id);
    $contents = view('admin.manual')->with($manual)->render();
    $mpdf = New \Mpdf\Mpdf();
    $mpdf->WriteHtml($contents);
    $pdf = $mpdf->output();
    return response()->streamDownload($pdf, 'manual.pdf');
}

在这个截图中,你可以看到 PDF 文件的数据,它告诉我它正在生成和交付: 在此处输入图片说明

但是,在 PDF 对象的 EOF 之后出现异常: 在此处输入图片说明

我从 Symfony 发现了这个 5 年前的问题,用于相同的异常消息,但它似乎已经解决了很长时间。 我没有发现与 Laravel 7 相关的任何其他内容。

如何在 Laravel 7 中正确指定数据的 pdf 文件下载?

在我的 Laravel 7 应用程序中,我有一个动态生成 PDF 的路径,我希望浏览器将其视为文件下载。

在写这篇文章时,我发现了许多关于 Laravel 使用保存在文件系统上的文件来提供文件下载的文档和问题,但就我而言,我不想将 pdf 存储在文件系统中。 我只想在用户点击路由时动态生成,然后浏览器下载pdf。

我正在使用 mpdf 库,它似乎正确地形成了一个 pdf 文件。 然而,Laravel 抛出了一个The Response callback must not be null LogicException。 在浏览器中,我看到显示的 PDF 数据,然后是异常堆栈跟踪。

这是控制器方法:

public function pdf($id) {
    $manual = new \App\manual($id);
    $contents = view('admin.manual')->with($manual)->render();
    $mpdf = New \Mpdf\Mpdf();
    $mpdf->WriteHtml($contents);
    $pdf = $mpdf->output();
    return response()->streamDownload($pdf, 'manual.pdf');
}

在这个截图中,你可以看到 PDF 文件的数据,它告诉我它正在生成和交付: 在此处输入图片说明

但是,在 PDF 对象的 EOF 之后出现异常: 在此处输入图片说明

我从 Symfony 中发现了这个 5 年前的问题,用于相同的异常消息,但它似乎已经解决了很长时间。 我没有发现与 Laravel 7 相关的任何其他内容。

如何在 Laravel 7 中正确指定数据的 pdf 文件下载?

我正在努力解决同样的问题并使用上面的帖子解决了它。 但是在 Lumen 8 中,我需要将 streamDownload 更改为流。

这是我的代码:

$stream = $mpdf->Output($filename, "I");
return response()->stream(function() use ($stream) { echo $stream; }, 200, ['Content-type'=>'application/pdf']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM