Word模板替换,并转PDF格式输出

news/2024/10/19 7:29:13/

Poi-tl参考文档地址:http://deepoove.com/poi-tl/1.8.x/#hack-loop-table

word模板替换,转pdf

    • 1. 依赖引入:
    • 2. word模板配置:
    • 3. 示例demo:
    • 4 . 效果图

1. 依赖引入:

  <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>18.2</version><classifier>jdk16</classifier></dependency><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.8.2</version></dependency><!-- 通过Maven库拿不到,就加下面的配置 -->
<repositories><repository><id>AsposeJavaAPI</id><name>Aspose Java API</name><url>https://repository.aspose.com/repo/</url></repository></repositories><pluginRepositories><pluginRepository><id>AsposeJavaAPI</id><url>https://repository.aspose.com/repo/</url></pluginRepository></pluginRepositories>

2. word模板配置:

        绿色部分是直接渲染的,对应map中的key-value,蓝色部分是绑定collections对象,进行遍历循环集合数据
在这里插入图片描述

3. 示例demo:

public static void main(String[] args) throws Exception {public static void main(String[] args) throws Exception {ByteArrayOutputStream docOutput = new ByteArrayOutputStream();Map<String, Object> map = new HashMap<>(3);map.put("zfkp", "AAAA");map.put("kpjg", "123");map.put("kpr", "李四");List<Map> list = new ArrayList<>();Map<String, Object> map1 = new HashMap<>(3);map1.put("number", 1);map1.put("kprlist", "xxxa");map1.put("fs", 17);Map<String, Object> map2 = new HashMap<>(3);map2.put("number", 2);map2.put("kprlist", "xxxa3aa");map2.put("fs", 10);list.add(map1);list.add(map2);//列表集合数据map.put("collections", list);HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();Configure config = Configure.newBuilder()//绑定集合数据.bind("collections", policy).build();System.out.println(map);//加载配置的word模板XWPFTemplate template = XWPFTemplate.compile("C:\\Users\\DELL\\Desktop\\kpwtlb.docx", config);template.render(map);//写入word,swapStream可输出word文档template.write(docOutput);ByteArrayInputStream swapStream = new ByteArrayInputStream(docOutput.toByteArray());//word转PDFDocument doc = new Document(swapStream);ByteArrayOutputStream pdfOutput = new ByteArrayOutputStream();doc.save(pdfOutput, SaveFormat.PDF);ByteArrayInputStream pdfinput = new ByteArrayInputStream(pdfOutput.toByteArray());FileUtil.inputStreamToFile(pdfinput, "C:\\Users\\DELL\\Desktop\\", "123.pdf");}

4 . 效果图

        转换的pdf有水印,去水印很方便, 加载License(要买)即可 封装一个工具类
https://blog.csdn.net/weixin_42827159/article/details/105031663
在这里插入图片描述


http://www.ppmy.cn/news/622418.html

相关文章

SQLite简单使用

环境 操作系统&#xff1a;CentOS-7-x86_64-Everything-2009.iso 打开/创建指定数据库 sqlite3 mac.dbSQLite数据库内交互执行 # 查看所有数据库名 .databases # 查看所有表名 .tables # 附加数据库&#xff08;附加后可join查询&#xff09; ATTACH DATABASE ./mac.db as …

font-weight与ps字体粗细对应

UltraLight100 ThinExtraLight200 Light300 BookRegularNormal400 Medium500 DemiBoldSemiBold600 Bold700 ExtraBold800 HeavyBlackUltraUltraBlack900 FatExtraBlack1000

ps字体安装快捷安装方法

第一步&#xff1a;设置 打开控制面板&#xff0c;在右边搜索“字体”&#xff0c;即可打开字体文件夹&#xff0c;在左边&#xff0c;可以看到“字体设置” &#xff0c;打开&#xff1a; 勾选&#xff1a;允许使用快捷方式安装字体 第二步&#xff1a;快捷安装字体 打开下载…

ps——投影字体效果

首先到网上找一张高清背景图&#xff0c;最好是风景图&#xff0c;做出来有感觉&#xff0c;哈哈哈然后设置饱和度为-25&#xff0c;曝光度为-5&#xff08;根据自己的图片自己设置参数&#xff09; 创建文字图层&#xff0c;栅格化图层&#xff0c;然后复制文字图层&#xff0…

10款太空科幻游戏PS字体样式

小编为大家带来了一套太空科幻游戏ps字体样式&#xff0c;包含10款不同款式的psd和asl格式的文字样式&#xff0c;您可以将这个Photoshop样式应用于任何字体&#xff0c;形状&#xff0c;插图&#xff0c;徽标&#xff0c;排版&#xff0c;邀请函&#xff0c;名片&#xff0c;墙…

20种银河科幻风格ps字体样式

与大家分享一套银河科幻风格ps字体样式 ——20 galactic sci fi ps styles.该ps样式拥有独特的外观和逼真的银河科幻质感设计&#xff0c;可将其应用于任何自己的字体或设计&#xff0c;只需点击一下即可快速生成&#xff0c;20种银河科幻风格ps字体样式为您的文本产生科幻艺术…

如何用ps扣字体_如何用PS的字体扣出来,改变颜色.PS如何抠图?

回答&#xff1a; Ps通道抠头发丝 Photoshop巧用通道抠出人像头发丝教程&#xff0c;通道抠图是非常快的&#xff0c;不过背景稍微复杂一点的头发抠图就要分步&#xff0c;分段去处理。从素材图可以看出人物头发周围的明暗不一致&#xff0c;需要把稍亮的及稍暗的部分分开用通道…

html修改字体大小到10像素,ps怎么修改字体大小

photoshop中怎么调整字体大小? 先将photoshop这个软件打开。 打开之后,按ctrl+N快捷键, 新建一个画布。 建成了画布之后,点击工具栏里面的字体。 例如输入文字【新知】字体比较小,需要放大,因此点击右边的字符工具栏中的字体大小。 如何将PS中字体单位大小”点”改为”像…