$fpdf->Output( 'D', "filename.pdf") 将 pdf 字符串返回到浏览器而不是强制下载

问题描述 投票:0回答:1

我使用 fpdf 合并了多个 pdf,将其存储在本地路径中效果很好。我想跳过存储并直接从内存下载 pdf。 我在服务中使用了以下内容:

//All had the same outcome (returned pdf string to the browser *see imager)
$fpdf->Output( 'D', "filename.pdf")
$fpdf->Output( 'I', "filename.pdf")
$fpdf->Output( 'S')

Network Tab Response

使用:

  • PHP 7.4
  • Laravel 8
  • setasign/fpdf (1.8.6)
  • setasign/fpdi (v2.6.0)

我尝试过:

$fpdf->Output( 'F', "path/filename.pdf")
return response->download("path/filename.pdf")

$output =  $fpdf->Output( 'S');
        
return Response::make($output, 200, [
       'Content-Type' => 'application/pdf',
       'Content-Disposition' => 'attachment; filename="merged.pdf"',
       ]);

同样的问题,它将 pdf 字符串返回到浏览器。

php laravel pdf-generation laravel-8 fpdf
1个回答
0
投票
  1. 验证响应标头,而不是单独验证内容。
  2. 当您的浏览器被设置为默认 pdf 查看器时,也可能会产生干扰。

当响应标头告诉您时,

内容处置 附件;文件名=“xy.pdf”

那你就没事了。

© www.soinside.com 2019 - 2024. All rights reserved.