Laravel 5.2 - 如何将PDF作为JSON响应的一部分返回

时间:2016-03-24 13:57:02

标签: php json laravel pdf

所以我开发了一个API,其中一个端点是一个报告生成器。通常他们会发送报告名称和其他一些变量,然后使用preg_match弹出PDF。

我也在使用Laravel-Snappy进行身份验证。由于我需要符合HIPAA标准,因此我将在每次通话时刷新令牌。对于大多数端点来说,这很容易,因为我只是将它添加到我的json响应的元数据中。

但是,对于报告,他们只返回带有标题的PDF以强制下载等。有没有办法让我发送PDF数据作为JSON响应的一部分,应用程序点击此API将能够使用?我是否可能需要以某种方式对其进行加密,以便可以使用json响应进行加密?任何其他想法都会受到赞赏。

2 个答案:

答案 0 :(得分:3)

从来没有必要亲自这样做,但我在API中看到它的方式是读取文件内容,base64编码并在json响应中提供它。

快速代码

$pdf = base64_encode(file_get_contents('path/to/my.pdf'));

return response()->json([
    'pdf' => $pdf,
]);

然后用户可以这样使用它。

$pdf = base64_decode($json->pdf);

file_put_contents('path/to/save/my.pdf', $pdf);

然后您应该能够正常打开/读取保存的文件。

答案 1 :(得分:1)

我认为发送大型二进制数据作为JSON响应的一部分并不是最好的主意。我宁愿使用uuid或者更有意义的id为PDF文件创建临时GET URI,并将其呈现在实际的JSON响应中。 API使用者将能够读取响应并下载文件。