文中的例子是将一个list数据,转化为表格,然后加上css样式,转为图片流
public void send() throws IOException {
StringBuilder markdown = new StringBuilder();
markdown.append("| 坐席人员姓名 | 外呼次数 | 未上传录音次数 |\n");
markdown.append("| ---- | -------- | -------------- |\n");
for (QueryNoFileCallDTO record : list) {
markdown.append(String.format("| %s | %d | %d |\n",
record.getUserName(), record.getTotalCall(), record.getNoFileCall()));
}
log.info("打印markdown:{}", markdown);
String htmlContent = convert(markdown.toString());
Html2Image html2Image = Html2Image.fromHtml(htmlContent);
ImageRenderer imageRenderer = html2Image.getImageRenderer();
imageRenderer.setWidth(380);
BufferedImage bufferedImage = imageRenderer.getBufferedImage();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
boolean success = ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream);
if (!success) {
throw new IllegalArgumentException("Unsupported image format: " + "PNG");
}
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
}
public static String convert(String markdown) {
// 配置选项(可选)
MutableDataSet options = new MutableDataSet();
options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create()));
// 创建解析器和渲染器
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
// 将 Markdown 转换为 HTML
String render = renderer.render(parser.parse(markdown));
return "<!DOCTYPE html>" +
"<html>" +
"<head>" +
"<title>未上传录音</title> " +
"<style>\n" +
" /* 添加黑色边框样式 */\n" +
" table {\n" +
" border-collapse: collapse; /* 合并边框 */\n" +
" width: 100%; /* 设置表格宽度 */\n" +
" }\n" +
" th, td {\n" +
" border: 1px solid black; /* 黑色边框 */\n" +
" padding: 8px; /* 内边距 */\n" +
" text-align: center; /* 居中对齐 */\n" +
" }\n" +
" th {\n" +
" background-color: #f2f2f2; /* 表头背景颜色 */\n" +
" }\n" +
" </style>" +
"</head>" +
"<body>" +
render +
"</body>" +
"</html>";
}
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-all</artifactId>
<version>0.64.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/gui.ava/html2image -->
<dependency>
<groupId>gui.ava</groupId>
<artifactId>html2image</artifactId>
<version>2.0.1</version>
</dependency>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。