毕业论文编辑器软件制作经历与思考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,后面的事情交给了第三套方案。

你可能感兴趣的:(编程人生,毕业论文编辑器,文档自动化)