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 :
Este es el metodo
Intente con esto y se me ve bien con el html de ejemplo, pero con el mio solo muestra texto =/
Ignoren el tamaño del label
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 (java) [Seleccionar]
GRAVE: java.awt.HeadlessException
Este es el metodo
Código (java) [Seleccionar]
/*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 (java) [Seleccionar]
// 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