用到的maven 包
这里面最大的问题就是如果是内部图片有可能不显示,还有就中文不能换行..
dependency>
<groupId>net.sf.cssbox</groupId>
<artifactId>cssbox</artifactId>
<version>4.14</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.3</version>
</dependency>
程序代码
package cn.com.eduedu.exam.util;
import java.awt.Dimension;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import org.fit.cssbox.css.CSSNorm;
import org.fit.cssbox.css.DOMAnalyzer;
import org.fit.cssbox.layout.BrowserCanvas;
import org.jsoup.Jsoup;
import org.jsoup.helper.W3CDom;
public class HtmlToImage {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream(new File("D:\\html.png"));
render.renderURL(url, out, ImageRenderer.Type.PNG);
render.
System.out.println("OK");*/
String html="<html><body><p>这是第二个标记</p>"
+"<img id=\"s_lg_img\" src=\"http://www.baidu.com/img/bd_logo1.png?where=super\" width=\"470\" height=\"129\" usemap=\"#mp\">"
+ "</body><html>";
org.jsoup.nodes.Document document = Jsoup.parse(html);
org.jsoup.helper.W3CDom w3cDom = new W3CDom();
org.w3c.dom.Document w3cDoc = w3cDom.fromJsoup(document);
DOMAnalyzer da = new DOMAnalyzer(w3cDoc,null);
//da.setMediaSpec(media);
//da.attributesToStyles(); //convert the HTML presentation attributes to inline styles
da.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the standard style sheet
//da.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the additional style sheet
//da.addStyleSheet(null, CSSNorm.formsStyleSheet(), DOMAnalyzer.Origin.AGENT); //render form fields using css
//da.getStyleSheets(); //load the author style sheets
BrowserCanvas contentCanvas = new BrowserCanvas(w3cDoc.getDocumentElement(), da, null);
contentCanvas.setAutoMediaUpdate(false); //we have a correct media specification, do not update
contentCanvas.getConfig().setClipViewport(false);
contentCanvas.getConfig().setLoadImages(true);
contentCanvas.getConfig().setLoadBackgroundImages(false);
contentCanvas.createLayout(new Dimension(1200, 600));
OutputStream out=new FileOutputStream("d:\\html111.png");
ImageIO.write(contentCanvas.getImage(), "png", out);
}
}