Làm thế nào tôi có thể dễ dàng chuyển đổi html sang hình ảnh và sau đó đến mảng byte mà không tạo ra nóchuyển đổi html sang hình ảnh trong byte mảng java
nhờ
Làm thế nào tôi có thể dễ dàng chuyển đổi html sang hình ảnh và sau đó đến mảng byte mà không tạo ra nóchuyển đổi html sang hình ảnh trong byte mảng java
nhờ
Đây là không tầm thường vì render một trang HTML có thể khá phức tạp: bạn có văn bản, hình ảnh, CSS, thậm chí có thể JavaScript để đánh giá.
Tôi không biết câu trả lời, nhưng tôi có một thứ có thể giúp bạn: mã cho iText (thư viện viết PDF) để chuyển đổi trang HTML thành tệp 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();
}
tôi cần lưu nó vào mảng byte, mà không cần tạo nó. Cảm ơn – cls
Nếu bạn không có bất kỳ html phức tạp nào, bạn có thể hiển thị nó bằng cách sử dụng bình thường JLabel
. Đoạn mã dưới đây sẽ tạo ra hình ảnh này:
<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();
....
}
Nếu bạn muốn chỉ cần viết nó vào một tập tin:
ImageIO.write(image, "png", new File("test.png"));
Tôi nghĩ rằng bạn có thể sử dụng thư viện
html2image-0.9.jar
bạn có thể tải thư viện này tại trang này: http://code.google.com/p/java-html2image/
gì về việc sử dụng trong bộ nhớ ByteArrayStream
thay vì một FileOutputStream
trong đoạn code trên? Đó sẽ là một mảng byte, ít nhất ...
Giống như một "screeenshot" của trang html được hiển thị? –
không, tôi tạo html và tôi cần gửi nó qua fax với hình ảnh không có nguồn hình ảnh, vì vậy tôi muốn chuyển đổi nó thành hình ảnh và sau đó gửi hình ảnh – cls