將 DOCX 轉換為 Markdown(使用 GroupDocs.Parser Java)
在現代的網路與內容管理情境中,您常常需要 將 docx 轉換為 markdown,以便讓富文字文件變得輕量、可攜且易於呈現。本教學將逐步說明如何使用 GroupDocs.Parser for Java 來執行轉換、取得頁數,並從每一頁擷取 markdown。完成後,您將擁有可直接嵌入任何 Java 服務的生產就緒解決方案。
快速解答
FormattedTextMode.Markdown 是一個列舉值,告訴解析器以 Markdown 格式輸出內容。
- GroupDocs.Parser 能將 DOCX 轉換為 Markdown 嗎? 可以 – 呼叫
parser.getFormattedText並傳入FormattedTextMode.Markdown。 - 如何驗證是否支援 formatted‑text? 使用
parser.getFeatures().isFormattedText()。 - 哪個方法會回傳頁數?
parser.getDocumentInfo().getPageCount()。 - 生產環境是否需要授權? 有效的 GroupDocs.Parser 授權會移除評估限制。
- 哪個建置工具能簡化相依性管理? Maven 是 Java 專案的推薦方案。
什麼是「將 docx 轉換為 markdown」?
將 docx 轉換為 markdown 意指將 Microsoft Word 的樣式、標題、清單、表格與圖片轉換成 Markdown 語法。其結果為純文字標記,靜態網站產生器、Git 儲存庫以及後續處理程序皆可在不帶沉重格式負擔的情況下使用。
為何使用 GroupDocs.Parser 進行此轉換?
GroupDocs.Parser 支援 70 多種輸入與輸出格式——包括 DOCX、PDF、PPTX 與 XLSX,且可處理高達 2 GB 的文件而無需將整個檔案載入記憶體。其串流 API 能在保持低記憶體使用的同時提供高保真度的 markdown,十分適合大規模批次作業。
前置條件
- Java Development Kit (JDK) 8+ 已安裝。
- IDE 如 IntelliJ IDEA、Eclipse 或 VS Code。
- Maven(或手動下載 JAR)用於相依性管理。
- GroupDocs.Parser 授權(免費試用或購買)。
設定 GroupDocs.Parser(Java 版)
安裝
將 GroupDocs 套件庫與相依性加入您的 pom.xml:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
直接下載
如果您不想使用 Maven,也可以從 GroupDocs.Parser for Java releases 下載最新的 JAR。
取得授權
移除評估限制:
- 免費試用: 從 GroupDocs 官方網站下載試用授權。
- 暫時授權: 透過 GroupDocs website 申請。
- 正式購買: 購買符合您部署需求的正式授權。
基本初始化與設定
Parser 類別是 GroupDocs.Parser 的主要入口點,代表一個文件並提供其內容與中繼資料的存取。建立指向您的 DOCX 檔案的 Parser 實例:
import com.groupdocs.parser.Parser;
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/sample.docx")) {
// Code for text extraction or document info retrieval goes here
}
這一行即可開啟文件,並為後續操作做好準備。
實作指南
以下我們將流程分為三個實用功能:檢查支援情況、取得頁數,以及擷取 Markdown。
功能 1:檢查文件是否支援格式化文字擷取
為何重要: 並非所有格式皆支援富文字擷取,呼叫錯誤的 API 可能會拋出例外。
步驟 1.1 – 驗證支援情況
isFormattedText 表示目前的文件類型是否能轉換為格式化標記(如 Markdown)。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.IDocumentInfo;
import com.groupdocs.parser.exceptions.UnsupportedDocumentFormatException;
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/sample.docx")) {
if (!parser.getFeatures().isFormattedText()) {
System.out.println("Document isn't supported for formatted text extraction.");
}
}
功能 2:取得文件頁數
為何重要: 瞭解頁數可讓您決定是處理整個檔案還是針對特定頁面。
步驟 2.1 – 取得頁數
getPageCount 回傳已開啟文件的總頁數,供分頁邏輯使用。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.IDocumentInfo;
import com.groupdocs.parser.exceptions.UnsupportedDocumentFormatException;
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/sample.docx")) {
IDocumentInfo documentInfo = parser.getDocumentInfo();
if (documentInfo.getPageCount() == 0) {
System.out.println("Document hasn't any pages.");
} else {
System.out.println("Page count: " + documentInfo.getPageCount());
}
}
功能 3:從文件頁面擷取格式化文字(Markdown)
目標: 將每頁內容轉換為 Markdown,您可以將其串接或個別儲存。
步驟 3.1 – 迴圈遍歷頁面並擷取 Markdown
FormattedTextOptions 設定輸出模式,而 TextReader.readToEnd() 會回傳目前頁面的完整 Markdown 字串。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.IDocumentInfo;
import com.groupdocs.parser.options.FormattedTextOptions;
import com.groupdocs.parser.options.FormattedTextMode;
import com.groupdocs.parser.data.TextReader;
import com.groupdocs.parser.exceptions.UnsupportedDocumentFormatException;
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/sample.docx")) {
IDocumentInfo documentInfo = parser.getDocumentInfo();
for (int p = 0; p < documentInfo.getPageCount(); p++) {
try (TextReader reader = parser.getFormattedText(p, new FormattedTextOptions(FormattedTextMode.Markdown))) {
System.out.println(reader.readToEnd());
}
}
}
關鍵類別說明:
FormattedTextOptions讓您指定輸出模式(此例為Markdown)。TextReader.readToEnd()讀取所選頁面的完整格式化內容。
實務應用
| 使用情境 | 將 docx 轉換為 markdown 的好處 |
|---|---|
| 內容管理系統 | 儲存原始 Markdown 以加速渲染與版本控制。 |
| 資料分析工具 | 以程式方式解析標題、表格與清單以供分析。 |
| 文件轉換服務 | 提供 DOCX → Markdown 作為輕量的 PDF 替代方案。 |
| 靜態網站產生器 | 直接將 Markdown 輸入 Jekyll、Hugo 或 Gatsby 工作流程。 |
效能考量
- 記憶體管理: 為大型檔案分配足夠的堆積空間(如
-Xmx2g),以避免OutOfMemoryError。 - 平行處理: 大量轉換時,可將檔案分派至不同執行緒或使用 executor service。
- 批次處理: 將檔案分批處理以降低 I/O 開銷。
結論
您現在已擁有一套完整、可投入生產的 將 docx 轉換為 markdown 使用 GroupDocs.Parser Java 的指南,包含如何 取得文件頁數 以及安全地從每頁擷取 Markdown。將這些程式碼片段整合至您的服務、自动化批次轉換,或打造直接操作 Markdown 的自訂編輯器。
常見問答
1. 我可以在不使用 Maven 的情況下使用 GroupDocs.Parser 嗎?
可以 – 從 GroupDocs releases page 下載 JAR 檔並加入專案的 classpath。
2. 我該如何處理不支援的文件?
在擷取前務必呼叫 parser.getFeatures().isFormattedText()。若回傳 false,則跳過該檔案或通知使用者。
3. 除了 DOCX,GroupDocs.Parser 還能從哪些格式擷取?
GroupDocs.Parser 支援 PDF、PPTX、XLSX 以及其他多種檔案類型。請參閱官方文件取得完整清單。
常見問題
Q: Markdown 輸出是否完全相容於 GitHub Flavored Markdown?
A: 產生的 Markdown 符合 CommonMark 規範,而 GitHub Flavored Markdown 為其延伸,因此在大多數 GitHub 情境下皆能良好運作。
Q: 我能只擷取 DOCX 檔案的特定區段嗎?
A: 可以 – 結合 getFormattedText 的頁面範圍參數,或在擷取後使用 TextReader 進行內容過濾。
Q: 此函式庫是否支援受密碼保護的 DOCX 檔案?
A: 當在 Parser 建構子中提供密碼時,GroupDocs.Parser 能開啟受密碼保護的文件。
Q: 如何提升數千檔案的擷取速度?
A: 使用執行緒池同時處理檔案,且每個檔案重複使用單一 Parser 實例以降低開銷。
Q: 我可以在哪裡找到更多範例?
A: 官方的 GroupDocs.Parser GitHub 倉庫與文件網站提供更多程式碼範例與使用案例指南。
最後更新: 2026-07-02
測試環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs