如何使用 GroupDocs.Viewer Java 将 CHM 转换为 HTML(以及更多)

将遗留帮助文件编译成现代格式是开发人员的常见需求。在本教程中,您将 convert chm to html 并学习如何使用 GroupDocs.Viewer for Java 将相同的 CHM 源渲染为 JPG、PNG,以及 convert chm to pdf。完成后,您将拥有一个可重复使用的模式,适用于任何 CHM 文档,无论是归档旧手册还是在 Web 门户上公开帮助内容。

使用 GroupDocs.Viewer for Java 渲染 CHM 文件

使用 GroupDocs.Viewer for Java 渲染 CHM 文件

快速答案

  • 哪个库处理 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)渲染为 Web 友好的格式,无需 Microsoft Office 或 Adobe Acrobat。它可在任何 Java 8+ 运行时上运行,并可集成到 Web、桌面或微服务架构中。更多详情请参阅 GroupDocs 文档

为什么将 CHM 转换为 HTML?

GroupDocs.Viewer 支持 50+ 输入和输出格式,并且能够在典型的 2 GHz CPU 上将 200 页的 CHM 文件在不到 2 秒的时间内转换为单个 HTML 页面,同时保持所有内部链接的功能。这种速度和格式的广度使其非常适合将遗留帮助系统迁移到现代 Web 门户。

前提条件

  • GroupDocs.Viewer Java 库(版本 25.2 或更高)。
  • 兼容 Maven 的项目(IntelliJ IDEA、Eclipse 或类似)。
  • 具备 Java 和 Maven 依赖管理的基础知识。

设置 GroupDocs.Viewer for Java

要在 Java 项目中使用 GroupDocs.Viewer,请添加 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);

HtmlViewOptions 类是配置对象,用于告诉查看器如何生成 HTML。将 singlePage 设置为 true 可将所有章节合并为一个 HTML 文件,非常适合快速浏览。

如何将 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);

JpgViewOptions 类允许您控制图像质量、 DPI 和页面选择。仅渲染所需页面可节省内存和 CPU 周期。

如何将 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);

PngViewOptions 类的工作方式类似于 JPG 对应类,但生成的 PNG 文件保留了精确的视觉保真度。

如何将 CHM 转换为 PDF?

PDF 是最便携的分发格式。查看器可以一次调用将整个 CHM 内容合并为单个 PDF 文档。

String outputPath = "output/chm-document.pdf";
PdfViewOptions options = PdfViewOptions.forFile(outputPath);
viewer.view(options);

PdfViewOptions 类自动处理分页、字体嵌入和超链接保留。

实际应用

  • 归档: 将遗留 CHM 文件转换为现代格式,以便更容易访问和长期保存。
  • Web 门户: 将 CHM 文档发布为内部公司 intranet 上的 HTML 页面。
  • 移动应用: 将帮助文件的 PDF 版本捆绑到 Android 或 iOS 应用中,以供离线阅读。

性能考虑

在处理大型或大量文档转换时:

  • 内存管理: 渲染为 PNG 或高分辨率 JPG 可能占用大量内存;监控 JVM 堆并考虑对大批量使用 -Xmx2g
  • 并行处理: 使用 Java 的 ExecutorService 并发转换多个 CHM 文件,但要限制线程数以避免 CPU 过载。
  • 批处理大小: 对于大规模归档,建议将文件分批处理(每批 10‑20 个),以保持资源使用可预测。

常见问题及解决方案

  • 缺少图像: 确保使用 HtmlViewOptions.forEmbeddedResources,以便图像与 HTML 一起提取。
  • 页面顺序不正确: 验证 CHM 文件的内部目录(TOC)是否完整;查看器会遵循原始导航结构。
  • 内存溢出错误: 增加 JVM 堆大小,或在较新 API 版本中使用 viewer.view(options, new Stream()) 切换到流模式。

常见问答

问:我可以一次性转换整个 CHM 文件目录吗?
答:可以,使用 Java 的 Files.list API 循环遍历文件夹,并对每个文件调用相同的渲染代码。

问:如何处理大型文档而不出现内存不足?
答:增加 JVM 堆(-Xmx)或以较低 DPI 渲染为图像格式;也可以将 CHM 拆分为多个部分分别处理。

问:是否可以进一步自定义输出格式?
答:可以,GroupDocs.Viewer 提供了丰富的 CSS 注入、页面尺寸和图像质量等选项。请查阅 API 参考 获取详细设置。

问:库在转换为 PDF 时是否保留超链接?
答:当然。所有内部 CHM 链接都会转换为可点击的 PDF 注释。

问:我可以只渲染 CHM 的部分章节吗?
答:可以,在视图选项上使用 setPageNumbers 方法指定所需的确切页面或章节。

结论

您现在拥有完整的、可投入生产的工作流,可使用 GroupDocs.Viewer for Java convert chm to htmlconvert chm to pdf,并生成图像表示。这些技术帮助您现代化遗留帮助系统,提升可访问性,并将文档集成到任何基于 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
}

相关教程