生成HTML到PDF,并使用Laravel将生成的PDF上载到数据库?

时间:2018-06-23 16:52:46

标签: javascript php laravel

我正在制作一个在线考试网络应用程序。学生可以登录的地方,并且会有一个考试包。现在,数据包中已经有问题存储在数据库中,我已经将问题转换为HTML到PDF格式,并且可以下载。问题是,我如何能够将生成的PDF也上传到数据库?因为每个用户的问题都是随机的,我希望每个用户登录后都继续上一个考试包,所以它不会再次生成。

2 个答案:

答案 0 :(得分:2)

如果您已经具有要包含在pdf中的数据的html模板,则无需将其存储在数据库中

第1步)下载安装此package composer require barryvdh/laravel-dompdf

第2步)在为laravel安装pdf软件包之后,我们必须对其进行配置。只是跟随小东西。对您的config/app.php文件进行操作,并为providers数组和aliases数组设置以下值

'providers' => [
    ....
    Barryvdh\DomPDF\ServiceProvider::class,
],
'aliases' => [
    ....
    'PDF' => Barryvdh\DomPDF\Facade::class,
],

然后运行php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

步骤3)创建路线

Route::get('generate-pdf', 'PdfGenerateController@pdfview')->name('generate-pdf');

第4步)添加将视图下载为pdf的逻辑:

$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

答案 1 :(得分:1)

由于您已经拥有PDF文件,因此可以执行以下操作,而不是将其上传到数据库(错误的方法):

  • (确定)按需生成并下载PDF。每次学生单击下载时,您都会生成并下载PDF文件。
  • (良好)仅在第一次生成PDF。将生成的名称保存在数据库中。再次单击,只需获取文件名并将其附加到PDF的文件夹中即可。像这样:asset('exams/'.$pdf_filename.'.pdf');以显示/下载PDF。