snowp
snowp

Reputation: 491

Generate JPEG from Html Content In Asp.Net MVC

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

enter image description here

But Required OutPut

enter image description here

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

Answers (2)

Oleg
Oleg

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

Tassadaque
Tassadaque

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

Related Questions