前言
在不少的项目中都会遇到操做Word文件的需求,特别是To B的这种项目。像一些招聘网站最多见的一个功能那就是导出简历啦,能够导出doc,pdf,html等格式。
需求:
• 用户上传Word模板,须要将数据替换到Word模板中,而后输出PDF文件。
• 上传的模板须要在网页中显示,也就是输出的PDF文件是什么样子,网页中也要显示什么样子。
基于上面的需求,最基本的功能仍是得修改Word文件,修改完成以后而后再转PDF, 如何在网页中显示呢?好比说咱们能够生成html格式,嵌入到网页中,生成图片也是能够的。
最多见的操做框架有POI, OpenOffice也挺强大,能够直接经过命令的方式转换格式。上面的需求你用其余的框架确定能实现,可能会比较麻烦,今天给你们推荐一个很是好用的神器XDOC。
我之因此称为神器,缘由是确实很是好用,主要是简单,不须要任何jar包依赖,不须要安装任务软件,直接有云服务支持,而且是免费的。
官网地址:http://www.xdocin.com/
使用
使用有下面几种方式:
• 直接调用接口
• 采用封装好的jar
为了简单咱们直接使用封装好的,要么引入jar,要么复制XDocService.java
XDocService用于在java应用中和操做系统命令行中调用xdoc服务。
程序库 :
http://www.xdocin.com/XDocService.ja
源代码 :
http://www.xdocin.com/XDocService.java
首先咱们先来简单的对一个word文件转pdf操做, 在E:\test目录下建立一个test.docx文件,以下图:
image.png
文件中有文字,字体设置,有图片,接下来开始编写转换代码:html
XDocService service = new XDocService(); try { service.to("E:\\test\\test.docx", new File("E:\\test\\test.pdf")); } catch (IOException e) { e.printStackTrace(); }
只须要2行代码,咱们就能够实现word转pdf的操做,是否是很简单。
image.png
接下来实现一个稍微复杂点的需求,在将word转pdf的时候,动态去修改word中的内容,咱们修改下docx文件,将标题变成动态的,使用${文字}格式编写。
image.png
也就是说这个模板是固定的,可是咱们能够在生成的时候去设置这个标题的文字,看代码:java
XDocService service = new XDocService(); try { Map<String, Object> param = new HashMap<String, Object>(); param.put("标题", "微服务"); service.run("E:\\test\\test.docx", param, new File("E:\\test\\test.pdf")); } catch (IOException e) { e.printStackTrace(); }
涉及到参数的传递咱们用run方法,效果以下:
image.png
最后再讲一个点,将docx中的图片也能动态替换,一样的修改模板,改为占位符就能够了。
image.png
代码须要将图片做为参数传入,有2种方式,一种是传递图片的地址,须要是http://xx.png,可以经过网络访问,还有一种就是本地图片,本地图片须要转成DataURI方式传入。网络
XDocService service = new XDocService(); try { Map<String, Object> param = new HashMap<String, Object>(); param.put("标题", "微服务"); param.put("图片", "http://cxytiandi.com/images/gongzhonghao.jpg"); service.run("E:\\test\\test.docx", param, new File("E:\\test\\test.pdf")); } catch (IOException e) { e.printStackTrace(); }
image.png
就写这么多吧,更多的使用方式,请自行去官网查看文档。总之就是一句话,很好用。框架
尹吉欢
我不差钱啊
喜欢做者ide