最近做项目 要求生成word文件及PDF文件,生成word文件时其中内容要根据不同公司提供的内容动态替换里面的值。参考了很多之后选择用word模板生成word文件。
其中主要参考:https://www.cnblogs.com/suzan/p/10577738.html
简单的word模板:https://files.cnblogs.com/files/blogs/809524/title.zip?t=1709017146&download=true
生产wode文档用的是freemarker方式
1.要先有一个word文档,如上需要动态替换的内容用英文替换(其中汉字最好用宋体,因为word转pdf的时候会乱码,但是我用的方式微软雅黑也可以转pdf,其中图片也是可以替换的)
2.有了word文档后(要用.docx文件不要用.doc 文件),将后缀直接改为.zip,改后解压看到如下形式文档。
3.将word下document.xml修改,主要就是替换英文为带括号形式,图片如果没有64位编码就看下word/media 图片就明白了,这个文件夹下就是模板中所有图片,如果我们后续需要替换其中某张图片再java中获取到文件流然后直接替换即可。
4.改完document.xml后复制一份到本地(document本地.xml),然后到步骤2文件夹下重新压缩为zip文件--此时我们有一个改了document文件的zip文件及一份新的document文件。
5.有了两个模板文件就是java实现,主要思想是用freemarker把document本地.xml 当成模板,然后将后台数据渲染到这个xml中,然后替换zip中的document.xml.替换图片也是同理。
6.这时下载出来的word文档就是替换文字及图片后的word.docx文件。
因为这里生成了word文件而word和PDF内容格式肯定要求是一样的,所以第一反应就是将word转为PDF,以下就是word转pdf的过程。
1.word转pdf要求是不失真,免费
2.网上推荐的方式有 itexpdf(失真很厉害用不成);
poi包方式(各种包的报错,Poi引用的一些类包里没有,将其他包引入后这些包又有引用类没有,解决不完,用不成);
docx4j(比上面两种好一些,但是也失真厉害达不到生产使用的标准,生成pdf的时间也长)
aspose-words(pj 版包,效果不错)
3. aspose-words方式需要lincense.xml要不有水印,图片文字都不失真,推荐。
4.整体思想是用前一步骤生成word文件然后转pdf,然后删除word文件。
有需要代码的私聊吧。
标签:xml,文件,word,java,pdf,document,替换 From: https://www.cnblogs.com/haoming-1/p/18036850