如何使用 GroupDocs.Viewer Java 將 CHM 轉換為 HTML(以及其他格式)

將舊版說明檔編譯成現代格式是開發人員常見的需求。在本教學中,您將 將 CHM 轉換為 HTML,並學習如何使用 GroupDocs.Viewer for Java 將相同的 CHM 檔案渲染為 JPG、PNG,以及 將 CHM 轉換為 PDF。完成後,您將擁有一套可重複使用的模式,適用於任何 CHM 文件,無論是歸檔舊手冊還是將說明內容發布於網站入口。

使用 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)渲染成適合網頁的格式,且不需要 Microsoft Office 或 Adobe Acrobat。它可在任何 Java 8 以上的執行環境上運行,並能整合至 Web、桌面或微服務架構。欲了解更多資訊,請參閱 GroupDocs 文件

為何將 CHM 轉換為 HTML?

GroupDocs.Viewer 支援 超過 50 種輸入與輸出格式,能在一般 2 GHz CPU 上於 2 秒內將 200 頁的 CHM 檔案轉換為單一 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 檔案轉換為現代格式,以便更容易存取與長期保存。
  • 網站入口: 將 CHM 文件發布為內部公司 Intranet 的 HTML 頁面。
  • 行動應用程式: 在 Android 或 iOS 應用中捆綁 PDF 版說明檔,以供離線閱讀。

效能考量

在處理大量或多筆文件轉換時:

  • 記憶體管理: 渲染為 PNG 或高解析度 JPG 可能佔用大量記憶體;請監控 JVM 堆積並考慮對大型批次使用 -Xmx2g
  • 平行處理: 使用 Java 的 ExecutorService 同時轉換多個 CHM 檔案,但需限制執行緒數量以免 CPU 過度競爭。
  • 批次大小: 對於龐大檔案庫,建議以 10‑20 個檔案為一組進行處理,以保持資源使用的可預測性。

常見問題與解決方案

  • 缺少影像: 確認使用 HtmlViewOptions.forEmbeddedResources,以便在提取 HTML 時同時抽取影像。
  • 頁面順序不正確: 檢查 CHM 檔案的內部目錄 (TOC) 是否完整;檢視器會遵循原始的導覽結構。
  • 記憶體不足錯誤: 增加 JVM 堆積大小,或在較新 API 版本中使用 viewer.view(options, new Stream()) 轉為串流模式。

常見問答

Q: 我可以一次轉換整個 CHM 目錄嗎?
A: 可以,使用 Java 的 Files.list API 迭代資料夾,對每個檔案呼叫相同的渲染程式碼。

Q: 如何在不耗盡記憶體的情況下處理大型文件?
A: 增加 JVM 堆積 (-Xmx) 或以較低 DPI 渲染為影像格式;亦可將 CHM 拆分為多個章節分別處理。

Q: 是否可以進一步自訂輸出格式?
A: 可以,GroupDocs.Viewer 提供廣泛的 CSS 注入、頁面尺寸與影像品質設定。請參閱 API 參考文件 了解詳細設定。

Q: 函式庫在轉換為 PDF 時是否保留超連結?
A: 完全保留。所有 CHM 內部連結皆會轉換為可點擊的 PDF 註解。

Q: 我可以只渲染 CHM 的部分章節嗎?
A: 使用檢視選項的 setPageNumbers 方法,指定所需的頁碼或章節。

結論

您現在已擁有完整、可投入生產的工作流程,可使用 GroupDocs.Viewer for Java 將 CHM 轉換為 HTML將 CHM 轉換為 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
}

相關教學