poi-tl——Word模板引擎应用
poi-tl(poi template language)是基于Apache POI的Word模板引擎。纯Java组件,跨平台,代码短小精悍,通过插件机制使其具有高度扩展性。支持DOCX格式的Word模板。
关于poi-tl的入门介绍在官网比较清晰,http://deepoove.com/poi-tl/
下面介绍poi-tl一些其他的需求处理
1,在Word中生成的图片固定原图片比例,防止图片变形
图片模板{{@var}},PictureRenderData
数据模型。
下面使用到生成图片方法的是官方的 // 本地图片byte数据,http://deepoove.com/poi-tl/#_图片模板var
// 本地图片byte数据
byte[] localByteArray = BytePictureUtils.getLocalByteArray(new File("./logo.png"));
put("localBytePicture", new PictureRenderData(100, 120, ".png", localByteArray));
按原图片比例生成图片,用到ImageIO工具类,https://blog.csdn.net/weixin_41888813/article/details/85043969
File picture = new File(myPath);
byte[] TestPic = BytePictureUtils.getLocalByteArray(picture);
// 获取图片比例
BufferedImage sourceImg = ImageIO.read(new FileInputStream(picture));
params.put("myImg", new PictureRenderData(600, ((sourceImg.getHeight()*600)/sourceImg.getWidth()), ".png", TestPic));
}
2,同一行左右各分布一张图片
文档模板{{+var}},DocxRenderData
数据模型,可以是另一个docx文档的合并,或者是数据集合针对同一个模板的多个渲染结果的合并。也就是子模板可用于在主模板中循环,但每一次循环的子模板会自动换行,要实现左右分布,需要改动子模板。
子模板(zi.docx),这里是一个隐藏了边框的一行两列的表格
主模板中{{+zi}}即可嵌入子模板
SegmentData实体类
@Data
public class SegmentData {private String imgName;private PictureRenderData img;private String imgName1;private PictureRenderData img1;
}
核心代码
注:
- 本地测试没问题,打包后应该会有问题,会出现文件找不到,因为classPathResource.getFile()方法会出问题
- 可以尝试使用临时文件,用于参数传入到DocxRenderData数据模型
SegmentData s = new SegmentData();for(int i=1; i<=附件图片的List.size(); i++){File picture = new File(文件的本地保存路径);byte[] localByteArray = BytePictureUtils.getLocalByteArray(picture);// 获取图片比例BufferedImage sourceImg =ImageIO.read(new FileInputStream(picture));PictureRenderData prd = new PictureRenderData(250, (sourceImg.getHeight()*250)/sourceImg.getWidth(), ".png", localByteArray);if(i%2 != 0){s.setImgName(附件图片的List.get(i-1).getFilename());s.setMicroscopeImg(prd);} else{s.setImgName1(附件图片的List.get(i-1).getFilename());s.setMicroscopeImg1(prd);}if(i%2 == 0){segments.add(s);s = new SegmentData();}else if(i == 附件图片的List.size() && 附件图片的List.size()%2 != 0){segments.add(s);}}ClassPathResource classPathResource = new ClassPathResource("./template/word/zi.docx");DocxRenderData segment = new DocxRenderData(classPathResource.getFile(), segments);params.put("zi", segment);
poi-tl——Word模板引擎应用相关推荐
- Word模板引擎poi-tl
文章目录 ◆ 方案对比 ◆ 版本 ◆ 特性 ◆ 模板 ◆ 数据 ◆ 输出 ◆ 数据模型 ◆ 标签 1. 文本 2. 图片 3. 表格 4. 列表 5. 嵌套 6. 区块对 ◆ SpingEL 2. 单 ...
- Java Word模板引擎-Poi-tl
本文内容从Poi-tl官方文档摘录,poi-tl是一个基于Java POI的Word模板引擎,有着非常强大的功能 此处只摘录了一些我现在需要用到的功能 文章目录 一.简单示例 1.准备一个模板文档 ` ...
- Word 模板引擎 poi-tl
poi-tl基于Microsoft Word模板和数据生成新的Word文档,可能是Java中最好的Word模板引擎 全方位支持Word批注功能 图片支持SVG.Base64,支持自动识别各种图片类型 ...
- 排名第一的word模板引擎,到底有多神仙
hello大家好,今天我要给大家推荐一个非常棒的Word专用的模板引擎,Poi-tl(Poi-template-language).这款引擎基于Apache Poi,可以根据用户输入的内容直接生成相应 ...
- apache poi使用例_使用java Apache poi 根据word模板生成word报表例子
[实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...
- java word apache poi 操作word模板。
apache poi 操作word模板. 操作方式: 1.对于固定格,可以遍历格子然后替换其中指定的值例如在要替换的cell写入${example} 这样格式,遍历到之后替换. 2.对于需要增长的表格 ...
- 利用poi读取word模板文件生成新的word文档
利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...
- 使用java Apache poi 根据word模板生成word报表
使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...
- java word模板poi生成文件_利用poi读取word模板文件生成新的word文档
利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...
最新文章
- Spring Cloud Alibaba - 08 Ribbon 两种方式实现细粒度自定义配置控制微服务的负载均衡策略
- vbsedit无法创建空文档_创建恢复驱动器(U盘)
- Swift翻译之-Swift语法入门 Swift语法介绍
- 检查坏道右键单击盘符/属性/工具中的查错。
- 设置密码命名是什么linux,orapwd 工具建立密码文件遵守的命名方法
- 链家大数据多维分析引擎实践
- 独立站现在好不好做?个人适合做跨境电商独立站吗?
- HDU 1024 Max Sum Plus Plus
- SQLServer 与 MySQL
- 会计初级可以自己报名吗_2019初级会计职称考试报名流程全攻略
- 谢尔顿在玩科南时代,哈哈
- 第一百二十一天 : varnish
- 传奇怎么设置不显示服务器,如何将传奇服务器未知神殿地图修改为不限制进出...
- 音符起始点检测(音频节奏检测)(6)
- 分区起始位置参数溢出_机械硬盘在4k对齐时勾选了一个主分区,没想到居然提示起始位置参数溢出~后来我不想要这个主分区了重新...
- 阿里云国际站和阿里云国内站有什么区别?
- NameError: name 'mnist' is not defined
- Python:条件判断和逻辑表达式
- ffmpegguitool下载不了_FFmpeg GUI Tool
- thymeleaf和Jsp或者HTML有什么区别
热门文章
- 从程序员到项目经理(三):认识项目经理
- 2021年中国尼龙66(聚己二酰己二胺)行业现状分析:产能逐年增长,需求量增高[图]
- python扩展库xlwt支持对excel_Python扩展库xlwt支持对Excel2003或更低版本的Excel文件进行写操作。...
- Mercurial command in bitbucket
- Swift 与 Objective-C:您应该为下一个 iOS 移动应用选择哪个?
- 大数据第一阶段学习笔记
- 深度学习项目实战——手写数字识别项目
- 如何选一款适合企业的进销存软件?这款软件推荐给你
- Linux查看内存型号,插槽使用情况,内存频率,内存制造商等信息
- 南京邮电大学网络攻防训练平台-密码学-异性相吸