DOCX 格式解密:Office Open XML 架構
每天有數十億份 DOCX 文件在全球被建立、編輯和分享。但你知道嗎?一個 .docx 檔案其實不是一個單一的文件,而是一個 ZIP 壓縮包,裡面包含了多個 XML 檔案和資源。
從 DOC 到 DOCX 的演進
在 Office 2007 之前,Word 使用的是二進位 DOC 格式,這是一個封閉、專屬的格式。2006 年,微軟推出了 Office Open XML(OOXML),並在 2008 年獲得 ISO/IEC 29500 國際標準認證。DOCX 的「X」就代表 XML。
DOCX 的內部結構
如果你將一個 .docx 檔案的副檔名改為 .zip 並解壓縮,你會看到以下結構:
| 路徑 | 說明 |
|---|---|
| [Content_Types].xml | 定義壓縮包中各部分的 MIME 類型 |
| _rels/.rels | 定義各部分之間的關係 |
| word/document.xml | 文件的主要內容(段落、文字、表格等) |
| word/styles.xml | 文件的樣式定義 |
| word/fontTable.xml | 使用的字型清單 |
| word/settings.xml | 文件設定(頁面大小、邊距等) |
| word/media/ | 嵌入的圖片和媒體資源 |
| word/numbering.xml | 項目符號和編號清單的定義 |
| docProps/core.xml | 文件屬性(作者、建立日期等) |
重點摘要:DOCX 本質上是一個 ZIP 壓縮包,內含結構化的 XML 檔案。這種設計讓 DOCX 成為一個開放、可解析的格式,任何程式都可以讀取和修改其內容。
document.xml:文件的核心
document.xml 是 DOCX 最重要的部分,它使用 XML 標記來描述文件的內容結構:
- <w:body> — 文件的主體
- <w:p> — 段落(Paragraph)
- <w:r> — 段落內的文字執行(Run),一個 Run 是具有相同格式的連續文字
- <w:t> — 實際的文字內容(Text)
- <w:tbl> — 表格
- <w:drawing> — 繪圖物件(圖片、圖表等)
styles.xml:樣式系統
DOCX 的樣式系統非常強大,支援多層級的樣式繼承:
- 預設樣式 — 全域性的預設格式
- 段落樣式 — 定義段落的格式(間距、對齊、縮排等)
- 字元樣式 — 定義文字的格式(字型、大小、粗細等)
- 直接格式 — 直接套用在文字上的格式,優先級最高
為什麼轉 PDF 有時會跑版?
了解 DOCX 結構後,就能理解轉換問題的根源:
- 字型差異 — DOCX 引用了本機字型,但轉換環境可能沒有安裝相同字型
- 樣式解讀差異 — 不同轉換引擎對 OOXML 規格的實作可能有微小差異
- 複雜排版 — 文字方塊、圖片環繞、多欄排版等複雜功能的轉換挑戰最大
- 巨集與動態內容 — VBA 巨集和表單欄位無法在 PDF 中保留
結語
DOCX 的 Office Open XML 架構是一個精心設計的文件格式標準。理解它的內部結構不僅有助於解決轉換問題,也能讓你更有效地建立和管理文件。下次遇到轉換問題時,你就知道該從哪裡尋找原因了。
參考文獻
- ECMA International. "ECMA-376: Office Open XML File Formats." ECMA International, 2021. https://ecma-international.org/publications-and-standards/standards/ecma-376/
- Microsoft. "Open XML SDK documentation." Microsoft Learn, 2024. https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
- ISO/IEC. "ISO/IEC 29500-1:2016 — Office Open XML File Formats." International Organization for Standardization, 2016. https://www.iso.org/standard/71691.html
- Microsoft. "Word file format reference." Microsoft Learn, 2024. https://learn.microsoft.com/en-us/openspecs/office_standards/ms-docx/