angular - 无法下载由 barryvdh/laravel-snappy 创建的 PDF

标签 angular laravel laravel-5 pdf-generation wkhtmltopdf

我遇到的问题可能是实现问题,但我找不到正确下载的 PDF 和不返回响应数据的 PDF 之间的任何一致性。

我使用的是 Laravel v5.4.36 和 Snappy v0.4.0。

我在前端使用 Angular 5。对 PDF 的任何请求都设置responseType:3 (Blob)。问题不在于 Angular 如何解释数据,而在于生成某些 PDF 时没有返回数据。

以下是我在使用 $pdf->download 时尝试返回的内容或$pdf->stream :

  • PDF HTML 的复杂性没有任何影响。我可以尝试输出一个简单的 <h1>Hello World</h1>我得到了与输出多页 HTML 相同的结果(什么也没有)
  • 如果我查看生成的 HTML,一切看起来都很好
  • 如果我尝试save() PDF 已正确生成,我可以毫无问题地查看它
  • 我尝试过同时使用 PDF::loadView('pdfs.reminder', compact('transactions', 'globalData'))\View::make('pdfs.reminder', compact('transactions', 'globalData'))生成 HTML。这没有任何效果。

这是我当前使用的代码:

private function generatePDF($transactions, $globalData)
{
        $html = \View::make('pdfs.reminder', compact('transactions', 'globalData'))->render();
        $pdf = \PDF::loadHTML($html);

        return $pdf->download('reminder.pdf');
}

还值得注意的是,我尝试生成的一些 PDF 已经成功。但到目前为止,这只是 1/3 的成功率。我对所有 3 个都使用相同的请求格式和相同的方法。没有抛出任何错误。

我怀疑可能是生成的 PDF 的大小导致下载失败。但是,我不认为这会成为仅包含 <h1>Hello World</h1> 的 PDF 中的问题。 。文件大小是否有任何限制可能导致此行为?

如有任何帮助,我们将不胜感激。

更新

问题不在于 Snappy,而在于调用 generatePDF 的方法。没有回来generatePDF的结果。因此,为什么没有返回任何内容。由于那段代码不在我的问题中,因此其他人几乎不可能提供帮助。感谢所有尝试过的人。

最佳答案

例如

$date = Carbon::now()->format('j F, Y');
$application = Application::find($id);
$data = ['date'=>$date,'application'=>$application]; // data to be passes to view file
$pdf =  PDF::loadView('pdfs.reminder', $data)->setPaper('a4');
return $pdf->download('reminder.pdf');

注意:在类(class)开始之前,请确保您已使用 PDF 类(class) (use PDF;)。

关于angular - 无法下载由 barryvdh/laravel-snappy 创建的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705984/

相关文章:

php - Laravel 5.2 - 无法设置 cookie

php - Laravel 5 按最多计数子记录排序

javascript - 显示新图表后如何处理 'destroy' 之前的图表( Canvas )| Angular 4

angular - 在 Angular2 项目中使用 Tinymce

Angular ngx-spinner 不显示

gh-pages 上的 angular2 基本 url 和相对路径

MySQL:我有一个名为 SLOT 的表,其中有两列 DATE 和 TIME,我想以 html 中的表格形式填充数据

php - 在 Laravel Auth() 中通过电子邮件/电话号码登录

javascript - Laravel Rest api 的 Angular 编辑服务

php - 将 json 数据解码为数组并在 PHP(Laravel) 中访问数组