如何在C#中将包含HTML的字符串呈现为图像?

时间:2011-07-19 22:04:11

标签: c# javascript asp.net html image

我正在开发一个Web应用程序,它为用户提供了一个交互式反馈工具。在此应用程序中,用户可以单击发送反馈按钮。该按钮在其当前网页上设置了一个叠加层,并允许它们拖动突出显示区域DIV以强调某些区域。一旦他们提交了反馈,整个页面的HTML就会通过AJAX传回服务器。

一旦进入服务器,我现在有一个包含页面HTML的字符串。从这里我想通过某种引擎来运行这个字符串,该引擎呈现HTML并构建一个图像。如果你愿意的话,可以采取截屏方式。

如何才能实现这样的目标?是否有可用C#编写的引擎,可以构建HTML并呈现图像?

3 个答案:

答案 0 :(得分:2)

如果你想去Gecko,可以考虑使用LLMozLib 查看更多详情here

修改

有一个ActiveX控件可以在Windows上嵌入Gecko Sample here

修改

我使用Windows Forms应用程序 使用these resources
它是Gecko的csharp包装......

那是我的示例代码......

public partial class Form1 : Form
{
    public Form1()
    {
        Xpcom.Initialize(@"C:\Users\esouza\Downloads\xulrunner"); //Tell where are XUL bin
        InitializeComponent();
        //geckoWebBrowser1 is an instance of GeckoWebBrowser control that I've dragged on the Form1
        geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        geckoWebBrowser1.Navigate("http://www.google.com");
    }

    void geckoWebBrowser1_DocumentCompleted(object sender, EventArgs e)
    {
        Bitmap b = new Bitmap(geckoWebBrowser1.Width, geckoWebBrowser1.Height);
        geckoWebBrowser1.DrawToBitmap(b, new Rectangle { X = 0, Y = 0, Width = 800, Height = 600 });
        b.Save("file.bmp");
    }
}

答案 1 :(得分:2)

查看此框架 - http://awesomium.com/

这正是您所需要的。

设置基本网址,这将需要解决任何相对网址

WebCore.SetBaseDirectory("C:\\MyApplication\\MyBaseDirectory");

然后加载HTML -

myWebView.LoadHTML("<p>Hello World!</p>");

然后使用.Render()方法,您将能够将渲染的内容保存到图像中。

答案 2 :(得分:0)

非常有趣的问题,我没有给你一颗银弹。

您肯定需要一些描述的浏览器引擎,然后将渲染的输出捕获为位图。

我从this question看到有一个为WebKit开发的COM包装器。也许这是一个很好的起点。