Repository navigation
OdfKit 0.0.1
OdfKit 的第一個版本:以 .NET 讀寫與驗證 OpenDocument(ODT、ODS、ODP 等),並與 OOXML、HTML、PDF、Markdown、RTF 互轉,另附針對繁體中文罕用字的 WebFont 子集工具。
這個 Release 只附上套件檔(.nupkg、.snupkg)、SBOM、雜湊清單與 sidecar 發行檔,尚未發佈到 NuGet.org。
內容
- ODF 讀寫與驗證:載入、修改、儲存 ODF 文件;內建 ODF 1.4 RELAX NG schema 驗證器,輸出的文件可對官方 schema 驗證。
- OOXML 互轉:DOCX、XLSX、PPTX 與 ODT、ODS、ODP 雙向轉換(清單、表格、註腳、頁首頁尾、多章節、書籤、目錄、分欄、公式、日期與數字格式、合併儲存格等;涵蓋範圍與限制見文件)。
- 匯出與匯入:HTML、PDF(可簽章)、Markdown、RTF、SVG 匯出,工作表與圖表的 PNG/JPEG 影像;Markdown、RTF 匯入。
- 擴充:RDF 中繼資料(含 dotNetRDF 與 SPARQL 橋接)、LibreOffice Basic/Python 指令碼管理與巨集安全政策、ODT 變更操作(Collaboration)的匯出與合併。
- WebFont:依實際使用的文字產生只含所需字形的 TTF/WOFF/WOFF2 子集(ASP.NET Core、System.Web 與 build 工具)。
本版的驗證與修正
這一版以 LibreOffice 當裁判,用真實文件反覆驗證(OOXML 輸出另以 Open XML SDK 驗證,字型以真實 Windows 字型加 Chrome 渲染比對),找到並修正:
- 載入 LibreOffice 的檔案再儲存後,LibreOffice 會拒絕開啟(封裝寫出時空項目複製出垃圾位元組)。
- LibreOffice 轉出的 ODS 使 ODS → XLSX 轉換幾乎不會結束;公式、日期、合併儲存格與數字格式在轉換中遺失。
- ODT → DOCX 完全沒有清單支援,且輸出違反 Open XML schema(Word 可能提示檔案損毀)。
- DOCX → ODT 遺失書籤、區塊內容控制項、目錄、分欄、多章節的頁面設定與欄位。
- HTML 與 PDF 匯出遺失超連結文字、清單與表格內文。
- 簡報的表格與版面配置不符 ODF schema;RTF 與 Markdown 匯入遺失或污染內容,且可能使文件無法儲存。
- WebFont 引擎拒絕 Windows 標楷體與新細明體,或產生無法被瀏覽器載入的字型。
- 載入大型工作表驗證的耗時與記憶體由平方成長降到接近線性,配置量再降約三分之一。
- 文字量測忽略粗體、缺字沒有備援字型(中文寬度少 22–45%);工作表與圖表的影像中文全是方框;SVG 匯出不讀圖形樣式(線寬、無線條、虛線、頁面大小都錯)。
- RDF 中繼資料位置錯誤(LibreOffice 檔案載入得到 0 個三元組、
rdf:type全部遺失);PDF 簽章的 trailer 遺失/ID與/Info。 - 讀取 LibreOffice 的巨集文件會擲出例外;文件層級的事件繫結在儲存時消失;Collaboration 匯出遺失清單與表格內文。
完整清單見 CHANGELOG。
已知限制
- 影像匯出是簡化的繪製:工作表影像為固定欄寬列高的格線,不含合併儲存格、儲存格色彩與邊框;圖表只涵蓋長條、折線、散佈與圓餅;PDF 簽章欄位不可見,沒有時間戳記。
- 轉換只涵蓋文件列出的結構;連續章節的頁面變更、欄間分欄符號、除頁碼與日期等以外的多數欄位、ODT → DOCX 的註腳與頁首頁尾格式等未轉換。
- 很大的工作表做完整 schema 驗證仍需要大量記憶體(約 17 KB/列),超大檔案建議使用串流讀取器。
- WebFont 屬於有界的工程範圍:只驗證過 Chrome,Firefox、Safari 與複雜文字 shaping 的支援範圍見 WebFont 證據矩陣。
- 這是 0.0.1,尚未有外部使用者的回饋;API 與行為可能調整。