Ваш конвейер генерации PDF работает на wkhtmltopdf, и годами это работало — пока проект не заархивировали. 2 января 2023 года репозиторий стал доступен только для чтения: новых патчей безопасности больше не будет, а устаревший движок WebKit внутри непредсказуемо отображает современный CSS (flexbox, grid, custom properties). Если отчёты теперь выходят с перекошенной вёрсткой или вы больше не можете обосновать использование неподдерживаемого бинарника на боевом сервере, нужна поддерживаемая замена. Для Windows это Total HTML Converter X.
Быстрый ответ: Для простого статического HTML wkhtmltopdf по-прежнему работает и остаётся бесплатным, но проект заархивирован — патчей безопасности не будет, а современный CSS отображается непредсказуемо. Для поддерживаемого продакшена на Windows-серверах Total HTML Converter X даёт актуальный рендеринг CSS, конвертацию живых URL и файлов в PDF, DOC, TIFF и JPEG, тихую командную строку и COM/ActiveX API, вызываемый из ASP, PHP и .NET.
| Total HTML Converter X | wkhtmltopdf | |
|---|---|---|
| Активно поддерживается | Да — коммерческий продукт с постоянными обновлениями | Нет — репозиторий заархивирован и доступен только для чтения с 2 января 2023 года |
| Движок рендеринга | Актуальный движок с полной поддержкой CSS 1/2, разрывами страниц, автоподгонкой по ширине, плюс опциональный движок рендеринга Chrome | Устаревшая сборка WebKit; современный CSS (flexbox, grid) часто отображается некорректно, и исправлений больше не будет |
| Обработка JavaScript | Да — через движок рендеринга Chrome (-engine chrome) | Ограничена замороженным движком WebKit |
| Источник данных | Локальные файлы HTML/MHT и живые URL, пакетно | Локальные файлы и URL |
| Форматы вывода | PDF, DOC, RTF, XLS, TIFF, JPG, PNG, TXT | Только PDF и изображения (PNG, JPG) |
| Командная строка | Да — тихий бинарник, без GUI, без диалогов, без всплывающих окон | Да — инструмент командной строки |
| Серверный API | ActiveX/COM, вызываемый из ASP, PHP, .NET, Python, Ruby, Java | Сторонние привязки и обёртки для языков программирования, поддерживаемые сообществом |
| Защита PDF | Цифровые подписи (X.509 PFX), шифрование AES, пароли, флаги разрешений | Базовая; без подписания |
| Лицензия | Коммерческая, разовая лицензия от $750, 30-дневная бесплатная пробная версия | Бесплатно, открытый исходный код |
| Операционная система | Windows 7/8/10/11 и Windows Server (IIS, Docker, Citrix, Wine) | Windows, Linux, macOS |
| Поддержка | Поддержка от разработчика CoolUtils | Только сообщество; проект заархивирован |
Отдадим должное: wkhtmltopdf заслужил своё место. Он бесплатный и с открытым исходным кодом, запускается одной командой и легко встраивается в сценарии на любом языке, который умеет вызывать внешние процессы. Десять лет он был стандартным ответом на вопрос как отрендерить этот HTML в PDF на сервере, и его база пользователей огромна — бесчисленные конвейеры выставления счетов, отчётности и экспорта до сих пор вызывают его каждый день. Для простого статического HTML — таблицы, стилизованной квитанции, обычного отчёта — он всё ещё выдаёт приличный PDF бесплатно.
Если ваши шаблоны просты и не меняются, а вы готовы использовать заархивированный бинарник, wkhtmltopdf не сломан. Проблема во всём, что изменилось после того, как разработка остановилась: новый CSS, новый TLS, новые требования к безопасности.
На Windows-сервере Total HTML Converter X — ближайшая прямая замена: сохраняет привычный сценарий работы через командную строку, добавляет поддерживаемый движок рендеринга и расширяет вывод за пределы PDF. Вы меняете один вызов CLI на другой и получаете подписание, шифрование и дополнительные форматы. Если конвейер работает на Linux или macOS, Total HTML Converter X не поможет — продукт только для Windows — и поддерживаемый путь там — headless Chrome или Chromium, напрямую или через обёртку.
Два способа: вызвать бинарник командной строки как внешний процесс или обратиться к объекту ActiveX/COM прямо из процесса приложения. Вызов внешнего процесса — минимальное изменение по сравнению с конвейером на wkhtmltopdf: вы меняете исполняемый файл и синтаксис параметров:
<?php
// Конвертация локального HTML-файла в PDF из PHP на Windows
exec('HtmlConverter.exe C:\www\invoice.html C:\pdf\invoice.pdf -c pdf -log C:\log\html.txt');
?>
Параметр -c pdf задаёт целевой формат; добавьте -combine, чтобы объединить несколько файлов в один PDF, или -pfxfile и -pfxpass, чтобы подписать результат. Поскольку бинарник работает тихо, ни один диалог не блокирует веб-запрос. В классическом ASP или .NET вместо этого можно создать встроенный объект ActiveX/COM и выполнять ту же конвертацию прямо из процесса приложения, не запуская дочерний процесс для каждой страницы.
Да — передайте конвертеру URL вместо пути к файлу, и он загрузит и отрендерит живую страницу:
HtmlConverter.exe http://www.example.com C:\pdf\page.pdf -c pdf -log C:\log\html.txt
Это прямая замена вызову URL to PDF в wkhtmltopdf. Тот же шаблон подходит для изображений — используйте -c jpg или -c tiff, чтобы растрировать страницу вместо записи PDF. Маска с подстановочными знаками или текстовый файл -list позволяют одной командой обработать целый пакет URL или локальных файлов.
Total HTML Converter X лицензируется на один сервер, от $750, а 30-дневная пробная версия полностью функциональна и без ограничений — запустите её на страницах, которые ваш текущий конвейер рендерит хуже всего, и сравните PDF бок о бок. Тот же движок поставляется и как настольный Total HTML Converter для разовых задач, когда нужен графический интерфейс.
Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.