У меня есть странная проблема с wkhtmltopdf, выполненным из PHP. Мой PHP-код выглядит так:
<?php
exec('wkhtmltopdf --header-html "http://example.com/pdf-header"
--footer_html "http://example.com/pdf-footer"
/tmp/pdf.html /tmp/pdf.pdf');
?>
Когда я выполняю ту же команду из оболочки, она работает отлично. Однако, когда я пытаюсь запустить его из PHP, как упоминалось выше, скрипт работает до тех пор, пока он не выйдет из строя, что приведет к пустым файлам PDF.
Когда я искал веб-сайт, я попытался запустить его с помощью параметра >/tmp/error_log.txt 1>&2
и я обнаружил, что при выполнении с PHP он возвращает ошибку:
Exit with code 1 due to network error: ProtocolUnknownError
Более интересно, когда я удаляю --footer-html
и --header-html
он отлично работает с PHP. Но, очевидно, в результате PDF отсутствует верхний и нижний колонтитулы.
HTML-код верхнего колонтитула не содержит ссылок на внешние ресурсы. И я не думаю, что это проблема сети /DNS, потому что из командной строки с того же сервера она работает нормально.
Я был бы очень рад за любые советы и подсказки, потому что это сводит меня с ума. Заранее спасибо.
Если у кого-то есть такая же проблема, я опубликую свое решение, которое я использовал. Вместо того, чтобы использовать http-адрес для нижнего колонтитула и заголовка, я помещаю HTML в локальные файлы tmp и использую их как нижний колонтитул и заголовок. Это сработало для меня, может работать и для кого-то другого, и сэкономить несколько часов.