# html2image-demo
**Repository Path**: alotuser/html2image-demo
## Basic Information
- **Project Name**: html2image-demo
- **Description**: No description available
- **Primary Language**: HTML
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-08-05
- **Last Updated**: 2026-08-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# html2image-demo
## 功能概述
**核心功能**:将HTML内容渲染为图片,并通过CSS类名和ID等定位页面中的特定元素区域,然后裁剪出该区域的图片。
## 详细流程说明
### 1. 资源加载阶段
```java
ClassLoader classLoader = new SimpleTest().getClass().getClassLoader();
URL resourceUrl = classLoader.getResource("1.html");
String path = resourceUrl.getPath();
String html = HtmlRender.readHtml(path);
```
**流程**:
- 获取当前类的类加载器
- 从classpath中加载HTML资源文件(1.html)
- 读取HTML文件内容到字符串
### 2. 渲染器配置阶段
```java
HtmlRender htmlRender = HtmlRender.create(BufferedImage.TYPE_INT_RGB);
htmlRender.addFontDirectory("D:/myfonts");
htmlRender.setPageWidth(400f);
htmlRender.setPageHeight(300f);
htmlRender.setScale(1f);
```
**配置项**:
- **图像类型**:`TYPE_INT_RGB` - 使用RGB颜色模式
- **字体目录**:添加自定义字体目录
- **页面尺寸**:设置渲染页面宽400px、高300px
- **缩放比例**:1倍缩放
### 3. HTML渲染阶段
```java
htmlRender.toPng(html, "D://1.png");
```
**功能**:将HTML内容渲染成PNG格式图片并保存到指定路径
### 4. 元素定位阶段
```java
String className = "original-price";
Map mers = htmlRender.findByClass(className);
Rectangle f = mers.values().stream().findFirst().get();
```
**功能**:
- 通过CSS类名`original-price`查找页面中所有匹配的元素
- 获取第一个匹配元素的坐标和尺寸信息(Rectangle对象)
### 5. 图片裁剪阶段
```java
BufferedImage original = ImageIO.read(new File("D:\\1.png"));
Rectangle rect = new Rectangle(f.x, f.y, f.width, f.height);
BufferedImage cropped = ImageCropUtil.cropImage(original, rect);
ImageIO.write(cropped, "png", new File("D:\\1-cropped.png"));
```
**流程**:
- 读取已渲染的完整图片
- 根据定位到的元素坐标创建裁剪区域
- 执行图片裁剪操作
- 保存裁剪后的图片
## 应用场景
1. **网页截图自动化** - 自动生成网页特定区域的截图
2. **UI测试验证** - 验证页面中特定元素的显示效果
3. **内容提取** - 从渲染结果中提取特定内容区域
4. **报告生成** - 自动生成包含网页特定区域截图的报告
## 关键特性
- **精确定位**:通过CSS类名准确定位页面元素
- **字体支持**:支持自定义字体渲染
- **灵活配置**:可调整页面尺寸和缩放比例
- **批量处理**:可处理多个类名对应的多个区域
这个流程特别适合需要将网页内容以图片形式保存,并重点突出特定功能区域的自动化处理场景。
## @page高级用法
``` java
@page {
size: A4;
margin: 2.5cm 1.8cm 2cm 1.9cm;
@bottom-left {
content: element(footer);
}
@top-left {
content: element(header);
}
@top-left-corner {
content: element(topleftcorner);
}
@left-middle {
content: element(left);
}
@bottom-right {
content: element(bottomright);
}
}
@page {
size: 100px 100px;
margin: 20px;
}
@page {
size: 180px 100px;
margin: 18px;
-fs-max-overflow-pages: 10;
-fs-overflow-pages-direction: ltr;
@top-left {
content: "Page " counter(page) -fs-if-cut-off(" (continued)") " of " counter(pages);
font-family: 'TestFont';
font-size: 12px;
}
}
```