elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:51  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  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 673 veces)
DonVidela


Desconectado Desconectado

Mensajes: 1.617



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

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
GRAVE: java.awt.HeadlessException
 

Este es el metodo

Código
 
 /*Testeo de screenshot*/
 
           Toolkit toolkit = Toolkit.getDefaultToolkit();
           Dimension screenSize = toolkit.getScreenSize(); //En esta linea lanza la excepcion
           Robot robot = new Robot();
           Rectangle rectangle = new Rectangle(0, 0, screenSize.width - 15, screenSize.height);
           BufferedImage image = robot.createScreenCapture(rectangle);
           ImageIO.write(image, "jpg", new File("c:\\mmgg.jpg"));
 
           /*Fin testeo*/
 
 

Intente con esto y se me ve bien con el html de ejemplo, pero con el mio solo muestra texto =/
Código
           //   file.write();
 
           document.close();
           file.close();
/* TESTING*/
           String htmls = "<html>"
                   + "<h1>:)</h1>"
                   + "Hello World!<br>"
                   + "<img src=\"http://img0.gmodules.com/ig/images/igoogle_logo_sm.png\">"
                   + "</html>";
 
           JLabel label = new JLabel(html);
           label.setSize(5000,5000);
 
           BufferedImage image = new BufferedImage(
                   label.getWidth(), label.getHeight(),
                   BufferedImage.TYPE_INT_ARGB);
 
           {
               // paint the html to an image
               Graphics g = image.getGraphics();
               g.setColor(Color.BLACK);
               label.paint(g);
               g.dispose();
           }
 
           // get the byte array of the image (as jpeg)
           ByteArrayOutputStream baos = new ByteArrayOutputStream();
           ImageIO.write(image, "jpg", baos);
           byte[] bytes = baos.toByteArray();
             ImageIO.write(image, "png", new File("C:/test.png"));
/* FIN TESTING */
 
Ignoren el tamaño del label  :xD


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

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery

http://pablovidela.wordpress.com
DonVidela


Desconectado Desconectado

Mensajes: 1.617



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

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
  //JLabel label = new JLabel(html);
           JEditorPane label = new JEditorPane();
 
           //   label.setContentType("text/html");
           //    label.setText(html);
           //    JTextPane label = new JTextPane();
           label.setContentType("text/html");
 
           label.setText(html);
 
 
 
 
 
           label.setSize(2000, 1100);
 
           BufferedImage image = new BufferedImage(
                   label.getWidth(), label.getHeight(),
                   BufferedImage.TYPE_INT_RGB);
 
           {
               // paint the html to an image
               Graphics g = image.getGraphics();
               // g.setColor(Color.BLACK);
               label.paint(g);
               g.dispose();
 
           }
           // get the byte array of the image (as jpeg)
           ByteArrayOutputStream baos = new ByteArrayOutputStream();
           ImageIO.write(image, "jpg", baos);
           byte[] bytes = baos.toByteArray();
 
 
 
           FacesContext facesContext = FacesContext.getCurrentInstance();
           HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
 
 
           response.setContentType("application/jpg");
           response.setHeader("Content-disposition", "attachment; filename=Testeo.png");
 
           response.setContentLength(baos.size());
           System.out.println("Tamaño BAOSPDF : " + baos.size());
 
 
           ServletOutputStream out = response.getOutputStream();
           ImageIO.write(image, "png", new FileOutputStream("C:/test.png"));
           ImageIO.write(image, "png", out);


En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery

http://pablovidela.wordpress.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ScreenShot Escritorios.
GNU/Linux
fandango 11 1,157 Último mensaje 20 Enero 2005, 11:19
por kd
screenshot en vb
Programación General
c0rrupt_gamer 4 1,030 Último mensaje 30 Abril 2005, 18:24
por alex_primero_1
enviar screenshot en vb
Programación Visual Basic
c0rrupt_gamer 1 1,518 Último mensaje 10 Mayo 2005, 21:12
por c0rrupt_gamer
AYUDA CON SCREENSHOT
Programación Visual Basic
satanico88 1 286 Último mensaje 19 Marzo 2006, 09:05
por satanico88
Screenshot a Ram
.NET
Codename!! 2 604 Último mensaje 5 Noviembre 2010, 18:08
por Codename!!
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines