畢業論文編輯器軟件製作經歷與思考2

這一系列的文章主要記錄作者在開發下面網站中的畢業論文編輯器的經歷以及一些思考。

www.biyelunwenbjq.cn

在得知有些學校要求學生一定要提交Word文檔的噩耗後,本人條件反射地喊出了"哇槽!",稍微冷靜後想到的解決方法是找一個轉換工具,將Latex生成的PDF文檔轉換成Word文檔。然而嘗試了所有能找到的收錢但提供試用版和不收錢但賣廣告的轉換工具後,得出一個極爲痛苦的結論,似乎不存在一個完美的轉換工具可以做這件事情。一查原理才知道,PDF比Word的顆粒度小,而且相對自由,因此不存在PDF到Word的無損映射關,而反過來則完全OK(就如同十張10塊和一張100塊,雖然價格相等,但走進一元店就瞬間知道誰比較靈活)。

Ps:在這些原理上就註定失敗的工具中,有一個讓本人唏噓不已。它在CSDN的下載區中,不需要積分就可以下載,並且在這種白給的情懷加持下還是做到了無人問津、沒人評價。本人抱着這玩野是個病毒的心態完成了下載和安裝,殺毒軟件始終一點反應都沒有。。。伴隨着軟件首頁的淘寶農家土特產廣告,本人完成了轉換,結果是竟然是所有轉換軟件中最佳的!甚至讓我一度以爲這老哥找到了無損轉換的解決方法(後來仔細校對發現還是有出入,哎)。在此向這個同行表示一下敬意,老哥NB!

雖然有上面的意外發現,PDF無損轉Word這一招終歸是完犢子了。然而這番折騰讓我隱隱約約嗅到了一點不一樣的東西,坐下來喝了泡茶之後終於把這點東西凝聚成一個點—就算是轉換的結果有好有壞,但他們總歸是生成了一個帶格式的Word!也就是說即便不是微軟,別的公司或個人也能在代碼層面上生成一個具備格式的Word文檔!難道Word文檔的格式是公開的?哇槽!

在本人的固有印象中,這世界上完全掌握Word文檔格式的只有兩家公司—微軟和金山,對應的軟件就是Microsoft Office和WPS(對金山爲什麼能擁有Word的格式感興趣的話可以看看這個)。前幾年還經常聽說WPS弄出來的Word和Microsoft Office弄出來的Word,有兼容問題困擾着無數畢業生。就這,難道Word文檔的格式是公開的?

一查才發現,是的。。。微軟在2007年發佈的"Microsoft Office 2007"中引入了一種全新的文檔格式:Open XML。而Open XML是一種開放的文檔格式,所以微軟的Word文檔中的docx格式可以說從2007年就已經公開了。而且官方信息告訴我們,docx文檔本身是個壓縮文件,只要把它的後綴改成Zip然後解壓就能看到文檔裏面的各種對象。基於這一點,第三方獲得了讀取和生成docx文檔,或者做docx文檔的圖片提取工具,信息爬蟲等等衍生品的完美途徑。而doc這種舊版本的二進制文檔格式,也在2008年被微軟公開,任何個人和企業都可以免費得到其技術規範文件。至此,無論是全新的docx Open XML格式文檔,還是過去的doc二進制格式文檔都公開了,時間節點是12年前(2008年)。

在得到上面這些關鍵信息之後,第二個方案的構想和實行就開始了。

方案二

回顧方案一的流程:Typora分塊編寫論文->程序解析md文件獲得內容及其對應類型(圖片標題或者正文等)->程序根據內容和其對應類型生成學校指定格式的Latex源碼->Latex編譯器編譯並生成PDF

由於已經得知了能夠自己生成Word,於是方案二的設計就是將方案一中的Latex相關部分直接換成Word生成,流程變爲:Typora分塊編寫論文->程序解析md文件獲得內容及其對應類型(圖片標題或者正文等)->程序根據內容和其對應類型生成學校指定格式的Word文檔

整個方案的最大難點是指定格式的Word文檔的生成。雖然知道能夠自己生成Word,但具體怎麼生成還需研究,如果自己去閱讀微軟公開的格式文檔然後從零開始造輪子,其工作量之大足以讓人崩潰。因此找到一個別人弄好的免費的庫成爲關鍵,經過一番搜索找到了"DocX庫"—一個由愛爾蘭的"Cathal Coffey"博士開發的庫。沒錯,這哥們前期一個人閱讀微軟公開的格式文檔然後從零開始造輪子,工作量雖大但人家硬是剛了出來沒崩潰,差距啊!

有了輪子後,方案的實行就非常簡單了,主要的工作就是用"DocX庫"來實現各種格式。經過不到一週的編寫和調試,方案二出爐了。

本人對這個方案的優缺點總結如下:

優點:

  1. 同樣是用Typora進行論文的編寫,用戶端體驗與方案一完全相同。因此喜歡Typora且熟悉markdown語法的人來用這東西體驗依然爆表。
  2. 軟件的安裝同樣簡單,還是把程序打包成壓縮包,用戶直接解壓。雖然是生成Word,但並不要求用戶一定要裝Office或者WPS,如果願意同樣能移植到Linux或者其他平臺上去。
  3. 生成的是Word!生成的是Word!生成的是Word!
  4. 由於把整套Latex相關的東西都幹掉了,因此程序的體積直線下降到287M,使用7z格式進行壓縮後軟件的體積爲83.9M,處於比較容易被推廣和接受的體積區間內。
  5. 可以喫上Word系統的紅利了!審批功能搞起來!
  6. 文檔的生成速度從龜速變爲光速,在點下去的幾乎同時就生成好並打開了。
  7. 高校給的格式可以直接對應上了,不再需要做格式轉譯,軟件普及到多個高校變成可以工程實現的問題。
  8. "DocX庫"是個免費且開源的庫!

缺點:

  1. 沒有用過Typora,不知道markdown語法,要用這個軟件還是要去學這個東西,第一個優點同樣是讓另外一部分用戶極爲不適的缺點。
  2. "DocX庫"還不成熟,有些格式只能通過編程技上的奇淫巧術來模仿。雖然生成的Word文檔看起來和要求的無異,然而看到源碼會有一股噁心的感覺,讓有追求的程序員無比糾結,相當不利於維護。
  3. markdown自帶格式及擴展格式大部分是參考Latex設計的,這在方案一是長處,在方案二中則直接把人搞吐!原因是方案二的末端是個Word,格式上跟前端天然有些不兼容。比如用Typora寫的數學公式是Latex格式的,而生成Word要把它轉爲Word的格式,工作量巨大(本人只實現了簡單的公式轉換,複雜的直接放棄了)。這個問題導致這套方案怎麼看都像是中間方案,很彆扭。
  4. "DocX庫"提供的可操作性並不足以覆蓋全部的格式要求。比如有些學校要求目錄的頁碼需要加括號,本人找了半天也沒找到可以實現的方法,因此只能在後期用Word的VBA宏來實現。這也直接導致了用戶要先在Word中弄出一個指定的宏才能正常使用生成程序,違背了用戶傻瓜式操作的初衷。
  5. “DocX庫"用的是微軟的.net架構,使用C#語言編寫。這對一部分程序員來說不是缺點,但對本人是。因爲本人的主語言是C++,因此只能苦逼的去搞C#(不過搞完後發現C#真香!”.net core"很值得關注)。
  6. Latex的美學紅利喫不上了,哎。

完成了整套系統的編寫之後,與方案一一樣,找了兩個小白鼠畢業生做了測試。結果在本人的幫助下(主要是VBA宏那塊),兩位學生興高彩烈的完成了畢業論文的生成。

然而因爲上面總結中的那些缺點,本人感覺這套方案甚至不如方案一。雖然能解決問題,然而它就如同笨重且醜陋的初代鋼鐵俠原型機,急需改進。最終,這套方案的用戶量永遠停在了2,後面的事情交給了第三套方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章