使用 C# 将 HTML 控件(Div 或表格)转换为图像
Posted
技术标签:
【中文标题】使用 C# 将 HTML 控件(Div 或表格)转换为图像【英文标题】:Convert a HTML Control (Div or Table) to an image using C# 【发布时间】:2010-12-30 16:09:37 【问题描述】:是否可以在 C# 中将 html 控件转换为图像?
是否有任何 C# 方法可以传递 Html Control 对象并返回该 html 控件的图像?
这可能吗,有什么建议吗?
【问题讨论】:
【参考方案1】:考虑这个位于guangmingsoft 的名为 htmlsnapshot 的库(未经测试!)。
添加对 htmlsnap2.dll 的引用
那里有一个示例项目可供下载。
这是他们的示例代码,直接来自该链接:
snap = new CHtmlSnapClass();
snap.Url("www.google.com", "*")
byte[] data = (byte[])snap.GetImageBytes(".jpg");
//byte[] data = (byte[])snap.GetThumbImageBytes(".jpg", 100, 100, 1);
FileStream fs = File.OpenWrite(@"c:\1.jpg");
BinaryWriter br = new BinaryWriter(fs);
br.Write(data);
br.Close();
fs.Close();
更新 如果您只想要一个特定的控件,您可以为自己编写一个页面,其工作是将目标控件重新呈现为页面上唯一的 HTML 位。
【讨论】:
然后只用gridview创建你的页面。 “现在支持 Windows 7 和 IE8”让我相信它使用 Internet Explorer 呈现。问题是:你想要 IE 的表格呈现版本,还是其他浏览器的?使用 Firefox 或 Safari 之类的东西比 IE 更难,因为它们不提供开箱即用的 ActiveX 版本的浏览器。但是存在第三方实现,例如iol.ie/~locka/mozilla/mozilla.htm Mozilla 长期以来一直提供 Gecko 运行时的可嵌入版本......他们只是没有很好地宣传这个事实......正式地,获得 activex 控件的方法是 XULRunner。 developer.mozilla.org/en/XULRunner(非正式地,无论如何,该 dll 都包含在 firefox 下载中,因为 Firefox “真的”只是一个嵌入 Gecko 的应用程序......) 我可以在vc++中使用这段代码吗?如果是,此代码是否有任何更改?【参考方案2】:您所描述的控件具有 HTML 作为其输出。这就是它所做的一切。
您的问题是您想将 HTML 的 sn-p 转换为图像。渲染 HTML 由浏览器完成 - ASP.NET 基本上与客户端如何渲染 HTML 无关。
大多数完成这项工作(将 HTML 转换为图像)的 .NET 库都使用 IE 来支持转换。其中一些实用程序包括:
-
网站截图 - http://www.websitesscreenshot.com/
上述htmlsnapshot - http://www.guangmingsoft.net/htmlsnapshot/help.htm
基本上任何 HTML -> PDF 库都有这个功能,包括 ABCPdf - http://www.websupergoo.com/abcpdf-1.htm
但这个问题的更基本答案是 ASP.NET 控件不会呈现为图像格式。您必须对仅具有该控件(或 HTML)的页面进行 IE 屏幕截图。
【讨论】:
【参考方案3】:我们使用http://iecapt.sourceforge.net/ 将 HTML 转换为图像。 你可以试试看。 免费。
【讨论】:
msdn 的快照是时光倒流:iecapt.sourceforge.net/msdn.microsoft.com.png IECapt 在 IE7 上运行良好。在服务器上应该有 IE7,客户端可以是任何浏览器。 这是我的经验。它无法在具有不同版本 IE 的服务器上运行。【参考方案4】:您需要创建一个单独的页面,将其转换为图像并在 iframe 中调用它。然后尝试关注:http://articles.sitepoint.com/article/generating-asp-net-images-fly 或http://www.guangmingsoft.net/wordpress/convert-html-to-image-without-temporary-files-in-c/
【讨论】:
【参考方案5】:我自己没有尝试过,但我一直想看看可能对你有帮助的东西是HTMLRenderer。
【讨论】:
【参考方案6】:是的。使用 html2canvas 方法可以轻松完成。 html2canvas 用于截取 html 元素的屏幕截图。你可以通过简单地将 html div 添加到 html 模态并将模态 ID 传递给 jquery 函数并在按钮 onclick 中调用该 jqueryy 函数来做到这一点。 you can checkout this link to know more about the htm2canvas method
【讨论】:
以上是关于使用 C# 将 HTML 控件(Div 或表格)转换为图像的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 和 Javascript 隐藏/显示 html 表格
C# 使用 WebBrowser 实现 HTML 转图片功能