elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Consulta ScreenShot de una ventana web
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta ScreenShot de una ventana web  (Leído 2,825 veces)
Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Consulta ScreenShot de una ventana web
« en: 9 Noviembre 2011, 14:16 pm »

Hola estimados, tengo un problema, necesito sacar un screenshot a la pagina que estoy visitando , la idea es esta:

Tengo un html de cartola y ese html lo tengo que pasar a pdf, ya lo hice y me quedo bien feo la conversion de html a pdf, asi que mi idea es :

sacar un pantallazo a la pagina con el boton exportar, esa imagen guardarla en el pdf y al exportar todo generar el pdf con el pantallazo del html generado, la cosa es que he intentado usar esa clase Robot para sacar el pantallazo y la cosa es que me sale una excepcion asumo que es porque no hay gui, como es una clase java que hace todo y es todo a nivel web (JSF) no me sale.


Si me dan cualquier pista, una mano, encantado estaría gracias de antemano.

///Datos////

Este es el erro que me sale :

Código
  1. GRAVE: java.awt.HeadlessException
  2.  

Este es el metodo

Código
  1.  
  2.  /*Testeo de screenshot*/
  3.  
  4.            Toolkit toolkit = Toolkit.getDefaultToolkit();
  5.            Dimension screenSize = toolkit.getScreenSize(); //En esta linea lanza la excepcion
  6.            Robot robot = new Robot();
  7.            Rectangle rectangle = new Rectangle(0, 0, screenSize.width - 15, screenSize.height);
  8.            BufferedImage image = robot.createScreenCapture(rectangle);
  9.            ImageIO.write(image, "jpg", new File("c:\\mmgg.jpg"));
  10.  
  11.            /*Fin testeo*/
  12.  
  13.  

Intente con esto y se me ve bien con el html de ejemplo, pero con el mio solo muestra texto =/
Código
  1.           //   file.write();
  2.  
  3.            document.close();
  4.            file.close();
  5. /* TESTING*/
  6.            String htmls = "<html>"
  7.                    + "<h1>:)</h1>"
  8.                    + "Hello World!<br>"
  9.                    + "<img src=\"http://img0.gmodules.com/ig/images/igoogle_logo_sm.png\">"
  10.                    + "</html>";
  11.  
  12.            JLabel label = new JLabel(html);
  13.            label.setSize(5000,5000);
  14.  
  15.            BufferedImage image = new BufferedImage(
  16.                    label.getWidth(), label.getHeight(),
  17.                    BufferedImage.TYPE_INT_ARGB);
  18.  
  19.            {
  20.                // paint the html to an image
  21.                Graphics g = image.getGraphics();
  22.                g.setColor(Color.BLACK);
  23.                label.paint(g);
  24.                g.dispose();
  25.            }
  26.  
  27.            // get the byte array of the image (as jpeg)
  28.            ByteArrayOutputStream baos = new ByteArrayOutputStream();
  29.            ImageIO.write(image, "jpg", baos);
  30.            byte[] bytes = baos.toByteArray();
  31.              ImageIO.write(image, "png", new File("C:/test.png"));
  32. /* FIN TESTING */
  33.  
Ignoren el tamaño del label  :xD


« Última modificación: 9 Noviembre 2011, 15:34 pm por BadDevil » En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Consulta ScreenShot de una ventana web
« Respuesta #1 en: 9 Noviembre 2011, 22:27 pm »

Bueno, pude conseguir la imagen, pero el problema es que me queda bastante inestable el metodo porque a veces no muestra una tabla o alguna imagen y el footer no la muestra nunca, no se que sucede, lo hace a medias y como es algo serio no puedo dejarlo asi.


a ver si a alguien se le ocurre algo. Pego el codigo.

Código
  1.  //JLabel label = new JLabel(html);
  2.            JEditorPane label = new JEditorPane();
  3.  
  4.            //   label.setContentType("text/html");
  5.            //    label.setText(html);
  6.            //    JTextPane label = new JTextPane();
  7.            label.setContentType("text/html");
  8.  
  9.            label.setText(html);
  10.  
  11.  
  12.  
  13.  
  14.  
  15.            label.setSize(2000, 1100);
  16.  
  17.            BufferedImage image = new BufferedImage(
  18.                    label.getWidth(), label.getHeight(),
  19.                    BufferedImage.TYPE_INT_RGB);
  20.  
  21.            {
  22.                // paint the html to an image
  23.                Graphics g = image.getGraphics();
  24.                // g.setColor(Color.BLACK);
  25.                label.paint(g);
  26.                g.dispose();
  27.  
  28.            }
  29.            // get the byte array of the image (as jpeg)
  30.            ByteArrayOutputStream baos = new ByteArrayOutputStream();
  31.            ImageIO.write(image, "jpg", baos);
  32.            byte[] bytes = baos.toByteArray();
  33.  
  34.  
  35.  
  36.            FacesContext facesContext = FacesContext.getCurrentInstance();
  37.            HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
  38.  
  39.  
  40.            response.setContentType("application/jpg");
  41.            response.setHeader("Content-disposition", "attachment; filename=Testeo.png");
  42.  
  43.            response.setContentLength(baos.size());
  44.            System.out.println("Tamaño BAOSPDF : " + baos.size());
  45.  
  46.  
  47.            ServletOutputStream out = response.getOutputStream();
  48.            ImageIO.write(image, "png", new FileOutputStream("C:/test.png"));
  49.            ImageIO.write(image, "png", out);


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
enviar screenshot en vb
Programación Visual Basic
c0rrupt_gamer 1 3,011 Último mensaje 10 Mayo 2005, 21:12 pm
por c0rrupt_gamer
AYUDA CON SCREENSHOT
Programación Visual Basic
satanico88 1 1,202 Último mensaje 19 Marzo 2006, 09:05 am
por satanico88
Screenshot a Ram
.NET (C#, VB.NET, ASP)
Codename!! 2 2,393 Último mensaje 5 Noviembre 2010, 18:08 pm
por Codename!!
[Consulta] SDL2 arreglar movimiento de ventana con click « 1 2 »
Programación C/C++
BloodSharp 13 4,734 Último mensaje 24 Febrero 2019, 21:01 pm
por BloodSharp
[Consulta] Centrar ventana modal al medio del viewport
Desarrollo Web
UsuarioZ 1 3,502 Último mensaje 26 Febrero 2023, 00:15 am
por UsuarioZ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines