[紀錄] 尋找支援C#的ODT產生模組

圖片來源:pakutasoフリー素材

算是一個「記錄」XD 因為我裡面也沒有教你怎麼用!因為我失敗了! 我只是想要記錄一下我這兩個星期以來崩潰的過程 oAo|| 

先列個我的需求!主要是業主需要讓網路系統提供的文件要能夠符合 ODF(OpenDocument Format的文件格式。一般情況下,其實就是直接把網站提供的文件先轉存成 PDF 或是 CSV 格式給大家下載即可,畢竟 ODF 的概念就是希望文件能不被特定的軟體綁定,就算一個剛灌好的電腦也能打開觀看/使用的精神。

可惜的就是我負責的系統中,它有一些申請的服務,這服務會產生一些文件讓申請者去做修改並且當成附件用公文提出。所以無法都轉成 PDF,目前提供的就是 Word 檔案。

然後這些檔案又比較複雜,因為這些文件的內容是從資料庫跟申請內容組合產生,所以已經有個組合好的檔案了。

所以我比較想要的模組/Library功能:

  1. 可以直接把 DOCX 轉成 ODT (對應 WORD)
  2. 或是可以讀取不同的範例檔塞入值再組合一起
  3. 不要直接使用軟體進行轉檔(例:需安裝該軟體之後用 cmd 進行轉換)

在一開始製作 DOCX 或是其他案子製作自己排版的 PDF 的時候,google 上關鍵字一下就跑出來了很多。有不少第三方的 Library 可以使用,像我就是使用 DOCX套版製作 Word 檔。生成 PDF 的話用的是 iTextSharp。這兩個都很好用,而且網路上的教學文章也不少,遇到問題好找到方法解決。

這次我本來想說轉成 ODF 的工作應該也不算太難,最好的就是能符合我 1. 的要求,這樣我程式要修改的部份就會很少時間也會縮短,再不行就只好自己組合一個 ODT 出來。

但事實上,從一開始就碰壁。

在轉檔的部份,我找到的都是線上轉檔的服務,不只要收費支援的程式多半是 JAVA 或是 PHP 。雖然我也會但因為這樣要增加業主系統安裝的東西,能避免還是避免。

不使用線上轉檔的服務的話,就是要直接呼叫軟體來做。LibreOffice 雖然有提供 cmd line 的語法轉換檔案,但這方法最怕的就是軟體卡住,可能會造成整個服務掛點需要人工排除(就是打開工作管理員砍掉執行中的軟體),但這業主沒有提供遠端系統登入,所以如果一遇到這狀況我就得跑業主的工作地點,這無法啊!這會死人的啊! ovo|| 

雖然說會死人,但我其實也是把這段努力實現過,但遇上很多問題(執行權限等等的),花費了我幾天還是失敗收場。

那組合 ODT 這條路呢?更有趣啦!(自暴自棄)我還真的沒啥找到,太神奇了。我以為這種的會不少,卻意外的少 ΣoDo  後來想想也對,我使用的 .Net 是微軟的,它沒那麼的想要支援 ODF 也是很正常的(幫助對手打擊自己幹嘛XD)

我從頭到尾就只找到了一個 Library:AODL Library。但一來它最後的更新時間是 2013年,可能已經不支援太多東西,二來是實際上使用的狀況下困難重重。

它沒有很好的文件可以查詢,範例也沒有很完整。可以讀取範本,但無法組合不同的範本,而且還不能取代掉範本中設定的值(或許是我太笨沒有測出方法)

所以花了一個星期的工作天我還沒辦法處理掉這個工項。太令人崩潰了,我跟同事都覺得這不應該是個麻煩的工項才對,結果尋找方法的結果竟然很困難。

國家發展委員會為了要推廣 ODF 有製作了解決方案,我也有去研究了一下。

它總共分成兩種,一個應用工具,一個是 API 工具。前者是直接支援使用者已經安裝好的 LibreOffice 的工具,後者是提供了 API 架設使用工具。我原本以為後者可以拿來利用,但研究了它的使用手冊發現,一來它所需要的是 centerOS = 另外需要一個電腦來架設這個 Server ,二來就算我把環境弄好,它提供的是上傳慣用的範例檔,然後使用它。距離我需要的是組合很多個範例檔還有點距離。

但其實第一點就很難實現。因為這必須架設在業主那邊,提出申請還有後續的管理會比架設更麻煩,所以在研究之後,這個方案就被我放到了最後(什麼都無法實現的話才去做的)

(這個方案比較適合一個團體,有一些固定的文件格式,想要產生ODF版本,可以架設起來,然後設計 ODF的範本。使用者則安裝應用工具,去存取這個 SERVER 上的範本來應用)

事情又回到了起點 TAT  這時侯找回了線上轉檔,想說找找有沒有免費版本,先試試看效果,如果還不錯的話再來考慮(?)這時候 ami 大大幫我找到了一個支援 C# 的轉檔方案,而且他不是線上轉檔,是直接提供 dll 。Spire 系列

最讓我這個已經崩潰的人開心的是,轉檔的程式只有 3行!3行!!!

它主要是付費購買,但因為很貴,所以之前其實有找到但被我放棄(無法購買),但 ami 大大是幫我發現他有免費版本,限制使用的部份是:

Free Spire.Doc 完全免费并没有任何警告信息,但是免费版有篇幅限制。在加载或操作 Word 文档时,要求 Word 文档不超过 500 个段落,25 个表格。同时将 Word 文档转换为 PDF 和 XPS 格式时,仅支持转换前 3 页。

評估了我的檔案,應該都在這之下,所以可以使用!開心! //oDo//  真的開心,因為我真的崩潰很久!

雖然成功之前我因為先抓了試用版,利用程式轉檔的結果發現有「警告訊息」,我就想說如果把轉檔後的 odt 檔案解壓縮之後把 content.xml 的警告訊息刪掉後再壓縮起來是否就可以成為「沒有警告訊息的檔案」了?結果是,人家給你試用檔就是有考慮到這個,所以產生出來有警告訊息的檔案,如果不是正常用軟體打開刪除,解壓縮出來的並不是正常的 ODT 檔案,所以再壓縮回去就會變成無法使用的檔案。

所以說,想要偷吃步真的很容易失敗! -_- 

這件事情終於告一段落,雖然還有些需要調整的(因為 WORD 的一些設定轉到 ODT 之後會出現問題),但至少可以順利產生 ODT 檔案了。這一段真的太崩潰了,所以記錄一下。

雖然其實我們自己去問了很多人跟業主,他們大部分不會直接使用「ODF」的檔案,就是使用支援的軟體打開 WORD 檔。

統整一下我找到的方法,有需要的人可以去研究(有些我真的沒研究完,所以別問我~)(喂

免費Library
AODL Library:程式組合並產生ODF檔案

國家發展委員會
ODF文件應用/API工具:應用軟體、範本提供Server

線上轉檔
Aconvert:這只有線上轉檔
Convertio:有線上轉檔,也有提供API:支援PHP、需費用

用軟體轉
如何利用C#將word檔產生為pdf:修改command line 參數可以轉成 odt

支援C#的轉檔模組
Spire 系列:在限制下可以使用免費版本,或購買使用

如果你覺得這篇文章還不錯,請您花點時間註冊並幫按下方的Like。支持創作,正向交流:)
回饋由 (likecoin)基金會出資,關於註冊您可參考這篇文章參考新手村文章
分享這篇文章

寫點留言吧!

avatar
1000