gpt4 book ai didi

laravel - 如何在 Laravel 5.8 中使用 View 在浏览器上显示 PDF 文档

转载 作者:行者123 更新时间:2023-12-02 03:09:15 24 4
gpt4 key购买 nike

我正在使用 Laravel 5.8 开发 Web 应用程序,我是 Laravel 框架的新手。当用户点击某些按钮时,我想在浏览器上显示 PDF 文档。我将允许经过身份验证的用户“查看”和“下载”PDF 文档。

我已经创建了一个 Controller 和一个路由来显示文档。然而,我被困住了,因为我有很多文档,而且我不知道如何使用 Laravel VIEW 来单独显示和下载每个文档。

/* PDF Controller */

public function view($id)
{
$file = storage_path('app/pdfs/') . $id . '.pdf';

if (file_exists($file)) {

$headers = [
'Content-Type' => 'application/pdf'
];

return response()->download($file, 'Test File', $headers, 'inline');
} else {
abort(404, 'File not found!');
}
}

/路线/Route::get('/preview-pdf/{id}', 'PDFController@view');

最佳答案

Mateus 的回答很好地描述了如何设置 Controller 功能以返回 PDF 文件。我会在你的 /routes/web.php 文件中做这样的事情:

Route::get('/show-pdf/{id}', function($id) {
$file = YourFileModel::find($id);
return response()->file(storage_path($file->path));
})->name('show-pdf');

您问题的另一部分是如何将 PDF 嵌入到您的 *.blade.php View 模板中。为此,我建议使用 PDFObject .这是一个非常简单的 PDF 查看器 JavaScript 包,可以轻松嵌入 PDF。

如果您正在使用 npm,您可以运行 npm install pdfobject -S 来安装这个包。否则,您可以从 CDN 提供服务,或自己托管脚本。包含脚本后,您可以像这样设置它:

HTML:

<div id="pdf-viewer"></div>

JS:

<script>
PDFObject.embed("{{ route('show-pdf', ['id' => 1]) }}", "#pdf-viewer");
</script>

就这样——非常简单!而且,在我看来,与导航到一个单独显示 PDF 的页面相比,它为您的用户提供了更好的用户体验。希望对您有所帮助!


更新:在阅读了您对其他答案的评论后,我想您可能会找到 this example对于您正在尝试做的事情特别有用。

关于laravel - 如何在 Laravel 5.8 中使用 View 在浏览器上显示 PDF 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58138546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com