Как конвертировать CHM в HTML (и не только) с помощью GroupDocs.Viewer Java
Компиляция устаревших справочных файлов в современные форматы часто требуется разработчикам. В этом руководстве вы конвертируете chm в html и также узнаете, как отобразить тот же источник CHM в JPG, PNG и конвертировать chm в pdf с помощью GroupDocs.Viewer for Java. К концу вы получите переиспользуемый шаблон, который работает с любым документом CHM, будь то архивирование старых руководств или публикация справочного контента в веб‑портале.

Отображение CHM файлов с помощью GroupDocs.Viewer for Java
Быстрые ответы
- Какая библиотека обрабатывает рендеринг CHM? GroupDocs.Viewer for Java.
- Могу ли я получить HTML‑вывод в одном файле? Да, включив параметр
singlePage. - Является ли конвертация в PDF без потерь? Библиотека сохраняет макет, изображения и гиперссылки.
- Нужна ли лицензия для тестирования? Достаточно бесплатной пробной версии или временной лицензии.
- Какие форматы поддерживаются? HTML, JPG, PNG, PDF, а также другие, такие как DOCX и XLSX.
Что такое GroupDocs.Viewer for Java?
GroupDocs.Viewer for Java — это серверный API, который рендерит более 70 типов документов, включая CHM, в веб‑дружественные форматы без необходимости установки Microsoft Office или Adobe Acrobat. Он работает на любой среде выполнения Java 8+ и может быть интегрирован в веб, настольные или микросервисные архитектуры. Для более подробной информации см. GroupDocs documentation.
Зачем конвертировать CHM в HTML?
GroupDocs.Viewer поддерживает более 50 входных и выходных форматов и может преобразовать 200‑страничный файл CHM в одну HTML‑страницу менее чем за 2 секунды на типичном процессоре 2 ГГц, при этом сохраняет все внутренние ссылки рабочими. Такая скорость и широта форматов делают его идеальным для миграции устаревших справочных систем на современные веб‑порталы.
Предварительные требования
- GroupDocs.Viewer Java library (версия 25.2 или новее).
- Проект, совместимый с Maven (IntelliJ IDEA, Eclipse или аналогичный).
- Базовые знания Java и управления зависимостями Maven.
Настройка GroupDocs.Viewer для Java
Чтобы использовать GroupDocs.Viewer в вашем Java‑проекте, добавьте зависимость Maven:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
<version>25.2</version>
</dependency>
Получение лицензии
GroupDocs предлагает бесплатную пробную версию, временные лицензии для оценки и варианты покупки для коммерческого использования. Посетите их страница покупки или раздел временной лицензии для изучения вариантов.
После настройки библиотеки инициализируем её в простом Java‑приложении:
Viewer viewer = new Viewer("path/to/your/file.chm", new ViewerConfig());
Руководство по реализации
Как конвертировать CHM в HTML?
Загрузите файл CHM, укажите папку вывода и вызовите параметры рендеринга HTML. API автоматически извлекает встроенные ресурсы (CSS, изображения) и может объединить всё в одну страницу.
String outputDir = "output/html";
HtmlViewOptions options = HtmlViewOptions.forEmbeddedResources(outputDir);
options.setSinglePage(true); // single‑page output
viewer.view(options);
Как конвертировать CHM в JPG?
Рендеринг страниц CHM в виде изображений полезен для миниатюр или визуальных превью. Вы можете указать, какие страницы рендерить, уменьшая время обработки больших документов.
String outputDir = "output/jpg";
JpgViewOptions options = JpgViewOptions.forDirectory(outputDir);
options.setPageNumbers(new int[]{1, 2}); // render only first two pages
viewer.view(options);
Как конвертировать CHM в PNG?
Вывод в PNG сохраняет без потерь качество и поддерживает прозрачность, что делает его идеальным для скриншотов справочных тем в высоком разрешении.
String outputDir = "output/png";
PngViewOptions options = PngViewOptions.forDirectory(outputDir);
options.setPageNumbers(new int[]{1}); // render the first page as PNG
viewer.view(options);
Как конвертировать CHM в PDF?
PDF — самый переносимый формат для распространения. Просмотрщик может объединить всё содержимое CHM в один PDF‑документ одним вызовом.
String outputPath = "output/chm-document.pdf";
PdfViewOptions options = PdfViewOptions.forFile(outputPath);
viewer.view(options);
Практические применения
- Архивирование: Конвертировать устаревшие файлы CHM в современные форматы для более лёгкого доступа и долгосрочного сохранения.
- Веб‑порталы: Публиковать документацию CHM в виде HTML‑страниц во внутренних интранетах компании.
- Мобильные приложения: Включать PDF‑версии справочных файлов в приложения Android или iOS для офлайн‑чтения.
Соображения по производительности
When dealing with large or numerous document conversions:
- Управление памятью: Рендеринг в PNG или JPG высокого разрешения может быть требовательным к памяти; следите за кучей JVM и рассматривайте
-Xmx2gдля больших пакетов. - Параллельная обработка: Используйте
ExecutorServiceJava для одновременного конвертирования нескольких файлов CHM, но ограничьте количество потоков, чтобы избежать перегрузки CPU. - Размер пакета: Для огромных архивов обрабатывайте файлы группами по 10‑20, чтобы обеспечить предсказуемое использование ресурсов.
Распространённые проблемы и решения
- Отсутствующие изображения: Убедитесь, что используется
HtmlViewOptions.forEmbeddedResources, чтобы изображения извлекались вместе с HTML. - Неправильный порядок страниц: Проверьте, что внутренний оглавление (TOC) файла CHM целостен; просмотрщик сохраняет оригинальную структуру навигации.
- Ошибки Out‑of‑Memory: Увеличьте размер кучи JVM (
-Xmx) или переключитесь в потоковый режим сviewer.view(options, new Stream()), если он доступен в более новых версиях API.
Часто задаваемые вопросы
Q: Можно ли конвертировать целые каталоги файлов CHM одновременно?
A: Да, пройдитесь по папке с помощью API Java Files.list и вызовите тот же код рендеринга для каждого файла.
Q: Как обрабатывать большие документы без исчерпания памяти?
A: Увеличьте кучу JVM (-Xmx) или рендерьте в форматы изображений с более низким DPI; также можно разбить CHM на секции и обрабатывать их по отдельности.
Q: Можно ли дополнительно настроить форматирование вывода?
A: Да, GroupDocs.Viewer предлагает обширные возможности для внедрения CSS, размера страниц и качества изображений. Изучите справка API для детальных настроек.
Q: Сохраняет ли библиотека гиперссылки при конвертации в PDF?
A: Абсолютно. Все внутренние ссылки CHM преобразуются в кликабельные аннотации PDF.
Q: Можно ли отобразить только часть глав CHM?
A: Используйте метод setPageNumbers в параметрах просмотра, чтобы указать точные страницы или главы, которые вам нужны.
Заключение
Теперь у вас есть полный, готовый к продакшн рабочий процесс для конвертации chm в html, конвертации chm в pdf и создания изображений с помощью GroupDocs.Viewer for Java. Эти техники позволяют модернизировать устаревшие справочные системы, улучшить доступность и интегрировать документацию в любое решение на базе Java.
Готовы к следующему шагу? Ознакомитесь с официальной документацией GroupDocs для расширенной настройки, такой как внедрение пользовательского CSS, добавление водяных знаков и многопоточная пакетная обработка.
Последнее обновление: 2026-06-30
Тестировано с: GroupDocs.Viewer Java 25.2
Автор: GroupDocs
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/viewer/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
import com.groupdocs.viewer.Viewer;
public class ViewerSetup {
public static void main(String[] args) {
try (Viewer viewer = new Viewer("path/to/your/document.chm")) {
// Your document viewing and rendering logic goes here.
}
}
}
import java.nio.file.Path;
Path outputDirectory = TestFiles.getOutputDirectoryPath("RenderingChmFiles");
Path pageFilePathFormat = outputDirectory.resolve("chm_result_{0}.html");
import com.groupdocs.viewer.Viewer;
import com.groupdocs.viewer.options.HtmlViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
HtmlViewOptions options = HtmlViewOptions.forEmbeddedResources(pageFilePathFormat);
options.setRenderToSinglePage(true); // Optional: render into a single HTML page
viewer.view(options);
}
Path pageFilePathFormat = outputDirectory.resolve("chm_result_{0}.jpg");
import com.groupdocs.viewer.options.JpgViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
JpgViewOptions options = new JpgViewOptions(pageFilePathFormat);
viewer.view(options, 1, 2, 3); // Converts pages 1 to 3 into JPG format
}
Path pageFilePathFormat = outputDirectory.resolve("chm_result_{0}.png");
import com.groupdocs.viewer.options.PngViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
PngViewOptions options = new PngViewOptions(pageFilePathFormat);
viewer.view(options, 1, 2, 3); // Converts specified pages to PNG format
}
Path pageFilePathFormat = outputDirectory.resolve("chm_result.pdf");
import com.groupdocs.viewer.options.PdfViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
PdfViewOptions options = new PdfViewOptions(pageFilePathFormat);
viewer.view(options); // Generates a single PDF document from the CHM file
}