Comment puis-je convertir facilement html à l'image et à tableau d'octets sans le créerconvertir html à l'image dans le tableau d'octets java
grâce
Comment puis-je convertir facilement html à l'image et à tableau d'octets sans le créerconvertir html à l'image dans le tableau d'octets java
grâce
Ceci est non négligeable, car le rendu d'une page HTML peut être assez complexe: vous avoir du texte, des images, CSS, peut-être même JavaScript pour évaluer.
Je ne connais pas la réponse, mais j'ai quelque chose qui pourrait vous aider: code pour iText (écrire une bibliothèque PDF) pour convertir une page HTML dans un fichier 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();
}
je dois l'enregistrer en tableau byte, sans pour le créer. Merci – cls
Si vous n'avez pas html complexe, vous pouvez le rendre en utilisant un JLabel
normal. Le code ci-dessous produira cette image:
<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 vous voulez simplement écrire dans un fichier:
ImageIO.write(image, "png", new File("test.png"));
je ne ai pas besoin de le créer uniquement pour enregistrer en tant que tableau d'octets – cls
Vous devez passer par quelque chose comme un 'ImageIO.write'. Vous ne pouvez pas construire magiquement le tableau d'octets sans avoir d'abord l'image. – aioobe
@cls Quel est le format si le tableau d'octets ont? – dacwe
Je pense que vous pouvez utiliser la bibliothèque
html2image-0.9.jar
vous pouvez télécharger cette bibliothèque à cette page: http://code.google.com/p/java-html2image/
Qu'en est-il en utilisant une mémoire ByteArrayStream
au lieu d'un FileOutputStream
dans le code ci-dessus? Ce serait un tableau d'octets, au moins ...
Comme un « screeenshot » d'une page html rendu? –
non, je crée html et j'ai besoin de l'envoyer par fax avec image sans source d'image, donc je veux le convertir en image, puis envoyer l'image – cls