将HTML元素转换为图像(例如PNG)的机制是通过JEditorPane
“呈现”它,如下所示:
public void render(String html, int width, int height, file output) {
JEditorPane jep = new JEditorPane("text/html", html);
jep.setSize(width, height);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
jep.print(image.getGraphics());
ImageIO.write(image, "PNG", output);
}
此方法适用于简单的HTML代码,包括对CSS的基本支持。
有什么方法可以“自动检测”宽度和高度,而不是在render()
方法中明确指定?
或通过“普通香草” Java
将HTML转换为图像的更好方法?
大多数HTML元素没有“默认”大小。大小由在此元素中找到的文本以及显示该元素的屏幕的宽度设置。
但是,如果要使用在用户屏幕上显示的当前样式来渲染元素,则可以尝试获取根元素的宽度。
为此,请尝试将HTML字符串转换为DOM元素(Creating a new DOM element from an HTML string using built-in DOM methods or Prototype),然后获取根元素的宽度和高度。