一、概述
#PDF转换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平台 | 复杂,完全不推荐使用 |
二、技术选型
由于刚开始没有考虑收费的问题,直接使用了spire,来写了一版,后来发现收费,免费版有段落处理的限制,还有最多三页转换的限制,收费的话,公司对这种收费模式还是比较排斥的,毕竟都是做技术的,能省的省。
技术修改:接着转到了poi的研究上。
poi的处理比spire要多了好几个数量级,我们都使用${key}的形式,表明参数,在使用上,包括了值得查找、书签的使用、值得替换、key分段的情况处理,poi都是需要手动自己去处理的(使用的是3.X的版本,不知道5.X的版本能否省略一些代码)。
最终值得替换问题都解决了,困在word转pdf上了。
Ps:在探索中发现了产品和开源产品,我们百度过,也探索了gitee,最终还是没能直接解决我们的问题。
三、poi使用过程中的问题
- 值得查找问题
- 在开发过程中,我们使用${***}表示我们模板中的变量,代码如下
- 值得替换
- key分段的问题
- word转pdf问题
后续继续分享问题解决方案和word转pdf