如何使用 C# 和 ASP.NET 从网页中截取 div?

Posted

技术标签:

【中文标题】如何使用 C# 和 ASP.NET 从网页中截取 div?【英文标题】:How to take screenshot of div from a webpage using C# and ASP.NET? 【发布时间】:2011-06-17 23:15:44 【问题描述】:

我想从我在网站上生成的 html 创建动态图像。我有生成 PSN 奖杯卡、Xbox LIVE 玩家卡、Steam 玩家卡和 Xfire 玩家卡的代码。每张卡片都放入自己的 div 中,并从服务器端代码动态构建。有没有办法使用 C# 和 ASP.NET 在网页上捕获所选 div 的屏幕截图?

【问题讨论】:

我想解决这个问题的方法是对页面进行完整截图,然后将页面裁剪到包含我想要抓取的 div 的区域。 顺便说一句,“ASP.NET”是一个词——中间没有空格。 @John Saunders:虽然这可能是真的,我并不是说这个评论是粗鲁的,但我真的不认为这是非常必要的。在宏伟的计划中,是否有空格并不重要,因为我已经看到它以两种方式编写。虽然我想一切都很幽默。 我认为 John 指出了这一点,因为标记帖子时很重要。没有空格的“ASP.NET”是正确的方法。 @pcmantinker:没必要。我或其他任何人也不必在这里回答问题。然而,我们做到了。 【参考方案1】:

如果您需要截屏,则需要在客户端进行。因此,您需要使用一些客户端技术,如 javascript、flash、silverlight...Asp.net 在服务器上运行,因此被排除在外。

以下是有关使用 javascript 截屏的其他相关 SO 问题的一些链接:

JavaScript code to take a screenshot of a website without using ActiveX

Take a screenshot of a webpage with JavaScript?

【讨论】:

感谢您的回答。在做了更多的研究之后,我决定使用 GDI+ 来渲染各种玩家卡片,而不是尝试将 html 的屏幕截图转换为图像。与尝试捕获给定 div 的内容并需要知道网页上的直接坐标相比,我似乎可以更容易地做到这一点。感谢您的支持。 我想补充一点,使用 PhantomJS 可以截取网页截图。您只需将 PhantomJS javascript API 与在 C# 中创建进程并在命令行上运行屏幕截图脚本结合使用。【参考方案2】:

您需要一些页面呈现库或服务。 Litmus 是我听说过的这样一项服务。你可以从那里开始。

【讨论】:

为什么投反对票?虽然在我看来,最初的问题在所需的方法中被误导了,但作为理解问题的起点,这是一个合理的答案。正如 pcmantinker 对另一个答案的评论,他正确地得出结论,图形库是一种更直接的方法。

以上是关于如何使用 C# 和 ASP.NET 从网页中截取 div?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用c#在asp.net网页中显示C程序错误

将实时视频从我的 c# 应用程序流式传输到 ASP.NET 网页

如何在 ASP.NET 中显示来自 C# 的警告框?

使用 c# 和 asp.net 访问 javascript 代码?

如何使用 C# 从 ASP.NET 中的 SQL Server 数据库中检索和显示 GridView 中的值

如何创建 Web 服务 | ASP.NET 2.0 | C# |网页服务