如何将网站的HTML转换为图像?

有谁知道如何做到这一点? 我曾尝试使用JEditorPane,但它不起作用? 还有其他想法吗?

提前致谢。

这是我正在使用的代码:

import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class HtmlToImage { protected static File generateOutput() throws Exception { // Create a temporary output file for the PNG image. File outputFile = new File("Reporte.png"); outputFile.deleteOnExit(); JEditorPane pane = new JEditorPane(); pane.setContentType("text/html"); pane.setPage("http://www.google.com"); final JFrame frame = new JFrame(); frame.pack(); // Time Delay for the correct loading of the file. try { Thread.sleep(5000); } catch(NumberFormatException nfe) { } frame.add(pane); frame.pack(); Dimension prefSize = pane.getPreferredSize(); pane.setSize(prefSize); BufferedImage img = new BufferedImage( prefSize.width, prefSize.height, BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphics2D) img.getGraphics(); SwingUtilities.paintComponent(g, pane, frame, 0, 0, prefSize.width, prefSize.height); ImageIO.write(img, "png", outputFile); return outputFile; } public static void main(String[] args) { try { generateOutput(); } catch (Exception e) { e.printStackTrace(); } } } 

您需要呈现HTML并将结果输出为图片文件。 目前,核心Java中没有完整的HTML渲染器,因此您需要一个单独的库或应用程序,例如WebRenderer 。 只需从servletfilter调用它,并使用渲染结果覆盖响应。

编辑 WebRenderer的开源替代品是Cobra

您可以尝试使用JEditorPane,如下所示:

 //load the webpage into the editor JEditorPane ed = new JEditorPane(new URL("http://www.google.com")); ed.setSize(200,200); //create a new image BufferedImage image = new BufferedImage(ed.getWidth(), ed.getHeight(), BufferedImage.TYPE_INT_ARGB); //paint the editor onto the image SwingUtilities.paintComponent(image.createGraphics(), ed, new JPanel(), 0, 0, image.getWidth(), image.getHeight()); //save the image to file ImageIO.write((RenderedImage)image, "png", new File("google.png")); 

您还可以使用Google提供的Html2Image java API。