11

我从 Linux 命令行可以正常工作:

wkhtmltopdf entry.html output.pdf

但以下内容不适用于 PHP 代码:

exec ('wkhtmltopdf entry.html output.pdf');

有趣的是,我用谷歌搜索了很多未经检查的解决方案,但没有解释为什么这是一个问题。谢谢,如果你有好的。

4

6 回答 6

9

有同样的问题,我认为其他人不应该浪费 > 3 小时:

解决方案在这里:wkhtmltopdf error in apache log

你只需要安装 xvfp “模拟 x 环境”

exec("xvfb-run -a wkhtmltopdf test.html output.pdf")
于 2012-10-07T00:43:25.253 回答
4

wkhtmltopdf 有绑定,其中之一是用于 PHP。你可以试一试。

于 2011-05-27T14:38:37.860 回答
3

这里是一个围绕 wkhtmltopdf 的 PHP 包装器 http://mikehaertl.github.com/phpwkhtmltopdf/ 非常简单

于 2012-11-14T00:27:55.763 回答
2

可能wkhtmltopdf不在 www-data 的 PATH 变量中。

whereis wkhtmltopdf

会告诉你二进制文件的位置;二进制文件通常驻留在/usr/bin/...*nix 机器上。然后像这样在你的命令中替换wkhtmltopdfeg 。 /usr/bin/wkhtmltopdf

/usr/bin/wkhtmltopdf entry.html output.pdf
于 2011-05-27T14:19:27.040 回答
2

刚遇到这个问题 - 就我而言,解决方案很简单:我没有意识到 PHP 处于安全模式。关闭安全模式,它工作正常!

于 2011-07-23T11:28:55.160 回答
0

我正在努力解决同样的问题。

我在Windows 2008 R2服务器上的解决方案PHP 5.4

exec('C:\inetpub\wwwroot\mywebsite\subdir\wkhtmltopdf input.html output.pdf');

这就是它(在超过 5 小时的网络搜索包括这个)一个名为 output.txt 的新文件,将其重命名为 output.pdf 并赋予用户“每个人”的权利。

这些是我的试训:

  exec(C:\inetpub\wwwroot\mywebsite\wkhtmltopdf );
  echo(exec(wkhtmltopdf.exe cache.html output.pdf));
  exec("xvfb-run -a wkhtmltopdf test.html output.pdf")
  $execute = "xvfb-run -a wkhtmltopdf cache.html output.pdf";
  $out = shell_exec("/path/to/wkhtmlto­pdf --version"); echo($out); 
  $out = passthru('/usr/local/bin/wkhtml2pdf

希望这些对其他人有用

于 2013-01-04T02:43:22.760 回答