7
votes

Comment convertir le HTML d'un site Web à une image?

Est-ce que quelqu'un sait comment faire cela? J'ai essayé avec Jeditorpane mais ça ne marche pas? Toute autre idée?

Merci d'avance.

Ceci est le code que j'utilise: xxx


4 commentaires

J'imagine parce que Jeditorpane est un composant pivotant et n'a rien à voir avec le HTML.


Hey @bozho, merci pour la réponse. Le problème est l'image résultante, c'est totalement mal formé.


Vous devrez être plus précis. Que faites-vous? Et que se passe-t-il quand vous le faites?


Hey @Mike, je viens de mettre à jour la question avec le code que j'utilise. Par exemple, pour google.com, j'ai reçu une image avec cette taille: 6498 × 574. Le HTML que je veux convertir est généré sous le serveur et peut avoir des tailles variables.


3 Réponses :


3
votes

Vous devez rendre le HTML et sortir le résultat en tant que fichier d'image. Actuellement, il n'y a pas de rendu HTML à part entière dans Core Java, vous aurez donc besoin d'une bibliothèque distincte ou d'une application, Webrenderer par exemple. Il suffit d'appeler simplement à partir d'un filtre de servlet et remplacez la réponse avec les résultats du rendu.

edit open source alternative à webrenderer est COBRA


3 commentaires

Merci @Saul Je construis une application open source, donc je voudrais utiliser des outils open source / libs.


HTMELDITORKIT de Swing fournit un rendu HTML (bien que primitif). télécharger.oracle.com/javase/ 6 / DOCS / API / JAVAX / SWING / TEXT / HTML / ...


@dogbane: HTMELLEDITORKIT ne prend en charge qu'un ensemble très minime d'utilisations de sites Web modernes. Ce n'est pas un moteur de rendu Web à part entière.



1
votes

Vous pouvez essayer d'utiliser un JEDORPANE comme suit:

//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"));


1 commentaires

L'écran est tout blanc, blanc en couleur.



-3
votes

Vous pouvez également utiliser HTML2Image Java API de Google.


0 commentaires