Подтвердить что ты не робот

Использование wkhtmltopdf в Windows

Я пытаюсь настроить отличный HTML-образ плагина с именем wkhtmltopdf, и у меня очень трудное время.

Что я сделал до сих пор:

  • Загрузили пакет wkhtmltopdf zip и удалили файл в корневой папке моих веб-сайтов

  • В качестве теста я включил следующий код в свой файл index.php, который я ожидал бы сохранить содержимое веб-сайта bbc.com в виде .jpg изображения в корневой папке моих сайтов: ..

    shell_exec ('./wkhtmltopdf --quality 50 http://www.bbc.com bbc.jpg');

Ничего не происходит. PHP не работает в безопасном режиме, так что это не проблема. shell_exec выполняет, я смог создать документ .txt, используя его.

Я исследовал это в течение нескольких дней, я предлагаю 100 bounty всем, кто может придумать четкое, упрощенное пошаговое руководство по настройке wkhtmltopdf на Widows для запуска с использованием PHP.

В частности, я ищу упрощенный прохождение:

  • Настройте wkhtmltopdf для работы в Windows с помощью php (см. подробности об общих проблемах и способах их устранения).

  • При щелчке по кнопке или ссылке: распечатайте "текущую" веб-страницу в pdf, включая все заполненные значения ввода (включая пример кода для этой части). Веб-страницы с событиями, которые изменяют содержимое страницы, должны распечатать текущую версию страницы, не начальное состояние страницы.

  • Создайте ссылку для загрузки созданного .pdf, onClick той же функции, которая была упомянута выше, которая создает и печатает в pdf (включая пример кода для этой части).

4b9b3361

Ответ 1

Я понимаю, что это старый вопрос, но поскольку он является единственной найденной мной библиотекой, которая будет печатать из HTML в PDF и сохранять изображения и цвета фона, я использую командную строку Windows. Раньше я использовал PDF Architect, но он никогда не мог обрабатывать цвета фона.

Когда вы устанавливаете wkhtmltopdf, он переходит в c:\Program Files\wkhtmltopdf\или c:\Program Files (x86)\wkhtmltopdf.

Скажем, что у вас есть локальная среда PHP, где http://localhost/ настроена как отправная точка. Также скажем, что у вас есть файл html_invoice.html и вы хотите распечатать его в файле dev_invoice_200.pdf и поместить его в свою папку счетов-фактур внутри веб-сервера xampp. Для этого вы должны запустить командную строку Windows (т.е. Пуск → Все программы → Стандартные → Командная строка или Пуск → Выполнить → cmd) и введите:

c:\Program Files\wkhtmltopdf\bin\wkhtmltopdf http://localhost/html_invoice.html c:\xampp\htdocs\invoices\dev_invoice_200.pdf

Это создаст PDF файл в нужном месте.

Поскольку мы используем командную строку Windows, на самом деле нет причин использовать PHP. Вместо этого мы можем использовать командный файл, и если нам нужно его автоматизировать, мы можем использовать планировщик заданий Windows для вызова командного файла ( "Пуск" → "Все программы" → "Стандартные" → "Служебные" → "Планировщик заданий" ).

Если вы никогда не делали пакетные файлы, вы просто набираете команды, которые хотите сделать, в текстовый файл и сохраняете его с расширением .bat.

Итак, скажем, что мы хотим всегда печатать файл html_invoice.html в том же месте в папке счетов-фактур с именем dev_invoice.pdf и что мы собираемся изменить имя после его получения. Вы просто поместите строку выше минус "_200" в текстовый файл и сохраните ее как .bat, а затем дважды щелкните по ней в Windows или запустите ее через Task Scheduler.

Ответ 2

Трудно разобраться в том, что является актуальной проблемой здесь, но я сделал учебное пособие по выпуску wkhtmltopdf для ответа в среде Windows 7/PHP. Спросите, нужны ли вам дополнительные сведения - я уверен, что это не касается вашей проблемы.

Как я уже сказал в комментариях, ваш вызов функции shell_exec('./wkhtmltopdf --quality 50 http://www.bbc.com bbc.jpg'); завершится неудачно, потому что wkhtmltopdf и wkhtmltoimage являются разными программами и принимают разные параметры командной строки. Замените wkhtmltopdf на wkhtmltoimage в этой команде, и вы можете получить выходной файл. Я считаю, что в вашем случае наиболее интересным будет выполнение теста как shell_exec('c:\wkhtmltopdf\wkhtmltopdf www.google.com goog.pdf 2>> err3.txt 1>> out3.txt');, так как там вы можете увидеть все разные входные/выходные данные, которые делает wkhtmltopdf.