Выполнить wkhtmltopdf из PHP

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

wkhtmltopdf entry.html output.pdf

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

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

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

Ответ 1

wkhtmltopdf имеет bindings, один из них для PHP. Вы можете дать им выстрел.

Ответ 2

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

решение находится здесь: ошибка wkhtmltopdf в протоколе apache

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

exec("xvfb-run -a wkhtmltopdf test.html output.pdf")

Ответ 4

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

whereis wkhtmltopdf

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

/usr/bin/wkhtmltopdf entry.html output.pdf

Ответ 5

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

Ответ 6

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

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

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