freemarker导出word带图片

freemarker导出word、word转pdf,带附件、图片等比缩放 1、通过freemarker模板,导出word文档,同时可将word转为pdf。2、导出的word带图片,如果图片太大,可通过等比缩放解决图片尺寸变小后变形的问题。3、导出时,将文档里面的图片作为单独的附件一起下载下来;或者是还有其他文件附件需要和文档一起下载。用到的所有资源和源码都放在文章结尾了~ 阅读详情

如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码:

 

<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(很省略很省略)…CC</w:binData>


只要将 base64 的代码替换成例如: ${image} ,如下:

 

 

<w:binData w:name="wordml://03000001.png" xml:space="preserve">${image}</w:binData>

 


这里要注意“>${image}<”这尖括号中间不能加任何其他的诸如空格,tab,换行等符号。

然后用代码生成:

import freemarker.template.Configuration;
 import freemarker.template.Template;
 import sun.misc.BASE64Encoder;
 
 import java.io.*;
 import java.util.HashMap;
 import java.util.Map;
 
 /**
  * @description freemarker导出word带图片
  * @author: YHZ
  * @date 2013-7-9
  */
 public class CreateDocWithImage {
 
     private Configuration configuration = null;
 
     public CreateDocWithImage() {
         configuration = new Configuration();
         configuration.setDefaultEncoding("utf-8");
     }
 
     public void create() throws Exception {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("year", "2011");
         map.put("person", "Zhu You Feng");
         map.put("image", getImageStr());
 
         configuration.setClassForTemplateLoading(this.getClass(), "/docTemplate/");
         Template t = configuration.getTemplate("doc2.ftl");
         File outFile = new File("D:/outFile.doc");
         Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
         t.process(map, out);
     }
 
     private String getImageStr() {
         String imgFile = "d:/test.jpg";
         InputStream in = null;
         byte[] data = null;
         try {
             in = new FileInputStream(imgFile);
             data = new byte[in.available()];
             in.read(data);
             in.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
         BASE64Encoder encoder = new BASE64Encoder();
         return encoder.encode(data);
     }
 
     public static void main(String[] args) throws Exception {
         new CreateDocWithImage().create();
 
     }
 }
java导出带图片的Word文档(freemarker)带图片 1.首先新建一个带图片的doc 2.另存为xml格式(具体看上一篇) 3.把生成的xml文件进行修改 4.修改后缀为ftl,作为模板文件使用,放到指定位置(我放到了电脑的D盘template文件夹中) 5.后台填充数据 Map<String, Object> data = new HashMap<String, Object>(); //声明map... 阅读详情

相关推荐

java通过freemarker导出word文档带图片并且循环

转载请标明出处:https://blog.youkuaiyun.com/weixin_41965979/article/details/80969287 本文出自付付讶的博客 1:所需jar包:freemarker(我用的是freemarker-2.3.18); 首先准备一个word模板(英文部分是要被你的数据所代替的) 2:把这个模板保存为xml格式 3:页面上写好按钮和下拉框选择第几组...

付付讶的专栏 8024

FreeMark对导出Word中图片的处理

转载:https://www.cnblogs.com/Sara-shi/p/5264703.html 当导出的Word中带有图片时,我们可以创建一个带有图片的word模板,并将其保存成xml文档。此时我们能看到这样一段代码: &lt;w:binData w:name="wordml://03000001.png" xml:space="preserve"&gt;iVBORw0KGgo...此...

xiaoyuanzhi123的博客 1393

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 883

Java使用freemarker导出word模板

Java使用freemarker导出word模板 1, 新建一个word文档, 输入如下类容:   2, 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名)  3,图片处理     搜索w:binData 或者 png可以快速定位图片的位置,图片             已经是0-F的字符串了, 如下:  将上述0-F的字符串全部删掉,写上${op

Codelong的专栏 1495

yersinia -G打不开图形化界面解决方案(曲线救国,实操可行)

附Kali 2021 VMware懒人版,已完成汉化,更新源,并已经安装yersinia。ping 114.114.114.114也不通,接着ifconfig发现 IP地址有的,然后手动配置了IP地址,发现还是Ping不通114.11.4.114.114,然后输入。更新源后,报错源无法解析,同时ping www.baidu.com也不通,那可能是DNS存在问题,更新一下DNS服务器。百度找了很久,有个回答比较接近,但一一尝试了几遍,还是无解,解决不了呀!•(2)Yersinia编译的时候,要选择gtk。

weilandeyongheng的专栏 4167

FreeMarker导出word遇到的坑

最近公司项目要求生成word报告,我使用ftl模板导出word,这里不讨论ftl具体使用方法,只是遇到了几个坑,记录一下。 ftl模板制作: 先用word编辑好文档,另存为.xml文件(这里需要注意,存为 2003xml 文件,要不以后生成的word可能会出现office打不开的情况),最后重名为.ftl文件即可。 word模板中包含图片: 只需要将&amp;amp;lt;w:binData&amp;amp;gt;&amp;amp;lt;/w...

hezudao0324的博客 8181

滑模控制实战:用Python从零实现SMC算法(附完整代码)

本文通过Python实战,从零详解滑模控制(SMC)算法的核心原理与代码实现。文章聚焦于一阶系统,使用NumPy和Matplotlib逐步构建控制器,并针对SMC固有的抖振问题,详细讲解了边界层法的原理与实现,提供了完整的代码和参数调优指南,帮助读者直观理解并掌握这一鲁棒性极强的非线性控制方法。

weixin_29285605的博客 465

利用freemaker导出Word总结

1.制作模板 将word文档中需要动态生成数据替换成${key},然后把Word文件另存为xml,然后最好格式化一下,然后另存为ftl文件。 2.修改模板内容 如果模板有一些table、单元格合并、图片显示、计算等需要根据freemaker标签进行修改,基本语法可以百度 3.后台数据值和模板中的key值对应即可,图片需要转为BASE64,然后将模板和数据模型合并成文件输出,还有别忘记设置好编...

etzt123的博客 859

别再写XPath改DOM了!用OpenClaw零代码搞定爬虫全流程(抓取+清洗+存储)

免费版的大模型调用次数有限制(每天100次),但企业版是无限的,还能私有化部署;大模型分析DOM结构有时候会慢1-2秒,但比起节省的时间,完全可以接受;自定义Skill的文档还不够完善,但社区很活跃,有问题在Discord里问,很快就能得到回复。但总的来说,OpenClaw真的改变了我写爬虫的方式——以前我是“代码的奴隶”,现在我是“需求的提出者”,把时间花在更有价值的业务逻辑上,而不是重复繁琐的DOM调试上。如果你也在被传统爬虫折磨,强烈建议你试试OpenClaw,相信我,用了就回不去了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1313

华为od 面试八股文_前端_03_含答案

华为od 面试八股文_前端_03_含答案

MISAYAONE的博客 2128

freeMarker导出word带图片

1.maven导入需要的jar包 <!-- 引入freeMarker的依赖包. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> 2.word模板另存为xml格式 3.写word导出工

ZHANGLIZENG的博客 1129

Spec Kit:GitHub 官方推出的规范驱动开发工具包,让 AI 编程真正可控、高效、高质量

先明确“做什么”和“为什么”,再考虑“如何做”。它通过一系列标准化命令(如/specify/plan/implement可验证的功能规格(spec)可执行的技术方案(plan)可追溯的开发任务(tasks)高质量的实现代码(code)最终实现“规范即代码,代码即规范”的闭环。📌项目地址许可证:MIT(完全开源,欢迎贡献)Spec Kit 代表了 GitHub 对AI 原生开发(AI-Native Development)AI 不应替代开发者,而应放大开发者的意图。

lpfasd123的博客 1710

Freemarker导出带图片word文档(几个注意事项)

网上许多教程,此处不多赘述,给个链接。如果你在别人的肩膀上绊倒了,请往下看。 在处理期间遇到三个问题: 1.文字乱码问题; 2.图片不显示问题; 3.jar包版本问题。 文字乱码由于编码问题,处理方法当然是读文件编码和 *.ftl 模板文件对应。 图片不显示问题如下图: 模板文件另存为 xml 格式时,选择 "Word XML 文档 (*.xml) ",如果选择别...

qq_22794723的博客 954

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java用freemarker导出word文档带表格插入图片

有时候我们还需要合并单元格,找到需要合并的地方进行循环, 和是一对标签,是不合并但显示值, 是合并。今天做一个导出word的功能,包含文档,表格,表格中插入图片,进过几番熬战,勉强写出了一份。新建word文档,将自己需要的内容都写进去,将word文档保存为xml格式。我们还有图片,需要对图片进行循环,按照下图方式配置好,保存。也建一个测试类测试一下。

^无心人^_-的博客 3244

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

freemarker基于docx格式创建模板导出带图片word文件

目录 一、实现思路: 二、基于docx格式文件创建模板: (1)替换数据占位符: (2)将替换数据占位符文件强制修改zip格式: (3)获取文本数据文件document.xml: (4)获取图片依赖文件document.xml.rels: (5)占位符修改为freemarker值替换符: (6)添加if-else for循环等逻辑: (7)完成freemarker模板创建: 三...

LSY_优快云_的博客 2348

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java使用freemarker导出带图片的word文档

1.用Microsoft Office Word打开word原件; 2.把需要动态修改的内容替换成${XX}的形式,如果有图片,尽量选择较小的图片几十K左右的小图片,并调整好位置,占位(小图片转换的base64数据少,便于修改);如下图 3.另存为,选择保存类型Word 2003 XML 文档(*.xml)【这里说一下为什么用Microsoft Office Word打开且...

恋上、小幸福的博客 1029

使用springboot和freemarker导出word带图片

1.首先,要有一个模板word文件(.doc) 里面的样式要先调整好,需要放图片的地方加一个图片 占位 文字内容也要加一些内容占位 2.然后把word转成.ftl格式文件 很贱单 先把word文件另存为.xml(word2003xml) 再把文件后缀由xml改为ftl 3.把ftl中之前弄得占位符搞成变量名 比如说 姓名:周某人 改为 姓名:${name} 4.contr...

1万+

FreeMarker导出Word(带图片、解决图片变形问题)

想说明: 本文内容的核心:使用FreeMarker的模板引擎技术,导出word。 总体步骤: 第一步:创建一个word模板,里面的对应位置使用FreeMarker的占位符表示。 注:为了导出的word兼容2003版本,我们创建的word模板,最好是doc后缀的。 第二步:将该word,另存为xml文件。 提示:也可以第二步时先用一个特别的字符占位,然后在第三...

大啵鱼 4533

freemarker导出带图片的word文档

最近做一个关于文档导出功能, 顺便学习了下freemarker,做了个关于导出带图片的word文档,模板并没有写全,只是验证代码的正确性 这只是做一个小功能,故只做了后台代码关于导出的代码,并未与前台关联,可酌情处理 首先将需要导出的word文档做处理,关于word文档最好是后缀为.doc,应为有些软件可能无法打开导出的文档,将需要修改的数据修改成${xxx} 类型的内容,例如下面的文档 ...

weixin_30328063的博客 258

Java 用Freemarker完美导出word文档(带图片)

第一步:制作word模板 第二步:格式转换,将word另存为xml 第三步:找到图片base64,删除base64替换成占位符${image},只修改图片的,其余的不用动 第四步:加入依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> ...

weixin_42672802的博客 6061

java freemarker word_Java 用Freemarker完美导出word文档(带图片)(示例代码)

Java 用Freemarker完美导出word文档(带图片)前言最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题。准备材料1.word原件 2.编辑器(推荐Firstobject free XML editor)实现步骤1.用Microsoft Office Word打开word原件;2.把需要动态修改的内容替换成**...

weixin_35662019的博客 458
上一篇: 关于Spring3报org.aopalliance.intercept.MethodInterceptor错的问题解决方法
下一篇: freemarker基本语法
7star_java
博客等级 码龄15年 80粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值