feat:generateReceiptImage接口增加图片自定义保存路径

This commit is contained in:
石崇礼 2025-01-20 14:31:21 +08:00
parent a8f13d72b9
commit 2986fa0c14
2 changed files with 29 additions and 19 deletions

View File

@ -23,13 +23,19 @@ public class TemplateController {
@GetMapping("/template/{templateName}") @GetMapping("/template/{templateName}")
public Result<String> testTemplate(@RequestParam Integer width, @RequestParam Integer height, String jsonData, @PathVariable String templateName) { public Result<String> testTemplate(@RequestParam String jsonData,
this.templateService.generateReceiptImage(JSONObject.parseObject(jsonData), templateName, width, height); @RequestParam Integer width,
@RequestParam Integer height,
@PathVariable String templateName,
@RequestParam(defaultValue = "E:\\images") String saveDir) {
this.templateService.generateReceiptImage(JSONObject.parseObject(jsonData), templateName, width, height, saveDir);
return Result.ok("模板生成成功"); return Result.ok("模板生成成功");
} }
@GetMapping("/template") @GetMapping("/template")
public Result<String> testTemplate(String jsonData, @RequestParam Integer width, @RequestParam Integer height) { public Result<String> testTemplate(@RequestParam String jsonData,
@RequestParam Integer width,
@RequestParam Integer height, @RequestParam(defaultValue = "E:\\images") String saveDir) {
String html = "<!DOCTYPE html>\n" + String html = "<!DOCTYPE html>\n" +
"<html>\n" + "<html>\n" +
"<head><title>Test</title></head>\n" + "<head><title>Test</title></head>\n" +
@ -38,7 +44,7 @@ public class TemplateController {
"<h2><span th:text='${name}'> </span></h2>\n" + "<h2><span th:text='${name}'> </span></h2>\n" +
"</body>\n" + "</body>\n" +
"</html>"; "</html>";
this.templateService.generateReceiptImage(JSONObject.parseObject(jsonData), html, width, height); this.templateService.generateReceiptImage(JSONObject.parseObject(jsonData), html, width, height, saveDir);
return Result.ok("模板生成成功"); return Result.ok("模板生成成功");
} }

View File

@ -56,13 +56,15 @@ public class TemplateService {
/** /**
* 生成小票图片 * 生成小票图片
*
* @param data json数据用来填充模板 * @param data json数据用来填充模板
* @param template 模板html字符串或者模板名称 * @param template 模板html字符串或者模板名称
* @param width 图片宽度 * @param width 图片宽度
* @param height 图片高度 * @param height 图片高度
* @param saveDir 图片的保存路径如果为空那么不进行图片的保存
* @return 图片字节数组 * @return 图片字节数组
*/ */
public byte[] generateReceiptImage(JSONObject data, String template, int width, int height) { public byte[] generateReceiptImage(JSONObject data, String template, int width, int height, String saveDir) {
try { try {
// 获取模板上下文 // 获取模板上下文
Context context = this.getContext(data); Context context = this.getContext(data);
@ -86,7 +88,17 @@ public class TemplateService {
// 渲染模板 // 渲染模板
String html = templateEngine.process(template, context); String html = templateEngine.process(template, context);
return this.generate(html, width, height); BufferedImage image = this.generate(html, width, height);
// 保存图片
if (saveDir != null && !"".equals(saveDir)) {
String outputPath = saveDir + "\\genera_image_" + System.currentTimeMillis() + ".png";
ImageIO.write(image, "PNG", new File(outputPath));
}
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "PNG", byteOutputStream);
return byteOutputStream.toByteArray();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw new RRException("图片打印失败"); throw new RRException("图片打印失败");
@ -98,7 +110,7 @@ public class TemplateService {
* 生成图片 * 生成图片
* @param html html内容 * @param html html内容
*/ */
private byte[] generate(String html, int width, int height){ private BufferedImage generate(String html, int width, int height){
try { try {
// 转换为xhtml // 转换为xhtml
String xhtml = this.htmlToXhtml(html); String xhtml = this.htmlToXhtml(html);
@ -107,15 +119,7 @@ public class TemplateService {
Document document = this.xhtmlToDocument(xhtml); Document document = this.xhtmlToDocument(xhtml);
// 生成图片 // 生成图片
BufferedImage image = createImageToDocument(document, width, height); return createImageToDocument(document, width, height);
// 保存图片
String outputPath = "E:\\images\\test_" + System.currentTimeMillis() + ".png";
ImageIO.write(image, "PNG", new File(outputPath));
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "PNG", byteOutputStream);
return byteOutputStream.toByteArray();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw new RRException("图片打印失败"); throw new RRException("图片打印失败");