“网络failure"下载PDF生成与PHP FPDF/FPDF2File类在谷歌浏览器


"Network failure" to download PDF generated with with PHP FPDF/FPDF2File class in Google Chrome

我有报告生成在PHP/FPDF/FPDF2File通常显示在浏览器窗口

注意:

  • 参数被传递给生成报告POST的PHP。
  • 文件正在通过具有有效证书的HTTPS独占访问。
  • web服务器能够记录所有错误,并且错误正在正确地记录在日志中,但没有与FPDF/PHP相关的错误被记录。(即我清理了错误日志,运行报告,日志中没有出现错误……故意造成错误,并被记录)。因此,似乎没有语法错误。
  • 使用的内容类型是:header ('Content-type: application/pdf');该问题发生在装有谷歌Chrome浏览器的Windows电脑上(在多台机器上测试)。
  • PDF渲染插件浏览器的所有按钮(保存、打印、旋转、缩放等)工作正常。除了Google Chrome中的保存按钮(在其他浏览器中正常工作)。

当尝试保存已打开并在Google Chrome上显示的PDF时,出现以下错误:

网络错误

因此,你不能保存PDF,除非你去打印和打印PDF,或者打印PDF的PDF,这没有多大意义。

有人能告诉如何解决这个错误吗?

非常感谢!

是否设置了Cache-Control header的no-store属性?

我不知道为什么,但对我来说,改变

后它工作了

header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");

header("Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0");

@Amryn的回答实际上对我有效。这是我完整的标题设置:

header('Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0');
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="relatorio-clientes.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . strlen(ltrim($content)));
header('Accept-Ranges: ' . strlen(ltrim($content)));
echo $content;

如果您使用打印选项并另存为PDF,则不会发生网络错误(解决方法)。

这对我来说很有效:

删除php关闭标签?>后的空格等所有字符

在这里找到:https://stackoverflow.com/a/13463631/2267379

简单的解决方案:不要做

返回pdf→美元输出(' medienpass.pdf ', ' D ');

中的getPdf()函数,因为输出将被封装在大量的HTML代码。

只向客户端返回pdf:

死(pdf→美元输出(' medienpass.pdf ', ' D '));