首页 > 其他分享 >Freemarker生成电子协议并转png图片

Freemarker生成电子协议并转png图片

时间:2023-08-10 17:11:34浏览次数:48  
标签:outputFile log Freemarker htmlFile 生成 html File png

目录

Freemarker 是一种流行的模板引擎,它可以使用 Java、C#、PHP 等语言编写模板,并从模板中生成 HTML、XML、文本等各种文件格式。Freemarker 模板由一个或多个包含变量和指令的文本文件组成,这些变量和指令可以在运行时被替换或执行。

依赖包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

配置模板文件目录

  • 文件存放在项目resources/templates
freemarker:
  template-loader-path: classpath:/templates

Java代码

html转png图片需要用到wkhtmltopdf

@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;

public void test() {
	Configuration configuration = freeMarkerConfigurer.getConfiguration();
	Template template = configuration.getTemplate("indexHTKWECHAT_PAY.html");
	// 	数据
	Map<String, Object> data = new HashMap<>();
	File htmlFile = writeHtml(template, data);
	File pngFile = createAgreementPicture(htmlFile);
}

// html 替换占位符
private File writeHtml(Template template, Map<String, Object> data) throws IOException, TemplateException {
	String fileName = UUID.randomUUID().toString();
	File htmlFile = new File(FileUtil.getTmpDir(), fileName + ".html");
	FileWriter sw = new FileWriter(htmlFile);
	log.info("生成协议html, 地址:{}, 参数:{} ", htmlFile.getAbsolutePath(), data);
	template.process(data, sw);
	return htmlFile;
}

// html 转png 示例代码
private File createAgreementPicture(File htmlFile) throws IOException {
	File outputFile = new File(FileUtil.getTmpDir(), htmlFile.getName() + ".png");
	log.info("生成图片开始, HTML地址 {}, 图片地址:{}", htmlFile.getAbsolutePath(), outputFile.getAbsolutePath());
	String commandProcess = "wkhtmltoimage  --width  400  --quality  94  " + htmlFile.getPath() + "  " + outputFile.getPath();
	log.info("协议执行procommand:{}", commandProcess);
	long startTime = System.currentTimeMillis();   //获取开始时间
	Process process = Runtime.getRuntime().exec(commandProcess);
	try {
		int exitVal = process.waitFor();
		log.info("协议html转换png结果:{}", exitVal);
	} catch (InterruptedException e) {
		e.printStackTrace();
		log.info("协议html转换png错误:{}", e.getMessage());
		throw new IOException(e);
	}
	long endTime = System.currentTimeMillis(); //获取结束时间
	log.info("程序运行时间: " + (endTime - startTime) + "ms");
	log.info("生成图片结束,地址: {}", outputFile.getPath());
	Thumbnails.of(outputFile).scale(1).outputQuality(0.9).toFile(outputFile);
	return outputFile;
}

标签:outputFile,log,Freemarker,htmlFile,生成,html,File,png
From: https://www.cnblogs.com/wufengsheng/p/17620901.html

相关文章

  • 使用keil生成 .bin 文件
    产品结构设计没有预留SW烧录口,导致每次更新程序都要拆壳烧录,要不就是引一根烧录线出来,这种方式导致外观非常不美观,产品展示或演示给人第一印象就不好,刚好产品有串口接口,就打算使用IAP功能升级软件;IAP需要生产BIN文件更新软件,而之前工程生成的都是HEX文件再烧录; 1.hex文件与bin......
  • PR语音生成字幕——文本转录功能【2022.2新功能】
    转录序列会得到一个文本然后点上面的CC,创建字幕,调整一下参数就好了......
  • iMX8MP HDMI图像输出 & V4L2生成MJPEG流
    飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX8MPlus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经......
  • freemarker 通过 URL 获取模板文件导出
    通过远程模板文件导出word或其他格式文件。示例是SpringBoot整合freemarker。添加freemarker依赖<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency>......
  • 为什么会变成这样呢? #1 (最小异或生成树)
    对于\(n\)个点的完全图,点\(i\)和点\(j\)之间的边权为\(a_i\oplusa_j\),求该图的最小生成树,其中\(\oplus\)表示按位异或。期望复杂度:\(O(n\logn\loga_i)\)。解答把所有\(a_i\)插入01trie。一个显然的结论是,对于在最终生成树上任意两个点之间的路径,其经过的点都一......
  • Hugging Face 的文本生成和大语言模型的开源生态
    [更新于2023年7月23日:添加Llama2。]文本生成和对话技术已经出现多年了。早期的挑战在于通过设置参数和分辨偏差,同时控制好文本忠实性和多样性。更忠实的输出一般更缺少创造性,并且和原始训练数据更加接近,也更不像人话。最近的研究克服了这些困难,并且友好的交互页面能让......
  • yaml-cpp生成yaml文件及解析yaml文件
    1) 源码编译及安装获取源码$git clone https://github.com/jbeder/yaml-cpp.git$cd yaml-cpp && mkdir build && cd build && cmake .. && make && make install使用样例:由于yaml格式文件与xml和json格式的文件类似,采用树形结构。Yaml对于树节点定义为No......
  • 【转载】八种生成学习策略
    本文发表于《数字教育》2016年第3期(总第9期)域外观察 栏目,页码:86-92.摘要:生成学习意味着学习者会积极尝试去理解所呈现的材料内容。学习者会通过在学习时对所呈现材料进行相关部分的“选择”,在工作记忆中进行心理表征的“组织”,再将所组织的材料与长时记忆中激活的已有知识进行......
  • 【转载】学习是一种生成活动
    本文发表于《数字教育》2016年第2期(总第8期)域外观察栏目,页码:85-92。转载请注明来源!摘 要:意义学习是一种生成活动,即学习者总是努力想去理解所呈现的材料。生成学习对研究学习科学、评估科学和教学科学都有着重要意义。生成学习发生于学习者在学习时进行适当认知加工的过程中;与接......
  • 生成树
    prim模板P1546[USACO3.1]最短网络Agri-Net#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>usingnamespacestd;intn,m,vis[105],d[105],xk,a[105][105],ans,fl;voidprim(){//n^2vi......