Question

Je ne sais pas si cela est encore possible, mais je voudrais ajouter un contrôle / objet à une page Web afin que les utilisateurs finaux peuvent cliquer sur un bouton pour capturer ce qu'ils voient dans le navigateur afin qu'ils puissent ensuite soumettre l'image en arrière comme partie d'un processus d'examen du site.

Je pensais que le contrôle ActiveX, mais si nous pouvions utiliser le flash ou silverlight ce serait mieux.

Merci pour toutes suggestions.

Était-ce utile?

La solution

Sous Windows, vous pouvez appuyer sur Alt + Impr pour copier la fenêtre courante dans le presse-papiers.

Si vous pouvez utiliser FireFox, je vous suggère de regarder ScrapBook + .

Si vous avez besoin d'un processus automatisé, essayez SWT . Cette bibliothèque a un composant de navigateur que vous pouvez utiliser pour charger certains HTML, afficher et copier le résultat dans une image. Le problème est de savoir quand le navigateur a terminé le rendu du document. Ce fragment de code devrait vous aider à démarrer:

public HTML2Png ()
{
    display = new Display();
    shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setSize(920, 700);
    shell.setLocation(10, 20);
    browser = new Browser(shell, SWT.NONE);

    browser.addProgressListener(new ProgressListener() {
        public void changed (ProgressEvent progressevent)
        {
        }

        public void completed (ProgressEvent progressevent)
        {
            boolean result = browser.execute("window.status=document.bgColor;");
            if (!result)
            {
                System.err.println("Executing script failed!");
                return;
            }

            System.out.println("Loading completed.");
            completed.set(true);
        }
    });
    browser.addPaintListener(new PaintListener() {
        public void paintControl (PaintEvent paintevent)
        {
            System.out.println(paintevent);
        }
    });
}

void createPNG (String url, String pngFile)
{
    System.out.println("Working on "+url);
    completed.set(false);

    shell.open();

    browser.setText("<html><body bgcolor=\"#FF00FF\"></body></html>");
    GC source = new GC (shell);
    int testColor = 0xFF00FF00;
    Image image = new Image (display, new Rectangle(0, 0, 1, 1));

    int i = 100;
    while (display.readAndDispatch() && i > 0)
    {
        source.copyArea(image, 0, 0);
        if (image.getImageData().getPixel(0,0) == testColor)
            break;
        sleep();
        i --;
    }

    if (i == 0)
        throw new RuntimeException("Loading took too long");

    completed.set(false);
    browser.setUrl(url);
    i = 50;
    while (!shell.isDisposed() && i > 0)
    {
        if (completed.get())
        {
            source.copyArea(image, 0, 0);
            if (image.getImageData().getPixel(0,0) != testColor)
            {
                image = new Image (display, browser.getClientArea());
                source.copyArea(image, 0, 0);

                //if (checkImage(image, testColor))
                    break;
            }

            i --;
        }

        while (display.readAndDispatch())
            ;

        sleep();
    }

    if (i == 0)
        throw new RuntimeException ("Loading timed out");

    ImageLoader io = new ImageLoader ();
    io.data = new ImageData[] { image.getImageData() };
    File f = new File (pngFile);
    io.save (f.getAbsolutePath(), SWT.IMAGE_PNG);

    System.out.println("Saved image "+f+", "+f.length()+" bytes");
}

Autres conseils

Le bouton Imprimer de l'écran? Tout le reste serait assez difficile de le faire correctement.

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