Bibliothèque Java open source pour la création de vignettes de pages Web côté serveur [fermé]

StackOverflow https://stackoverflow.com/questions/169573

  •  05-07-2019
  •  | 
  •  

Question

Je recherche une bibliothèque Java open source pour générer des vignettes pour une URL donnée. Je dois regrouper cette fonctionnalité plutôt que d'appeler des services externes, tels que Amazon ou websnapr .

http://www.webrenderer.com/ a été mentionné dans ce message: captures d'écran générées par le serveur , mais il s'agit d'une solution commerciale.

J'espère une solution basée sur Java, mais devra peut-être envisager l'exécution d'un processus externe tel que khtml2png , ou en intégrant un élément comme html2ps .

Des suggestions?

Était-ce utile?

La solution

La première chose qui me vient à l’esprit est d’utiliser AWT pour capturer une capture d’écran (voir le code ci-dessous). Vous pourriez envisager de capturer le JEditorPane , le JDIC contrôle WebBrowser ou le SWT Navigateur (via le Prise en charge intégrant AWT ). Les deux derniers intègrent des navigateurs natifs (IE, Firefox), donc introduisez des dépendances; le support HTML de JEditorPane s'est arrêté à HTML 3.2. Il se peut qu’aucune d’entre elles ne fonctionne avec un système sans tête.

import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JLabel;

public class Capture {

    private static final int WIDTH = 128;
    private static final int HEIGHT = 128;

    private BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
            BufferedImage.TYPE_INT_RGB);

    public void capture(Component component) {
        component.setSize(image.getWidth(), image.getHeight());

        Graphics2D g = image.createGraphics();
        try {
            component.paint(g);
        } finally {
            g.dispose();
        }
    }

    private BufferedImage getScaledImage(int width, int height) {
        BufferedImage buffer = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        Graphics2D g = buffer.createGraphics();
        try {
            g.drawImage(image, 0, 0, width, height, null);
        } finally {
            g.dispose();
        }
        return buffer;
    }

    public void save(File png, int width, int height) throws IOException {
        ImageIO.write(getScaledImage(width, height), "png", png);
    }

    public static void main(String[] args) throws IOException {
        JLabel label = new JLabel();
        label.setText("Hello, World!");
        label.setOpaque(true);

        Capture cap = new Capture();
        cap.capture(label);
        cap.save(new File("foo.png"), 64, 64);
    }

}

Autres conseils

Vous demandez essentiellement un moteur de rendu complet accessible par Java. Personnellement, je voudrais éviter les tracas et appeler un processus enfant.

Sinon, j'ai rencontré ce navigateur Java pur: Lobo

n’existait-il pas un site Web / service d’AQ / de test permettant de spécifier une page Web à afficher dans un navigateur donné (IE, FIREFOX, SAFARI version x, y, z), et ils l'enverraient instantané de retour à vous. '

Je ne me souviens pas du service - peut-être que d'autres développeurs qui utilisent ajaxian s'en souviennent peut-être?

Essayez d'appeler ImageMagick . Je sais que ce n'est pas une solution Java, mais vous pouvez l'appeler depuis Java. Il existe même un interface frontale Java , même si j'ai eu moins de succès avec ça.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top