2011-09-11 18 views
9

Hice algunas búsquedas para intentar generar archivos jpg desde una página html y encontré una solución llamada IECapt o algo similar que requiere IE en el servidor para funcionar ... no es lo que quiero.html to jpg con C#

Esto es lo que estoy buscando hacer: Genere una imagen jpg de una página html (la página html solo será texto) y luego ponga una marca de agua sobre el jpg.

Básicamente, estoy creando una "muestra" que mis usuarios pueden ver, que será simplemente una imagen creada a partir de html (otra vez solo texto directo). Esa muestra debe tener una marca de agua como se mencionó anteriormente. ¿Hay bibliotecas disponibles para hacer esto con C#? Lo que me gustaría es pasar en la url de mi página que quiero convertir a un método y tal vez la ruta de guardado del jpg, luego hacer que funcione su magia, y convertir esa url a una imagen jpg, arrojar una marca de agua en ¡entonces di joo!

Editar 1

añadiendo algún código de la respuesta below..can't conseguir mi cabeza alrededor de esto:

InitialContainer c = new InitialContainer("<html><body><div align=\"center\">This is my html, does it work here?</div></body></html>"); 
Bitmap m_Bitmap = new Bitmap(400, 700); 
c.Paint(Graphics.FromImage(m_Bitmap)); 
m_Bitmap.Save(@"C:\test\Test.bmp"); 


Editar 2

Esto funciona .

Bitmap m_Bitmap = new Bitmap(400, 600); 
PointF point = new PointF(0,0); 
HtmlRenderer.Render(Graphics.FromImage(m_Bitmap), "<html><body><div align=\"center\">This is my html, does it work here?</div></body></html>",point, 500); 
m_Bitmap.Save(@"C:\test\Test.bmp"); 
+0

Consulte el Renderer HTML [Generar imagen del marcado HTML] (https://htmlrenderer.codeplex.com/wikipage?title=Image%20generation) para obtener la documentación completa. – Arthur

Respuesta

10

Puede utilizar this HtmlRenderer class.

+0

Su respuesta simplemente me ahorró un montón de estrés. n usando una solución horrible que tiene una dependencia en IE. Gracias :) – scartag

+0

Estoy viendo esta solución, pero no veo ninguna opción para guardar el HTML representado como una imagen. He descargado el exe de muestra y estoy jugando con él ahora, pero hasta ahora, no puedo encontrar nada sobre guardar el html generado en una imagen ... ¿algún apuntador? –

+1

@Christopher: crea un objeto 'Bitmap', luego usa' HtmlRenderer' para renderizar a 'Graphics.FromImage (...)'. – SLaks

0

No he probado esto, pero se puede tratar de usar Control.DrawToBitmap(). Para dibujar la marca de agua se puede ir así:

Image img; //the html image. 
Image watermark; //the watermark image. 
Point location; //where to draw the watermark on the html image. 

Graphics g = Graphics.FromImage(img); 
g.DrawImage(watermark, location); 
+1

Pero él no quiere IE. – SLaks

+0

Quizás es posible hacer esto con WebKit o Gecko. –

+0

¿cómo me ayuda eso a convertir un html crudo a una imagen? –