У вас есть папки с HTM- или HTML-файлами — собранные страницы, архивные бюллетени, выгруженные файлы справки, снимки интранета — и дальнейший пайплайн, которому нужен читаемый текст без какой-либо разметки. Поисковым индексаторам не нужен шум <div>. Токенизаторы NLP давятся встроенными скриптами. Юристам при проверке нужна проза, а не CSS. Total HTML Converter X удаляет HTM-разметку и пишет чистый Unicode-текст из командной строки, пакетно, без графического интерфейса и без браузерного движка. Установите его на сервер Windows, вызывайте из скрипта или через ActiveX, и пусть он питает ваш индексатор, вашу модель или ваш архив.
*.htm), и конвертер пройдёт по всем подходящим файлам за один запуск
(30 дней, без email)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
HTM (и HTML) — это язык разметки, предназначенный для браузеров. Файл смешивает прозу с тегами, атрибутами, инлайновыми стилями, JavaScript и ссылками на внешние ресурсы. Поисковый индексатор, проглатывающий сырой HTM, в итоге оценивает блоки <script> и имена CSS-классов наравне с реальным контентом. Токенизатор LLM расходует контекст на шум. Grep по HTM-архиву возвращает совпадения внутри атрибутов, а не в тексте тела.
Unicode TXT — это чистый текст в UTF-8 или UTF-16. Никаких тегов, никакой разметки, никакого форматирования — только читаемые символы документа. Любой поисковый движок, NLP-инструментарий, анализатор логов и архивная утилита потребляет его без предобработки. Конвертация задумана как lossy: изображения, макет и стили исчезают. Остаётся текстовое содержимое в правильном логическом порядке, с сохранённой исходной кодировкой.
| HTM | Unicode TXT | |
|---|---|---|
| Содержимое | Разметка, скрипты, стили, проза | Только проза |
| Шум при индексации | Высокий (теги, классы, скрипты) | Отсутствует |
| Кодировка | Объявлена в <meta>, часто непоследовательно | Явная UTF-8 или UTF-16 |
| Готовность к токенизации | Сначала нужен парсер | Да, сразу |
| Удобство для grep / awk | Плохое (совпадения внутри тегов) | Отличное |
| Аудитория | Браузеры | Поиск, NLP, аналитика, архивы |
Скачайте установщик по ссылке выше и запустите его на вашем сервере или рабочей станции Windows. Установка занимает меньше минуты. Браузер, Microsoft Office или среда выполнения Java не требуются — конвертер разбирает HTM собственным движком и пишет Unicode-текст напрямую.
Откройте cmd.exe или PowerShell. Исполняемый файл конвертера — HTMLConverter.exe, расположенный в папке установки (обычно C:\Program Files\CoolUtils\TotalHTMLConverterX\). Добавьте его в системную переменную PATH или используйте полный путь в командах.
Простейшая команда удаляет разметку из каждого HTM-файла в папке и пишет UTF-8 текст:
HTMLConverter.exe C:\Pages\*.htm C:\Output\ -c TXT -Encoding UTF-8
Эта команда обрабатывает каждый файл .htm в папке C:\Pages\ и сохраняет полученные файлы .txt в C:\Output\. Каждый HTM создаёт один TXT с тем же базовым именем и текстом тела в UTF-8.
Настройте вывод под потребителя текста:
HTMLConverter.exe C:\Pages\*.htm C:\Output\ -c TXT -Encoding UTF-16 -BOM 1 -log C:\Logs\htm2txt.log
-Encoding UTF-8 — по умолчанию; работает для большинства поисковых и NLP-пайплайнов-Encoding UTF-16 — полезно для устаревшего инструментария Windows, ожидающего широкие символы-BOM 1 или -BOM 0 — записать или пропустить метку порядка байтов; многие индексаторы предпочитают без BOM-log C:\Logs\htm2txt.log — записывать каждый обработанный файл и любые предупреждения парсераСохраните команду в файле .bat и запланируйте его через Планировщик задач Windows:
@echo off "C:\Program Files\CoolUtils\TotalHTMLConverterX\HTMLConverter.exe" C:\Incoming\*.htm C:\Archive\TXT\ -c TXT -Encoding UTF-8 -BOM 0 -log C:\Logs\htm2txt.log
Эта команда запускается каждую ночь (или с любым заданным интервалом) и кладёт UTF-8 текст в архивную папку, готовую к подхвату поисковым индексатором, NLP-задачей или grep-проверкой.
Total HTML Converter X регистрируется как полноценный объект ActiveX. Вы можете вызывать его из любой COM-совместимой среды — .NET, VBScript, PHP, Python, Ruby или ASP. Это позволяет встроить извлечение Unicode-текста из HTM в ваш сервис загрузки данных, интранет-портал или NLP-пайплайн без запуска командной строки.
Пример (C#/.NET):
HTMLConverterX Cnv = new HTMLConverterX();
Cnv.Convert("C:\\Pages\\report.htm", "C:\\Output\\report.txt", "-c TXT -Encoding UTF-8 -BOM 0 -log c:\\Logs\\htm.log");
Пример (PHP):
$c = new COM("HTMLConverter.HTMLConverterX");
$c->convert("C:\\Pages\\report.htm", "C:\\Output\\report.txt", "-c TXT -Encoding UTF-8 -BOM 0 -log c:\\Logs\\htm.log");
Тот же вызов работает из ASP.NET, VBScript, Python, Ruby, Perl и JavaScript (Windows Script Host). Ваш сервис может принимать загруженный HTM и возвращать чистый Unicode-текст вызывающей стороне в том же запросе.
| Функция | Онлайн-конвертеры | Total HTML Converter X |
|---|---|---|
| Пакетная обработка | По одному файлу за раз | Неограниченное количество файлов за раз |
| Конфиденциальность файлов | Файлы загружаются на сторонний сервер | Файлы не покидают ваш компьютер |
| Управление кодировкой | Обычно только UTF-8 | UTF-8, UTF-16 LE/BE, переключение BOM |
| Не-латинские письменности | Непоследовательно (моджибаке на CJK, арабском) | Полное покрытие Unicode, BIDI сохранён |
| Автоматизация | Только вручную | Командная строка, .bat, Планировщик задач, ActiveX |
| Серверное развёртывание | Невозможно | Разработан для серверов, GUI не требуется |
| Пропускная способность | Ограничена скоростью загрузки | Локальный ввод-вывод, тысячи файлов в час |
| Требуется интернет | Да | Нет |
class и JavaScript-строк. Grep по извлечённым TXT возвращает только совпадения в реальном тексте — именно тот ответ, который нужен аудитору.Вывод — это честный UTF-8 или UTF-16. Кириллица остаётся кириллицей, CJK остаётся CJK, арабский и иврит сохраняют свои символы в логическом порядке. Никакой транслитерации, никакого выкидывания символов, никакой замены на знак вопроса — что было читаемо в HTM, остаётся читаемым в TXT.
Total HTML Converter X создан для автоматической работы. Никаких окон GUI, диалоговых окон, запросов подтверждения. Он работает тихо из командной строки или как часть сервиса — именно то, что нужно индексирующей задаче, NLP-пайплайну или архивному воркеру.
Поисковые движки, NLP-инструментарии и устаревшие системы — каждый ожидает свои последовательности байтов. Конвертер выставляет кодировку и BOM как флаги командной строки, поэтому вы пишете UTF-8 без BOM для Elasticsearch, UTF-16 LE с BOM для инструмента только под Windows и UTF-8 с BOM для рецензента, работающего в Notepad — из одной установки.
Тот же инструмент командной строки конвертирует HTM в PDF, DOC, XLS, TIFF, JPEG, RTF и другие форматы. Одна установка покрывает все потребности извлечения из HTM на сервере. Замените -c TXT на -c PDF, и вы получите архивный PDF на выходе с теми же функциями пакетной обработки и автоматизации.
(30 дней, без email и кредитной карты)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"Мы сжигали токены контекста на сырых HTM-тегах ещё до того, как наша модель эмбеддингов видела реальный текст. Total HTML Converter X каждый час кладёт чистый UTF-8 в наше хранилище загрузки. Страницы на кириллице и деванагари проходят без потерь, блоки BIDI выходят в логическом порядке, а наш токенизатор счастлив. Перплексия на том же корпусе упала, как только мы перестали кормить его разметкой."
Priya Krishnamurthy NLP Engineer, Conversational AI Startup
"Наш кластер Elasticsearch индексирует 2,3 миллиона архивных HTM-бюллетеней на девяти языках. Предварительное извлечение чистого UTF-8 этим конвертером сократило размер индекса примерно на сорок процентов и сделало запросы по фразам реально возвращающими релевантные совпадения вместо имён CSS-классов. Связка .bat плюс Планировщик задач работает автоматически на Server 2019 и за шесть месяцев не дала сбоя ни разу."
Stefan Holzer Search Architect, EU Public Sector Portal
"Мы храним HTM-копии клиентских коммуникаций для юридического хранения. Рецензентам нужны были текстовые версии, удобные для grep, для поиска по ключевым словам. Конвертер выдаёт UTF-8 без BOM ровно так, как ожидает наша платформа e-discovery, а лог-файл достаточно подробен, чтобы удовлетворить наш аудиторский след. Документация по флагу BOM могла бы быть яснее, но поддержка прояснила всё в тот же день, когда мы спросили."
Margaret Whitlock Compliance Lead, Insurance Holding Group
HTMLConverter.exe C:\Pages\*.htm C:\Output\ -c TXT -Encoding UTF-8. Она удаляет разметку из каждого HTM-файла и пишет чистый UTF-8 текст. Добавьте -Encoding UTF-16, -BOM 0 или -log для управления выходным файлом.-Encoding UTF-8 для поисковых индексаторов и NLP-пайплайнов, -Encoding UTF-16 для устаревшего инструментария Windows, ожидающего широкие символы. По умолчанию используется UTF-8 без BOM, что подходит Elasticsearch, Solr и большинству современных потребителей.-BOM 1 записывает BOM в начале каждого файла (EF BB BF для UTF-8, FF FE для UTF-16 LE). -BOM 0 пропускает её. Большинство поисковых и NLP-цепочек предпочитают без BOM; некоторые просмотрщики только под Windows и инструменты SQL bulk-import требуют её.<script>, <style> и HTML-комментарии удаляются перед записью текста. Вывод содержит только читаемое содержимое тела — то, что человек увидел бы в браузере, минус макет. Это именно то, что нужно поисковому индексатору или токенизатору LLM.HTMLConverter.HTMLConverterX). Вызывайте его из .NET, PHP, Python, VBScript, ASP, Ruby или Perl. Ваш сервис принимает загруженный HTM и возвращает Unicode-текст в том же запросе, без необходимости запускать командную строку.
string src = @"C:\test\Source.html";
string dest = @"C:\test\Dest.pdf";
var cnv = new HTMLConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\HTML.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\HTMLConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.html";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" \"{outPath}\" -cPDF";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
C.Convert "c:\source.html", "c:\dest.jpg", "-cJPG -log c:\html.log"
C.Convert "https://www.coolutils.com/", "c:\URL Page.pdf", "-cPDF -log c:\html.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.html", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
$src="C:\\test\\test.html";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("HTMLConverter.HTMLConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\HTML.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('HTMLConverter.HTMLConverterX')
src = "C:\\test\\test.html"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\HTML.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("HTMLConverter.HTMLConverterX")
src = "C:\\test\\test.html"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\HTML.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('HTMLConverter.HTMLConverterX');
c.Convert('c:\test\source.html', 'c:\test\dest.pdf', '-cPDF -log c:\test\HTML.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("HTMLConverter.HTMLConverterX");
c.Convert("C:\\test\\source.html", "C:\\test\\dest.pdf", "-cPDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.html"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'HTMLConverter.HTMLConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\HTML.log"); print $c->ErrorMessage if -e $dest;
Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.

Связанные темы
Конвертация HTML в PDF через командную строку — серверный пакетный конвертер