在 .NET 平台上,我们有多种方式可以将一段 HTML 文本转换为一张图片:HTML Renderer、SelectPdf 、Aspose.Html等。

在 WinForm 程序中,每一个 System.Windows.Forms.Control 的派生类型均包含一个名为 DrawToBitmap 的方法,该方法可以将控件绘制到一张图片上。WebBrowser 具备显示 HTML 的功能,又因为其从 Control 类型派生,所以包含 DrawToBitmap 方法。我们只需将要在 WebBrowser 上加载要展示的 HTML 并在其 DocumentCompleted 事件中绘制图片即可:

public static async Task HtmlToImage(String html, int width = 1024, int height = 768)

{

var taskCompletionSource = new TaskCompletionSource();

var thread = new Thread(() =>

{

using var browser = new WebBrowser

{

Width = width,

Height = height,

ScrollBarsEnabled = false

};

browser.DocumentCompleted += (s, e) =>

{

var b = s as WebBrowser;

if (b == null)

{

return;

}

var bmp = new Bitmap(b.Width, b.Height);

b.DrawToBitmap(bmp, new Rectangle(0, 0, b.Width, b.Height));

taskCompletionSource.SetResult(bmp);

Application.ExitThread();

};

browser.DocumentText = html;

Application.Run();

});

thread.SetApartmentState(ApartmentState.STA);

thread.Start();

return await taskCompletionSource.Task;

}

以上代码参考了:Stack Overflow,笔者将其改造为异步方法并增加了必要的释放功能。在 LINQPad 中测试效果如下:

该方式的优点:

简单易用。

支持最新的 .NET Core 环境。

无需引用第三方类库,没有版权和安全性风险,安全且免费。

支持从互联网上加载内容。

该方式的缺点:

虽然支持 .NET Core ,但以上代码不能跨平台使用。

WebBrowser 控件基于 IE 浏览器并受宿主操作系统影响,要求被呈现的网页具备较高的兼容性。

使用 IE8+ 版本进行渲染

笔者在实际工作中使用到了部分 CSS3 属性,默认情况下 WebBrowser 使用低版本的 IE 浏览器渲染网页,这会导致部分网页效果不生效,比如隔行变色效果。除了修改注册表,我们仍可以通过在网页中加入 meta 标签的方式告知 WebBrowser 使用高版本的 IE 浏览器进行渲染,仅需将以下代码复制至 HTML 的 head 标签内即可:

以上就是C# 使用 WebBrowser 实现 HTML 转图片功能的实例代码的详细内容,更多关于C# WebBrowser 实现 HTML 转图片的资料请关注脚本之家其它相关文章!

c# html转为图片,C# 使用 WebBrowser 实现 HTML 转图片功能的示例代码相关推荐

  1. python 做界面时如何使图片保持透明背景_Python matplotlib生成图片背景透明的示例代码...

    使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,找到了大概的设置方法,特此记录. # coding=utf-8 # matplotlib背景透明示例图 # python 3 ...

  2. java图片放大_【图像处理-图像无损放大】JavaAPI示例代码

    属于内测接口,需要申请哦. 接口说明:http://ai.baidu.com/docs#/ImageProcessing-API/815af37c 需要用到的第三方jar com.alibaba fa ...

  3. el图片滚动_element的el-table中记录滚动条位置的示例代码

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. .net html转为pdf,.NET使用DinkToPdf将HTML转成PDF的示例代码

    0.介绍 C# .NET Core wrapper for wkhtmltopdf library that uses Webkit engine to convert HTML pages to P ...

  5. C# 使用 WebBrowser 实现 HTML 转图片功能

    在 .NET 平台上,我们有多种方式可以将一段 HTML 文本转换为一张图片:HTML Renderer.SelectPdf .Aspose.Html 等. 在 WinForm 程序中,每一个 Sys ...

  6. dat图片 电脑端微信_微信电脑图片dat转为jpg

    微信dat转码软件使用操作说明在线解码,各位同学下载软件后,如何操作?如何找到dat文件?如何使用?又有哪些注意事项呢?这里会为大家一一道来.问题1 :如果下载失败怎么办?请先检查网络,软件并没有放在 ...

  7. 【图片格式转换】python实现批量图片格式转换:emf、jpeg等转为png

    [图片格式转换]python批量进行图片格式转换emf.jpeg等转为png 文章目录 [图片格式转换]python批量进行图片格式转换emf.jpeg等转为png 1. 代码 2. 效果 3. 总结 ...

  8. php将上传的图片转为base64,html5实现把上传的图片转成base64编码在显示(代码实例)...

    本章给大家介绍html5实现把上传的图片转成base64编码在显示(代码实例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来详细的看一看base64编码: 什么是bas ...

  9. java pdf转为多张图片格式_java进行PDF和图片之间的相互转换

    简介 在项目中我们有时候会遇到操作PDF文件的需求,如将PDF的每一页转换成图片,今天我们就来实现一下相关功能. 实现 引入依赖 org.apache.pdfbox pdfbox 2.0.21 pdf ...

最新文章

  1. Confluence 6 如何保持我空间的整洁
  2. C++写的一个简单的词法分析器(分析C语言)
  3. 未能加载文件或程序集“Iesi.Collections”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
  4. supervisor python_使用supervisor运行python脚本
  5. Android Studio无法找到tool.jar解决方法!
  6. 用 Nginx 基于 Let's Engypt 免费证书打造快速安全的 HTTPS 网站
  7. 360 linux 扩展文件夹,360签具名工Linux下载0907 官方版
  8. pcie3.0一条通道带宽_小技巧|内存双通道提升性能
  9. php 403 nginx,403nginx是什么
  10. 向Excle中插入多个表
  11. callback 模式
  12. ​​​​​​​CUDA ---- Shared Memory
  13. LINUX虚拟机安装增强功能时报错: Kernel headers not found for target kernel. Please install them and execute
  14. HDFS简介及其功能
  15. 如何解决金山词霸与卡巴斯基的冲突问题
  16. php1108脱机使用,电脑打印机脱机怎么重新连接
  17. 实习僧-竞品分析报告
  18. 计算机wordif函数,wordif函数怎么用
  19. 前端项目:从0开始实现一个合成大西瓜
  20. 《 Visual c++2013入门经典》(Ivor Horton,7th)2.15练习编程验证

热门文章

  1. java jsp 传递参数的方法,jsp传参方法小结
  2. mysql n 存储结构,MySQL体系结构和存储引擎概述
  3. imagemagick for java_ImageMagick使用for java(im4java)
  4. 高德地图开发 怎么去除城市信息
  5. 快速入门系列之 Scala 语言 GitChat连接
  6. java io流文件损坏_java使用io流下载.docx. xlsx文件,出现文件损坏提示
  7. 浏览器上请求URL的全部过程
  8. 在循环里创建数据库连接,严重影响数据库性能
  9. “export ‘default‘ (imported as ‘echarts‘) was not found in ‘echarts‘
  10. 【算法设计与分析】02 货郎问题与计算复杂性理论