Как конвертировать 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

Быстрые ответы

  • Какая библиотека обрабатывает рендеринг 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 для больших пакетов.
  • Параллельная обработка: Используйте ExecutorService Java для одновременного конвертирования нескольких файлов 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
}

Связанные руководства