現在政府機關都會要求資訊人員要能產出可編輯的ODT文件,供下屬單位填報資料時運用,而不能使用原來的 Word Docx等格式。
如果把一個odt檔案的副檔名改為.zip,再用解壓縮檔解開,可以看到當中有content.xml這個檔案,他其實就是我們在LibreOffice內所編輯的文件內容(context)。所以準備好一個乾淨的範本文件,將content.xml置換為我們需要的內容,再重新壓縮該檔案、更改檔名,就能產出我們要的odt檔案。
一個基本的content.xml背後基礎是XML文件跟樣式檔,框架會包含字形、樣式以及文字。
<office:document-content office:version="1.2">
<office:font-face-decls>
</office:font-face-decls>
<office:automatic-styles>
</office:automatic-styles>
<office:body>
<office:text text:use-soft-page-breaks="true">
<text:p text:style-name="P1">Hello World</text:p>
</office:text>
</office:body>
</office:document-content>
該檔案遵循XML架構,但對不熟悉tag樣式標註方法的人,要手動拼湊出所有的樣式非常困難,必須靠不斷的預覽來比較跟Word文件裡所見到的內容,這也是早期OpenOffice常常被說做出來的元件不像Word,無法真正所見即所得的原因。所以,透過Word轉出包含大部分文件格式的框架,存成範本文件,再由C#讀出文字並替換需要的內容或表格,會是較簡便的方法。
以第一個區段而言,我們可以看到檔案中所用到的字形
以第二個區段而言,我們可以看到他用類似CSS標註方式的格式,將文字區段內用到的每個樣式都列出。以最佳化的角度而言,很多樣式應該是重複的,可以不用列出這麼多筆。但Word產出的東西就是這樣,有時一個反覆編輯的檔案,樣式設定的內容可能還比內文長。