Выполнить wkhtmltopdf из PHP - PullRequest
11 голосов
/ 27 мая 2011

У меня это нормально работает из командной строки Linux:

wkhtmltopdf entry.html output.pdf

Но из кода PHP не работает следующее:

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

Интересно, я гуглил и много не проверенных решений и без объяснения, почему это проблема. Спасибо, если у вас есть хорошие.

Ответы [ 6 ]

9 голосов
/ 07 октября 2012
У

была такая же проблема, и я не думаю, что кто-то другой должен тратить> 3 часа:

решение здесь: wkhtmltopdf ошибка в журнале apache

выпросто нужно установить xvfp "для эмуляции x-среды"

exec("xvfb-run -a wkhtmltopdf test.html output.pdf")
4 голосов
/ 27 мая 2011

wkhtmltopdf имеет привязок , одна из них для PHP. Вы могли бы дать им шанс.

3 голосов
/ 14 ноября 2012

Здесь PHP-оболочка для wkhtmltopdf. http://mikehaertl.github.com/phpwkhtmltopdf/ Очень просто

2 голосов
/ 23 июля 2011

Просто была эта проблема - простое решение в моем случае: я не осознавал, что PHP был в безопасном режиме.Выключил безопасный режим и все заработало!

2 голосов
/ 27 мая 2011

Возможно wkhtmltopdf отсутствует в переменной PATH для www-данных.

whereis wkhtmltopdf

скажет вам, где находится двоичный файл;Двоичные файлы обычно находятся в /usr/bin/... на * nix машинах.Затем замените wkhtmltopdf на например, /usr/bin/wkhtmltopdf в вашей команде следующим образом.

/usr/bin/wkhtmltopdf entry.html output.pdf
0 голосов
/ 04 января 2013

Я боролся с той же проблемой.

Мое решение на сервере 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

Надеюсь, что это полезно для других

...