¿Cómo puedo convertir fácilmente html a la imagen y luego a la matriz de bytes sin crearloconvertir html a la imagen en la matriz de bytes de Java
gracias
¿Cómo puedo convertir fácilmente html a la imagen y luego a la matriz de bytes sin crearloconvertir html a la imagen en la matriz de bytes de Java
gracias
Esto no es trivial ya que la visualización de una página HTML puede ser bastante complejo: se tener texto, imágenes, CSS, posiblemente incluso JavaScript para evaluar.
No sé la respuesta, pero tengo algo que podría ayudarlo: codificar iText (una biblioteca de escritura de PDF) para convertir una página HTML en un archivo PDF.
public static final void convert(final File xhtmlFile, final File pdfFile) throws IOException, DocumentException
{
final String xhtmlUrl = xhtmlFile.toURI().toURL().toString();
final OutputStream reportPdfStream = new FileOutputStream(pdfFile);
final ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(xhtmlUrl);
renderer.layout();
renderer.createPDF(reportPdfStream);
reportPdfStream.close();
}
necesito guardarlo en matriz de bytes, sin para crearlo. Gracias – cls
Si usted no tiene ningún tipo de HTML complejo se puede hacer usando una normal de JLabel
. El código siguiente producirá esta imagen:
<html>
<h1>:)</h1>
Hello World!<br>
<img src="http://img0.gmodules.com/ig/images/igoogle_logo_sm.png">
</html>
public static void main(String... args) throws IOException {
String html = "<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(200, 120);
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();
....
}
Si desea simplemente escribir en un archivo:
ImageIO.write(image, "png", new File("test.png"));
Creo que se puede usar la biblioteca
html2image-0.9.jar
se puede descargar esta biblioteca en esta página: http://code.google.com/p/java-html2image/
¿Qué pasa con el uso de una memoria ByteArrayStream
en lugar de un FileOutputStream
en el código anterior? Eso sería una matriz de bytes, al menos ...
¿Le gusta una "captura de pantalla" de una página html renderizada? –
no, creo html y necesito enviarlo por fax con una imagen sin fuente de imagen, así que quiero convertirlo a imagen y luego enviar la imagen – cls