00003-aspose for java 生成水印刻章等,可转为word,pic,pdf
对应java代码:
package com.yoooya.ytp.utils.doc;
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.yoooya.ytp.utils.DateUtils;
import com.yoooya.ytp.utils.IdUtils;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import sun.misc.BASE64Encoder;
import java.io.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* cjianquan 2020/1/3
*/
public class ExportWord {
private Configuration configuration = null;
private static int i = 9;
public ExportWord() {
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}
public File createWordToPic(Map<String, Object> dataMap){
try{
String path = ExportWord.class.getResource("/").getPath()+"aspose/";
File pathFile=new File(path);
if(!pathFile.exists()){
pathFile.mkdirs();
}
return createWord(dataMap,path,"wcsyzm.ftl");
}catch (Exception e){
e.printStackTrace();
}
return null;
}
public File createWord(Map<String, Object> dataMap, String filePath, String tmpName) {
try{
configuration.setDirectoryForTemplateLoading(new File(filePath));
Template t = null;
try {
t = configuration.getTemplate(tmpName); // 文件名
} catch (IOException e) {
e.printStackTrace();
}
String fileName = String.valueOf(IdUtils.id()) + ".doc";
String pngFileName = String.valueOf(IdUtils.id()) + ".png";
File outFile = new File(filePath+"temp", fileName);
File outPngFile = new File(filePath+"temp", pngFileName);
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"));
} catch (Exception e1) {
e1.printStackTrace();
}
try {
t.process(dataMap, out);
out.close();
getLicense(filePath);
FileOutputStream os = new FileOutputStream(outPngFile);
FileInputStream iStream = new FileInputStream(outFile);
Document doc = new Document(iStream);
// doc.save(os, com.aspose.words.SaveFormat.PDF);
doc.save(os, SaveFormat.PNG);
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return outPngFile;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
/** 获取注册文件
*/
public static void getLicense(String filePath) {
String path = filePath + "/license.xml";
InputStream is;
try {
is = new FileInputStream(new File(path));
License license = new License();
license.setLicense(is);
} catch (FileNotFoundException e) {
// logger.error("license.xml file not found");
} catch (Exception e) {
// logger.error("license register failed");
}
}
public static void doc2pdf(String wordPath, String pdfPath) {
try {
long old = System.currentTimeMillis();
File file = new File(pdfPath); // 新建一个pdf文档
FileOutputStream os = new FileOutputStream(file);
Document doc = new Document(wordPath); // Address是将要被转化的word文档
doc.save(os, com.aspose.words.SaveFormat.PDF);
long now = System.currentTimeMillis();
os.close();
System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒"); // 转化用时
} catch (Exception e) {
e.printStackTrace();
}
}
public static String GetImageStr(String imgFilePath) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
String basePath = ExportWord.class.getResource("/").toString();
basePath = basePath.replaceAll("file:/","");
byte[] data = null;
// 读取图片字节数组
try {
InputStream in = new FileInputStream(basePath+"aspose/"+imgFilePath);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64编码过的字节数组字符串
}
private void getData(Map<String, Object> dataMap) {
dataMap.put("company", "原力肽");
dataMap.put("address", "某某地址");
dataMap.put("csmj", "100");
dataMap.put("userCompany", "陈建泉个体户");
dataMap.put("dateStart", "2019年12月1日");
dataMap.put("dateEnd", "2020年12月1日");
dataMap.put("nowDate", "2020年1月3日");
dataMap.put("imageData", GetImageStr("seal.png"));
// dataMap.put("address", "福建省泉州市鲤城区");
// dataMap.put("phone", "13459260612");
}
public static void main(String[] args) throws Exception {
/*ExportWord test = new ExportWord();
String basePath = ExportWord.class.getResource("/").toString();
basePath = basePath.replaceAll("file:/","");
System.out.println("basePath="+basePath);
Map<String, Object> dataMap = new HashMap<String, Object>();
test.getData(dataMap);
test.createWord(dataMap, basePath+"aspose/","wcsyzm.ftl");*/
ExportWord exportWord = new ExportWord();
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("company", "company11");
dataMap.put("managerName","managerName22");
dataMap.put("address", "address33");
dataMap.put("csmj", "csmj44");
dataMap.put("userCompany", "userCompany55");
dataMap.put("dateStart", "yyyy年MM月dd日 666");
dataMap.put("dateEnd", "yyyy年MM月dd日777");
dataMap.put("nowDate", DateUtils.format(new Date(),"yyyy年MM月dd日"));
dataMap.put("imageData", exportWord.GetImageStr("seal.png"));
File picFile = exportWord.createWordToPic(dataMap);
System.out.println("picFile="+picFile.getAbsolutePath());
}
}
其中 license.xml 是aspose for java 的license文件。
wcsyzm.ftl 文件,是有doc文件另存为ftl得到了。
dataMap的key值,对应的是ftl的参数,类似:${company}
原始word的内容如图:

seal.png 是一个要加的水印 或者刻章图片。。
00003-aspose for java 生成水印刻章等,可转为word,pic,pdf的更多相关文章
- Java 将PDF 转为Word、图片、SVG、XPS、Html、PDF/A
本文将介绍通过Java编程来实现PDF文档转换的方法.包括: 1. PDF转为Word 2. PDF转为图片 3. PDF转为Html 4. PDF转为SVG 4.1 将PDF每一页转为单个的SVG ...
- Java生成验证码原理(jsp)
验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...
- java实现word转pdf在线预览(前端使用PDF.js;后端使用openoffice、aspose)
背景 之前一直是用户点击下载word文件到本地,然后使用office或者wps打开.需求优化,要实现可以直接在线预览,无需下载到本地然后再打开. 随后开始上网找资料,网上资料一大堆,方案也各有不同,大 ...
- 面试题-关于Java线程池一篇文章就够了
在Java面试中,线程池相关知识,虽不能说是必问提,但出现的频次也是非常高的.同时又鉴于公众号"程序新视界"的读者后台留言让写一篇关于Java线程池的文章,于是就有本篇内容,本篇将 ...
- Thinking in Java学习杂记(5-6章)
Java中可以通过访问控制符来控制访问权限.其中包含的类别有:public, "有好的"(无关键字), protected 以及 private.在C++中,访问指示符控制着它后面 ...
- Aspose.Words简单生成word文档
Aspose.Words简单生成word文档 Aspose.Words.Document doc = new Aspose.Words.Document(); Aspose.Words.Documen ...
- Java生成和操作Excel文件(转载)
Java生成和操作Excel文件 JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...
- 利用JAVA生成二维码
本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...
- JAVA生成条形码
1.下载生成条形码所需要的jar包barcode4j.jar: 2.java生成条形码代码 import java.awt.image.BufferedImage;import java.io.Fil ...
随机推荐
- 使用openmp进行并行编程
预处理指令pragma 在系统中加入预处理器指令一般是用来允许不是基本c语言规范部分的行为.不支持pragma的编译器会忽略pragma指令提示的那些语句,这样就允许使用pragma的程序在不支持它们 ...
- <vector>常用操作
如果不清楚vector是什么的话就去看我的另一篇随笔吧:https://www.cnblogs.com/buanxu/p/12791785.html 进入正题,vector和string一样,也是一种 ...
- Matplotlib 误差线的绘制和子图的创建方式
一.绘制误差线 使用errorbar方法可以绘制误差线. x = np.linspace(0,10,50) dy=0.8 y = np.cos(x) + dy*np.random.randn(50) ...
- ajax发送时禁用按钮
css /*div无法点击*/ .div-cant-click { pointer-events: none; } 发送ajax实例 $.ajax({ url:'url', type:'post', ...
- 关于foreach总是报错invalid param等问题
原因为被foreach的数组可能为空,则会报错,只需做好容错即可,例如 if ( !empty( $arr ) ) { foreach ( $arr as $k => $v ) { } }
- POJ2044 天气预报---状态细则
墙角数枝梅,凌寒独自开. 遥知不是雪,为有暗香来.--王安石 题目:天气预报 网址:http://poj.org/problem?id=2044 你是一个可以控制降雨的神仙. 你是一个仁慈的神,希望土 ...
- IDEA 之 Java项目复制
1.复制一个项目,并改名字 2.更改以下文件名字 3.将以下文件中的原有名字,替换成更改后的名字(例如MyWebapp07替换成MyWebapp08) 4.将out文件夹给删除 5.然后用IDEA ...
- 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!
基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest ②unittest demo 中 包含 web.api 自动化测试框架 ...
- Vant Weapp小程序蹲坑之使用card组件显示价格
问题 在基于mpvue+Vant Weapp组件库实战过程中,问题越来越多.网络上所谓的"坑"总结,仅仅不过是其开发中所遭所遇之"坑"而已--估计后面的&quo ...
- innobackupex 出现Unrecognized character \x01; marked by
centos 7.2 mysql 5.7.16 innobackupex version 2.4.6 [root@Devops-mysql-150-115 sh]# innobackupex --de ...