Laravel快速推送PDF下载


Laravel snappy pushing PDF download

我正在使用Laravel/Jquery与barryvdh/Laravel -snappy创建一个pdf数据库数据。

在控制器中我有:

if ($request->ajax())
{
    $document = Document::url($id)->first();
    $pdf = PDF::loadView('app.documents.whitepapers.pdf', compact('document'));
    return $pdf->download('filename.pdf');
    // return response()->send($pdf->download('filename.pdf'), 200, $headers);
}

我如何将这个PDF推送到浏览器,以便可以下载?

当我这样做没有Jquery它是完美的工作。之所以把它放在Jquery函数后面,是因为在开始下载之前,我使用了一个带有表单的Modal来收集个人数据。

您将无法通过JavaScript将该文件作为常规下载呈现。为了向用户显示下载提示,您需要在工作流中添加一个额外步骤。

我建议以下工作流程:

  1. 用户提交模态表单
  2. 表单通过AJAX验证。如果验证通过,响应一个URL来下载用户的PDF,而不是PDF本身。
  3. 你的JavaScript将用户重定向到这个URL。注意,这是一个重定向,而不是另一个AJAX请求(参见top.location.href)
  4. 当用户访问该URL时,您可以使用您在原始问题中提供的代码片段交付PDF。这个代码片段适当地设置了响应的content-disposition,迫使下载提示出现在用户的浏览器中。

如果您需要为每个用户定制PDF生成,请确保在步骤4中包含用户的ID(或其他标识信息)。