天天看点

记录最近poi实现word模板编辑的经过(一)

一、概述

#PDF转换word#

记录最近poi实现word模板编辑的经过(一)

记录最近今天实现word模板编辑和pdf转换的经过

最近在帮助同事整理word模板的编辑和通过word生成pdf。在这个过程中遇到了很多的问题,也从网上查询了很多解决方案,但是不得不说,很多网上的解决方案,很多都是值得考量的。

目前替换模板,生成word的方法,实验成功的一共有大致三种spire,poi,Aspose.Words for Java.相比而言,spire和Aspose.Words for Java都是专业的,缺点就是做成了产品,是收费的,免费版本都有限制。spire收费版本貌似5000左右,Aspose没有登录,没有看到收费的价格,如果有知道的小伙伴,方便留言评论下。

刚才又发现了一个比较好的线索Poi-tl

方案 移植性 功能性 易用性
Poi-tl Java跨平台 Word模板引擎,基于Apache POI,提供更友好的API 低代码,准备文档模板和数据即可
Apache POI Apache项目,封装了常见的文档操作,也可以操作底层XML结构 文档不全,这里有一个教程:
Freemarker XML跨平台 仅支持文本,很大的局限性 不推荐,XML结构的代码几乎无法维护
OpenOffice 部署OpenOffice,移植性较差 - 需要了解OpenOffice的API
HTML浏览器导出 依赖浏览器的实现,移植性较差 HTML不能很好的兼容Word的格式,样式糟糕
Jacob、winlib Windows平台 复杂,完全不推荐使用
记录最近poi实现word模板编辑的经过(一)

二、技术选型

由于刚开始没有考虑收费的问题,直接使用了spire,来写了一版,后来发现收费,免费版有段落处理的限制,还有最多三页转换的限制,收费的话,公司对这种收费模式还是比较排斥的,毕竟都是做技术的,能省的省。

技术修改:接着转到了poi的研究上。

poi的处理比spire要多了好几个数量级,我们都使用${key}的形式,表明参数,在使用上,包括了值得查找、书签的使用、值得替换、key分段的情况处理,poi都是需要手动自己去处理的(使用的是3.X的版本,不知道5.X的版本能否省略一些代码)。

最终值得替换问题都解决了,困在word转pdf上了。

Ps:在探索中发现了产品和开源产品,我们百度过,也探索了gitee,最终还是没能直接解决我们的问题。

记录最近poi实现word模板编辑的经过(一)

三、poi使用过程中的问题

  1. 值得查找问题
  2. 在开发过程中,我们使用${***}表示我们模板中的变量,代码如下
  3. 值得替换
  4. key分段的问题
  5. word转pdf问题

后续继续分享问题解决方案和word转pdf