aspose word模板文件生成pdf
# aspose word模板文件生成pdf
package com.example.core.mydemo; import com.alibaba.fastjson.JSON;
import com.aspose.words.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.io.InputStream;
import java.util.Map;
import java.util.Objects;
import java.util.regex.Pattern; public class WordUtil { public static final String PARAM_MATCH = "\\{[a-zA-Z]+\\}"; private static final Logger logger = LoggerFactory.getLogger(WordUtil.class); public static void replaceText(Map<String,String> paramMap,Document doc) throws Exception { FindReplaceOptions opt = new FindReplaceOptions();
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
String key = String.format("{%s}", entry.getKey());
String value = Objects.isNull(entry.getValue()) ? "" : entry.getValue();
doc.getRange().replace(key,value,opt);
} int replace = doc.getRange().replace(Pattern.compile(PARAM_MATCH), "", opt);
if(replace>0){
logger.error("未知参数:{}",JSON.toJSONString(paramMap));
} } public static void replaceBookMark(String bookmarkName,String newBookValue,Document doc) throws Exception { BookmarkCollection bookmarks = doc.getRange().getBookmarks();
for (Bookmark bookmark : bookmarks) {
if(Objects.equals(bookmark.getName(),bookmarkName)){
bookmark.setText(newBookValue);
return;
}
}
} public static void replaceBookMarkImage(String bookmarkName, InputStream inputStream, Document doc) throws Exception { DocumentBuilder db=new DocumentBuilder(doc);
db.moveToBookmark(bookmarkName);
db.insertImage(inputStream,119.4,64);
}
} package com.example.core.mydemo; import com.aspose.words.Document;
import com.aspose.words.SaveFormat; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map; public class PDFTest {
public static final String PDF = ".pdf"; public static void main(String[] args) {
try{
String templatePath = "E:\\contract2.docx";
Document document=new Document(new FileInputStream(templatePath));
Map paramsMap = new HashMap();
paramsMap.put("realname","刘德华");
paramsMap.put("addr","香港");
WordUtil.replaceText(paramsMap,document); String name="aaabbb";
File tempFile = File.createTempFile(name, PDF); System.out.println("文件=" + tempFile.getName());
document.save(new FileOutputStream(tempFile), SaveFormat.PDF);
System.out.println("finish" + tempFile.getAbsolutePath() + "-" + tempFile.getCanonicalPath()); }catch (Exception e){
e.printStackTrace();
}
}
}
contract2.docx 模板文件
通知
明星 {realname} 在{addr}举行演唱会,大家来捧场啊!!
导入jar包
aspose-words-19.5jdk.jar
aspose-cells-8.5.2.jar
生成的pdf文件样式
通知
明星 刘德华 在香港举行演唱会,大家来捧场啊!!
aspose word模板文件生成pdf的更多相关文章
- 使用NPOI按照word模板文件生成新的word文件
/// <summary> /// 按照word模板文件 生成新word文件 /// </summary> /// <param name="tempFile& ...
- 在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!
这几天找WEB打印控件,要么收费的,要么免费的只能在IE里用! 我只想简单的打个标签纸!百度2天,看到一老兄说可以用PDF,然后又开始百度..找到了一篇文章 http://www.jianshu.co ...
- java代码操作word模板并生成PDF
这个博客自己现在没时间写,等后面有时间了,自己再写. 这中需求是在实际的项目开发中是会经常遇到的. 下面我们先从简单入手一步一步开始. 1.首先,使用word创建一个6行两列的表格. 点击插入-6行2 ...
- Aspose Word模板使用总结
Aspose Word模板使用总结 1.创建word模版,使用MergeFeild绑定数据 新建一个Word文档,命名为Template.doc 注意:这里并不是输入"< ...
- Csharp 简单操作Word模板文件
原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档 Doc1.dot 内容为: To: <Name> Sub:<Subject> Website i ...
- SpringBoot 集成 FreeMarker 导出 Word 模板文件(底部附源码)
思路解说 word 模板文件(doc 或 docx 文件)另存为 xml 文件 将后缀 xml 改成 html:大部分文档会改成 ftl(FreeMarker 的后缀名),因为 word 文件另存为 ...
- python基于word模板批量生成word文件
1.需要用到docxtpl库,用于操作word模板 安装:pip insatll docxtpl 处理之前的word模板 处理后的word 下面直接上代码揭开它的神秘面纱:第一步,读取excel中的内 ...
- java根据模板文件导出pdf
原文:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支持模 ...
- 依据word模板批量生成试卷
java-word-MassProduction 目录 使用方法 开发流程 一.使用方法 1.制造题库所需Word模板 需要填充数据的地方使用 ${pid} 代替. 将这个word选择另存为,保存格式 ...
- 通过Aspose.Word和ZXING生成复杂的WORD表格
1.前言 这是我之前做的一个项目中要求的功能模块,它的需求是生成一个WORD文档,需要每页一个表格并且表格中需要插入文字.条形码和二维码等信息,页数可控制.具体的效果如下图所示: 可以看到有以下几点是 ...
随机推荐
- 2021云栖大会开源引力峰会重磅发布的战略合作,Grafana服务到底是什么?
简介: 这几天关注云栖大会的小伙伴一定会发现阿里巴巴合伙人.阿里云高级研究员蒋江伟(小邪)在云栖大会开源引力峰会的演讲中,特别提到了一个叫 Grafana 服务的产品,并特意花费一页 PPT 介绍了这 ...
- 8.prometheus监控--监控Mysql8.0
一.环境搭建 docker-compose安装mysql mkdir /data/mysql -p cd /data/mysql cat > docker-compose.yaml <&l ...
- jumpserver-v3搭建配置与使用
一.jumpserver简介 官网:https://www.jumpserver.org/ 文档:https://docs.jumpserver.org/zh/v3/ 单机部署:https://doc ...
- 局域网内一部分网络设备无法ping通,icmp_seq=1 目标主机不可达
问题: 来自 192.168.2.99 icmp_seq=1 目标主机不可达. 最近想在局域网内搭建一台服务器,打开SSH服务后发现局域网内的一部分设备无法使用,尝试了各种办法都没能解决,重装系统 ...
- 自制一个发送验证码的10秒倒计时js效果
<template> <div class="conten1"> <input class="code" ...
- VSCode+VUE+ESLint以达到保存自动格式化
首先打开VSCode在.eslintrc.js中加入以下代码(不知道怎么找可以ctrl+shift+p进行搜索),添加 vscode 终端启动服务 // 添加⾃定义规则 'prettier/prett ...
- 轻量级.net standard微信支付登录Nuget开源库
我个人编写的库,在我个人网站,小程序等很多地方都在使用中,大家可以搜索小程序 什邡市宅猫君网络工作室 或者到我的网站 store.zhaimaojun.cn 去体验支付和登录效果. 本库主要实现了na ...
- (更新中)Python、JavaScript、Java和C++语言的语法对比与梳理
目录 引言 1. 构造函数 Python JavaScript Java C++ 2. 构造类 Python JavaScript Java C++ 3. 总结 引言 在开发过程中不免需要用到多种编程 ...
- 【项目学习】Timeswap:第一个完全去中心化的基于 AMM 的货币市场协议
总览 Timeswap 是世界上第一个完全去中心化的基于 AMM 的货币市场协议,无需预言机或清算人即可工作. Timeswap 采用 3 变量来维持 AMM 的运作.它通过允许用户决定他们的风险状况 ...
- 解析 ABP vNext 依赖注入实现【属性注入】的原理
前言 这几天闲来没事看看ABP vNext的文档和源码,关于关于依赖注入(属性注入)这块儿产生了兴趣. 我们都知道.Volo.ABP 依赖注入容器使用了第三方组件Autofac实现的.有三种注入方式, ...