簡體   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