【问题标题】:ProtocolUnknownError when executing wkhtmltopdf from PHP with header and footer?使用页眉和页脚从 PHP 执行 wkhtmltopdf 时出现 ProtocolUnknownError?
【发布时间】:2015-10-07 07:42:57
【问题描述】:

我对从 PHP 执行的 wkhtmltopdf 有一个奇怪的问题。我的 PHP 代码如下所示:

<?php
  exec('wkhtmltopdf --header-html "http://example.com/pdf-header" 
     --footer_html "http://example.com/pdf-footer"
     /tmp/pdf.html /tmp/pdf.pdf');
?>

当我从 shell 执行相同的命令时,它可以完美运行。但是,当我尝试像上面提到的那样从 PHP 运行它时,脚本会一直运行,直到超时,导致 PDF 文件为空。

当我搜索网页时,我尝试使用&gt; /tmp/error_log.txt 1&gt;&amp;2 参数运行它,我发现从 PHP 执行时它返回错误:

Exit with code 1 due to network error: ProtocolUnknownError

更有趣的是,当我删除 --footer-html--header-html 时,它可以从 PHP 中正常执行。但显然生成的 PDF 缺少页眉和页脚。

页眉和页脚 HTML 没有任何外部资源引用。而且我认为这不是网络/ DNS 问题,因为从同一服务器的命令行可以正常工作。

我会很高兴任何提示和技巧,因为这让我发疯。提前致谢。

【问题讨论】:

  • 在我的情况下,我对图像
  • 在我的情况下,它也是一个丢失的图像(应该从本地文件系统加载)

标签: php shell wkhtmltopdf


【解决方案1】:

如果有人遇到同样的问题,我会发布我使用过的解决方法。我没有使用 http URL 作为页脚和页眉,而是将 HTML 放入本地 tmp 文件并将它们用作页脚和页眉。这对我有用,也可能对其他人有用并节省一些时间。

【讨论】:

    【解决方案2】:

    这是一个旧线程,但如果其他人搜索此错误:尝试它可能会有所帮助,它是由导入本地文件(例如:./image)问题引起的。如果是这样,传递 --enable-local-file-access 标志可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2012-10-16
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多