“网络故障”,用于在Google Chrome中下载使用PHP FPDF / FPDF2File类生成的PDF

时间:2016-08-19 20:43:23

标签: php google-chrome fpdf

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

注意:

  • 参数传递给生成报告POST的PHP。
  • 该文件仅通过HTTPS使用有效证书进行访问。
  • Web服务器能够记录所有错误并在日志中正确记录错误,但没有记录与该FPDF / PHP相关的错误。 (即我清理错误日志,运行报告并且日志中不会出现错误...故意强制出错并且已注册)。因此,似乎没有语法错误。
  • 使用的Content-type是:header('Content-type:application / pdf'); 使用Google Chrome的Windows计算机(在多台计算机上测试)会出现此问题。
  • PDF渲染插件浏览器的所有按钮(保存,打印,旋转,缩放等)都能正常工作。除了Google Chrome中的保存按钮(在其他浏览器中正常工作)。

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

  

失败 - 网络错误

因此,您无法保存PDF,除非您打印并以PDF格式打印,或打印PDF PDF,这没有多大意义。

有人可以告诉您如何解决此错误吗?

非常感谢!

4 个答案:

答案 0 :(得分:1)

您是否设置了Cache-Control标头的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");

答案 1 :(得分: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;

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这对我有用:

删除php关闭标签Maybe之后的所有字符,例如空格

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

简单的解决方案:不要做

返回$ pdf-> Output('medienpass.pdf','D');

在您的getPdf()函数中

,因为输出将被包装在一个 很多html代码。

相反,仅将pdf返回给客户:

die($ pdf-> Output('medienpass.pdf','D'));