Вашему веб-приложению нужно превратить HTML-страницу в PDF, DOC или TIFF на сервере. Очевидные варианты болезненны: headless-браузер съедает ОЗУ и падает под нагрузкой, процесс командной строки медленно стартует и его трудно мониторить, облачный API сливает ваши данные и берёт плату за каждый вызов.
Total HTML Converter X предоставляет полный интерфейс ActiveX / COM. Создайте объект один раз из .NET, PHP, Python, ASP, VBScript или любой COM-совместимой среды, вызовите Convert(), получите выходной файл. Никаких подпроцессов, никакого браузерного рендеринга, никакого внешнего API. Файлы не покидают ваш сервер.
Process.Start(), разбора stdout или процессов-зомби.(30-дневная пробная версия — email не требуется)
Серверная лицензия от $249.90
ActiveX — это компонентная модель от Microsoft. На практике это означает, что Total HTML Converter X регистрирует в Windows COM-класс (HTMLConverter.HTMLConverterX), который может создать и вызвать любая COM-совместимая среда. Вы не обращаетесь к REST API и не запускаете процесс командной строки — вы загружаете DLL в ваше приложение и вызываете методы на объекте, работающем внутри процесса.
Это важно по трём причинам:
Подходит любой язык, понимающий COM: C# и VB.NET через .NET interop, C++ через CoCreateInstance, PHP через класс COM, Python через pywin32, Classic ASP через Server.CreateObject, VBScript, JScript/WSH, Delphi, PowerShell, Ruby через win32ole и Node.js через winax.
reg query HKCR\HTMLConverter.HTMLConverterX. Если ключ существует, COM-объект готов.Type.GetTypeFromProgID(). В PHP используйте new COM("HTMLConverter.HTMLConverterX"). В Python — win32com.client.Dispatch("HTMLConverter.HTMLConverterX").Convert(source, destination, options). Передайте путь к входному HTML, путь к выходному файлу и строку опций с флагами вроде -c PDF, -OwnerPassword secret, -Watermark CONFIDENTIAL.C# / .NET
var conv = Activator.CreateInstance(
Type.GetTypeFromProgID("HTMLConverter.HTMLConverterX"));
conv.GetType().InvokeMember("Convert",
System.Reflection.BindingFlags.InvokeMethod, null, conv,
new object[] { @"C:\In\report.html", @"C:\Out\report.pdf",
"-c PDF -OwnerPassword s3cret -NoPrint" });
PHP
$c = new COM("HTMLConverter.HTMLConverterX");
$c->Convert(
"C:\\In\\report.html",
"C:\\Out\\report.pdf",
"-c PDF -Watermark DRAFT -log C:\\Logs\\html.log"
);
Python (pywin32)
import win32com.client
conv = win32com.client.Dispatch("HTMLConverter.HTMLConverterX")
conv.Convert(
r"C:\In\report.html",
r"C:\Out\report.pdf",
"-c PDF -OwnerPassword secret -NoPrint"
)
Classic ASP / VBScript
Set Conv = Server.CreateObject("HTMLConverter.HTMLConverterX")
Conv.Convert _
"C:\In\report.html", _
"C:\Out\report.pdf", _
"-c PDF -Watermark ""COMPANY CONFIDENTIAL"""
Set Conv = Nothing
Третий аргумент метода Convert() — строка флагов, разделённых пробелами. Ключевой флаг — -c FORMAT. Меняете его — меняете выходной формат:
| Флаг | Вывод | Типичное применение |
|---|---|---|
-c PDF | Архивирование, печать, распространение | |
-c DOC / -c DOCX | Microsoft Word | Дальнейшее редактирование, совместная работа |
-c XLS | Excel | Извлечение таблиц из HTML для анализа |
-c TIFF | Многостраничный TIFF | Факс-системы, конвейеры документального хранения |
-c JPEG | Изображение JPEG | Миниатюры, встраиваемые превью |
-c RTF | Rich Text | Редактируемый вывод, совместимый с Word, без DOCX |
-c TXT | Обычный текст | Текстовая индексация, поисковые системы |
-c XHTML | XHTML | Очищенный HTML-вывод |
Можно комбинировать с флагами безопасности и макета:
-OwnerPassword secret — пароль владельца PDF (управляет разрешениями)-UserPassword open123 — пароль открытия PDF-NoPrint / -NoCopy / -NoModify — ограничения разрешений PDF-Watermark "CONFIDENTIAL" — наносит текст водяного знака на каждую страницу-PageSize A4 / Letter / Legal — размер бумаги-log C:\Logs\html.log — пишет лог конвертации для мониторинга| Аспект | Total HTML Converter X (ActiveX) | Командная строка | Headless-браузер |
|---|---|---|---|
| Стоимость старта | Нет (DLL внутри процесса) | Запуск процесса на каждый вызов | Большая — новый экземпляр браузера |
| Потребление памяти | Небольшое | Небольшое | Большое (Chromium = 200+ МБ) |
| Параллелизм | Потокобезопасный в рамках процесса | Многопроцессный | Один браузер на воркер |
| Обработка ошибок | Нативное исключение языка | Разбор stdout / кода выхода | Разбор JSON-протокола |
| Выходные форматы | PDF, DOC, XLS, TIFF, JPEG, RTF, TXT, XHTML | Те же (тот же движок) | Обычно только PDF + PNG |
| Развёртывание | Одна установка MSI | Одна установка MSI | Браузер + драйвер + песочница |
| Требуется сеть | Нет | Нет | Нет (после установки) |
Никакого GUI, никаких диалогов подтверждения, никаких запросов "Сохранить как". Работает под IIS, внутри служб Windows или из планировщика задач, когда ни один пользователь не вошёл в систему.
Браузер не нужен. Конвертер разбирает HTML и CSS своим кодом. Это значит — обновления Chrome не ломают ваш конвейер, нет браузерных профилей, нет несовпадения версий драйверов.
В отличие от моделей оплаты за пользователя или за конвертацию, Total HTML Converter X лицензируется по серверу. Обслуживайте тысячи пользователей с одной лицензии.
Установщик поставляется с рабочими проектами-примерами на ASP, PHP и C++. Откройте их в Visual Studio, любой IDE или текстовом редакторе и адаптируйте под свои задачи.
Без водяного знака, без лимита на конвертации, email для скачивания не нужен. Встройте конвертер в прототип, убедитесь, что он работает, потом лицензируйте.
(30-дневная пробная версия — email не требуется)
Серверная лицензия от $249.90
Windows 7/8/10/11 • Server 2012/2016/2019/2022
"Заменили конвейер на Puppeteer, который потреблял 2 ГБ ОЗУ на воркер и падал каждую ночь. Вызов ActiveX встроился в нашу рабочую службу .NET — один вызов метода, никаких подпроцессов, никакого headless-браузера для перезапуска. Память держится ровно. Качество PDF лучше, чем давал нам Chromium, особенно на CSS с таблицами."
Daniel Park Senior Backend Engineer
"Мы крутим под IIS биллинговый портал на PHP. Счета генерируются как HTML-шаблоны, конвертируются в PDF на лету и уходят клиентам по email. Интеграция COM — три строки PHP. Без облачного API, без выхода файлов с нашего сервера. Разовая лицензия за $249.90 окупилась за первую неделю по сравнению с per-document API, который мы рассматривали."
Amira Hassan Web Applications Developer
"Интегрировал с Classic ASP-приложением, которое работает более 15 лет. <code>Server.CreateObject("HTMLConverter.HTMLConverterX")</code> сработал с первого раза под IIS. Хорошо, что 32-битная и 64-битная регистрации раздельны — мне нужна была 32-битная сборка. Документации не помешало бы больше примеров именно под VB6, но ASP-пример был достаточно близко, чтобы адаптировать."
Victor Rossi IT Integration Lead
CoCreateInstance), PHP (через класс COM), Python (через pywin32), Classic ASP и VBScript (через Server.CreateObject), JScript / WSH, Delphi, PowerShell, Ruby (через win32ole) и Node.js (через winax или аналогичные биндинги).Server.CreateObject. Приложения ASP.NET ссылаются на COM-класс напрямую. Учётной записи пула приложений IIS нужны: чтение исходных HTML-файлов, запись в выходной каталог и чтение ветки реестра COM. Для Classic ASP включите 32-битные приложения в пуле приложений, если вы установили 32-битную сборку.Convert() возбуждает COM-исключение, которое всплывает в вашем языке как нативное исключение — COMException в .NET, com_exception в PHP, pywintypes.com_error в Python, ошибка времени выполнения в VBScript. Исключение несёт HRESULT и описательное сообщение, чтобы вы могли залогировать или восстановиться.Convert(). Пример: Convert(src, dst, "-c PDF -Watermark DRAFT -OwnerPassword secret -NoPrint").windowsservercore, но не на более компактном образе nanoserver (в нём нет полной поддержки COM). 30-дневная пробная версия — простой способ проверить ваше конкретное целевое окружение.Convert() ожидает локальный путь к файлу для источника. Если нужно обработать живой URL, сначала скачайте его в вашем приложении (подойдёт любой HTTP-клиент), сохраните во временный файл, затем передайте путь к временному файлу в конвертер.Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.