freemarker导出带图片的word文档

阅读: 评论:0

freemarker导出带图片的word文档

freemarker导出带图片的word文档

最近做一个关于文档导出功能, 顺便学习了下freemarker,做了个关于导出带图片的word文档,模板并没有写全,只是验证代码的正确性

这只是做一个小功能,故只做了后台代码关于导出的代码,并未与前台关联,可酌情处理

首先将需要导出的word文档做处理,关于word文档最好是后缀为.doc,应为有些软件可能无法打开导出的文档,将需要修改的数据修改成${xxx}

类型的内容,例如下面的文档

修改后则变为如下类型: 

后将文档另存为.xml文档,将需要修改的然后再打开xml文档,找到图片的位置,是一大段base64编码后的

代码,形如<w:binData w:name="wordml://自定义.png" xml:space="preserve"&FFFFA</w:binData>

将中间编码后的代码修改为${xxx}的类型,关于xxx的内容可以根据自己的需求修改,而后将文件关闭。将其后

缀转为 .ftl 的格式。而后上后台代码:

 1 final static String separator = File.separator; // 系统路径分割符 
 2     
 3     public void exportSellPlan(HttpServletRequest request, HttpServletResponse response){
 4         String evaluation = "四年的大学生涯是我人生的一大转折点。"
 5                 + "我深深地懂得“责任,荣誉,国家”这六个字的含义。作为大学生我最基本的责任是学习。"
 6                 + "在大学期间我认真学习,发挥自己的特长,挖掘自身的潜力,从而提高了"
 7                 + "自身的学习能力和分析处理问题的能力,也获得了大家的认同。";
 8         //获得数据  
 9         Map<String, Object> map = new HashMap<String, Object>(); 
10         map.put("profession", "xxx");
11         map.put("name", "xxx");
12         map.put("address","山西省xx县"); 
13         map.put("email", "xxx@163");
14         map.put("tel", "173xxx9927");
15         map.put("skill1", "面对不同客人,用不同的语气、不同的态度,与客户要谈得来,处处为客户着想");
16         map.put("skill2", "面对不同客人,用不同的语气、不同的态度,与客户要谈得来,处处为客户着想");
17         map.put("skill3", "面对不同客人,用不同的语气、不同的态度,与客户要谈得来,处处为客户着想");
18         map.put("skill4", "面对不同客人,用不同的语气、不同的态度,与客户要谈得来,处处为客户着想");
19         map.put("hobby", "运动,看书,上网聊天,看电影。");
20         map.put("evaluation", evaluation);
21         map.put("graduateInstitutions", "南昌航空大学");
22         map.put("degree", "本科");
23         //map.put("image", getImageBase("E:"+ separator +"photo.jpg"));
24         try {
25             portMillCertificateWord(request,response,map,"简历","jianli.ftl");
26         } catch (IOException e) {
27             e.printStackTrace();
28         }    
29     }
30     
31   //获得图片的base64码
32     public static String getImageBase(String src) {
33         if(src==null||src==""){
34             return "";
35         }
36         File file = new File(src);
37         //File file = new File(getRequest().getRealPath("/")&#place(getRequest().getContextPath(), ""));
38         if(!ists()) {
39             return "";
40         }
41         InputStream in = null;
42         byte[] data = null;  
43         try {
44             in = new FileInputStream(file);
45         } catch (FileNotFoundException e1) {
46             e1.printStackTrace();
47         }
48         try {  
49             data = new byte[in.available()];  
50             in.read(data);  
51             in.close();  
52         } catch (IOException e) {  
53           e.printStackTrace();  
54         } 
55         BASE64Encoder encoder = new BASE64Encoder();
56         de(data);
57     }

关于excel导出:

 1 package com.web.struts;
 2 
 3 import java.io.BufferedWriter;
 4 import java.io.File;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 import java.io.OutputStreamWriter;
 9 import java.io.PrintWriter;
10 import java.io.UnsupportedEncodingException;
11 import java.io.Writer;
12 SimpleDateFormat;
13 import java.util.Date;
14 import java.util.Map;
15 
16 import javax.servlet.http.HttpServletRequest;
17 import javax.servlet.http.HttpServletResponse;
18 import javax.swing.filechooser.FileSystemView;
19 
20 plate.Configuration;
21 plate.Template;
22 plate.TemplateException;
23 
24 public class WordUtils extends BaseAction{
25      //配置信息,代码本身写的还是很可读的,就不过多注解了  
26     private static Configuration configuration = null;  
27     //这里注意的是利用WordUtils的类加载器动态获得模板文件的位置  
28    // private static final String templateFolder = ClassLoader().getResource("../../").getPath() + "WEB-INF/templetes/";  
29     private static final String templateFolder = "D:/uepstudio_uep/workspace/iecp/src/com/haiyisoft/iecp/crm/web/struts";  
30     static {  
31         configuration = new Configuration();  
32         configuration.setDefaultEncoding("utf-8");  
33         try {  
34             configuration.setDirectoryForTemplateLoading(new File(templateFolder));  
35         } catch (IOException e) {  
36             e.printStackTrace();  
37         }  
38    }  
39   
40     private WordUtils() {  
41         throw new AssertionError();  
42     }  
43   
44     @SuppressWarnings("rawtypes")
45     public static void exportMillCertificateWord(HttpServletRequest request, HttpServletResponse response, Map map,String title,String ftlFile) throws IOException {  
46         //Template freemarkerTemplate = Template(ftlFile);  
47         Template t = null;
48         try {
49             // temp.ftl为要装载的模板
50             t = Template(ftlFile);
51         } catch (IOException e) {
52             e.printStackTrace();
53         }
54         // 获取桌面路径
55         File desktopDir = FileSystemView().getHomeDirectory();
56         String desktopPath = AbsolutePath();
57         desktopPath = place("\", "/");
58         // 输出文档路径及名称
59         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
60         File outFile = new File(desktopPath + "/" + sdf.format(new Date()) + title);
61         Writer out = null;
62         FileOutputStream fos = null;
63         try {
64             fos = new FileOutputStream(outFile);
65             OutputStreamWriter oWriter = new OutputStreamWriter(fos, "UTF-8");
66             out = new BufferedWriter(oWriter);
67         } catch (FileNotFoundException e1) {
68             e1.printStackTrace();
69         } catch (UnsupportedEncodingException e) {
70             e.printStackTrace();
71         }
72         try {
73             t.process(map, out);
74             out.close();
75             fos.close();
76         } catch (TemplateException e) {
77             e.printStackTrace();
78         } catch (IOException e) {
79             e.printStackTrace();
80         }
81         response.setContentType("text/html;charset=UTF-8");
82         response.setCharacterEncoding("UTF-8");
83         PrintWriter outW = Writer();
84         outW.write("导出成功!</br>" + Path());
85         outW.close();
86     }  
87 }

 

导出后的文件为20180322135608简历.doc桌面文件:

 

转载于:.html

本文发布于:2024-02-01 18:29:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170678334438605.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文档   图片   freemarker   word
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23