Skip to content

OdfKit 0.0.1

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 09:01
v0.0.1
b4ef7fc

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 與行為可能調整。

文件

https://rubujo.github.io/OdfKit/