Как конвертировать HTML сайта в изображение? - PullRequest
6 голосов
/ 18 октября 2010

Кто-нибудь знает, как это сделать? Я пытался с 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();
            }
        }

    }

Ответы [ 3 ]

3 голосов
/ 18 октября 2010

Вам необходимо отрендерить HTML и вывести результат в виде файла изображения.В настоящее время в ядре Java нет полноценного рендера HTML, поэтому вам понадобится отдельная библиотека или приложение, например WebRenderer .Просто вызовите его из фильтра сервлетов и переопределите ответ результатами рендеринга.

Редактировать Альтернативой с открытым исходным кодом для WebRenderer является Cobra

1 голос
/ 18 октября 2010

Вы можете попробовать использовать 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"));
0 голосов
/ 16 июля 2014

Вы также можете использовать Html2Image Java API от Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...