Как я могу легко конвертировать HTML в изображения, а затем массив байтов без его созданияконвертировать HTML в изображения в байтовый массив Java
благодаря
Как я могу легко конвертировать HTML в изображения, а затем массив байтов без его созданияконвертировать HTML в изображения в байтовый массив Java
благодаря
Это нетривиальная, поскольку рендеринга HTML страницы может быть довольно сложным: вы есть текст, изображения, CSS, возможно, даже JavaScript для оценки.
Я не знаю ответа, но у меня есть что-то, что может вам помочь: код для iText (библиотека записи PDF) для преобразования HTML-страницы в файл 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();
}
Мне нужно сохранить его в массиве байтов, не создавая его. Спасибо – cls
Если у вас нет какой-либо сложной HTML вы можете сделать это с помощью обычного JLabel
. Приведенный ниже код будет производить это изображение:
<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();
....
}
Если вы хотели бы просто написать его в файл:
ImageIO.write(image, "png", new File("test.png"));
Я думаю, что вы можете использовать библиотеку
html2image-0.9.jar
вы можете загрузить эту библиотеку на этой странице: http://code.google.com/p/java-html2image/
Что об использовании памяти ByteArrayStream
вместо FileOutputStream
в приведенном выше коде? Это будет байтовый массив, по крайней мере ...
Как «screeenshot» на странице рендеринга html? –
Нет, я создаю html, и мне нужно отправить его по факсу с изображением без источника изображения, поэтому я хочу преобразовать его в изображение, а затем отправить изображение – cls