Reputation: 491
I want to Generate Image (JPEG) from HTML Code Entered in Textarea or other Input Controls (Not Whole Web page) using C# in Asp.Net MVC .MVC doesn't Support WebBrowser Control.
This HTML contains both data and image
HTML
<b>Convert Html To Image<b>
<br/>
<img src="C:\Logo.jpg" alt="Smiley face" width="42" height="42">
I passed the html code to the Controller for the Bitmap Image Creating Function
private Bitmap CreateBitmapImage(string html)
{
Bitmap objBmpImage = new Bitmap(1, 1);
int intWidth = 0;
int intHeight = 0;
// Create the Font object for the image text drawing.
Font objFont = new Font("Arial", 20, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);
// Create a graphics object to measure the text's width and height.
Graphics objGraphics = Graphics.FromImage(objBmpImage);
// This is where the bitmap size is determined.
intWidth = (int)objGraphics.MeasureString(html, objFont).Width;
intHeight = (int)objGraphics.MeasureString(html, objFont).Height;
// Create the bmpImage again with the correct size for the text and font.
objBmpImage = new Bitmap(objBmpImage, new Size(intWidth, intHeight));
// Add the colors to the new bitmap.
objGraphics = Graphics.FromImage(objBmpImage);
// Set Background color
objGraphics.Clear(Color.White);
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
objGraphics.DrawString(html, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0);
objGraphics.Flush();
return (objBmpImage);
}
But it return the Output Like this
But Required OutPut
Is there any way to Generate this(Stepes to Generate Image from html) or any third party Opensource Component Available like HtmlToImageConverter ?
Upvotes: 3
Views: 15278
Reputation: 1359
It is possible to render HTML to image with HtmlRenderer dll. You can get it in HtmlRenderer.WinForms NuGet package (it'll also install HtmlRenderer.Core)
There is a list of issues about it, but it works. You can do something like
public static Image RenderToImage<T>(String fullViewName, T model)
{
String html = RenderViewToString(fullViewName, model);
var image = HtmlRender.RenderToImage(html);
return image;
}
public static String RenderViewToString<T>(String fullViewName, T model)
{
String viewText = File.ReadAllText(fullViewName);
String renderedText = Razor.Parse(viewText, model); // RazorEngine here. I don't have MVC
return renderedText;
}
Upvotes: 3
Reputation: 8199
webSupergoo generate jpg from html. It is not open source but free to download You may also convert html to pdf if it may solve your problem using itextsharp
Upvotes: 0