C#使用WebBrowser实现HTML转图片功能的方法-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

创新互联专注于乌海企业网站建设,响应式网站设计,成都做商城网站。乌海网站建设公司,为乌海等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

小编给大家分享一下C#使用WebBrowser实现HTML转图片功能的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

在 .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;
}

新闻名称:C#使用WebBrowser实现HTML转图片功能的方法-创新互联
本文地址:http://hbruida.cn/article/dhihse.html