.NET 帮助

Cefsharp.WPF.NET Core(开发人员的工作原理)

发布 2024年一月27日
分享:

简介

CefSharp是Chromium嵌入式框架(Chromium Embedded Framework)的.NET封装器,开发人员现在可以轻松地将Chromium强大的Web浏览器引擎集成到他们的.NET桌面应用程序和WPF应用程序中。通过 CefSharp,.NET 应用程序开发人员可以在定制的桌面界面中获得丰富的网络体验,无需任何外部依赖即可利用 Chromium 的网络功能和开发工具。该框架具有多种新功能,如自定义选项和对浏览器行为的控制,使整合 HTML5、CSS3 和 JavaScript 等当代网络技术变得更加容易。

CefSharp 的跨平台互操作性和网络内容交互功能改变了用户在桌面解决方案中与基于网络的内容的交互方式和体验,提升了桌面程序的性能,并在应用程序环境中实现了动态的网上冲浪体验。在本文中,我们将通过代码片段进一步了解 CefSharp 的开源版本。

如何使用 CefSharp

1.从 Visual Studio 项目中创建一个新的 Windows 窗体。

2.安装CefSharp库。

3.为 CefSharp 声明所需的对象,以便进行最小编译。

4.输入需要加载的 URL。

5.运行代码。

安装 CefSharp.WinForms

  • 使用 Visual Studio 的 NuGet 包管理器是安装 CefSharp.WinForms 的最简单方法。
  • 在 Visual Studio 中启动项目。
  • 在 "解决方案资源管理器 "中,右键单击项目。
  • 选择 "管理 NuGet 包"。
  • 转到 "浏览 "选项卡并搜索 "CefSharp"。
  • 选择 CefSharp 软件包 (CefSharp.Wpf、 CefSharp.WinForms等等。) 适合您的项目。

  • 要在项目中包含软件包,请单击 "安装"。

CefSharp 的重要性

CefSharp 是一个框架,通过将 Chromium 网络浏览器引擎的强大功能毫不费力地集成到.NET 应用程序中,改变了开发人员构建具有集成网络冲浪功能的桌面应用程序和自动化项目的方式。在 CefSharp 的帮助下,我们可以显示远程网络内容,包括支持 HTML5 的嵌入式用户界面。

在介绍 CefSharp 时需要强调的重要事项有

  • Chromium 嵌入式框架 (CEF) 作为 CefSharp 的框架,它能将 Chromium 浏览器的功能整合到其他程序中。通过使用谷歌的 Chromium 项目,CefSharp 可增强桌面程序的复杂网络功能。
  • .NET 集成:CefSharp 是 Cef 功能强大的 .NET 封装器。它使程序员可以轻松地使用 C# 或其他 .NET 语言将快速网络浏览器集成到他们的桌面 .NET 应用程序中。
  • 在桌面应用程序中进行网上冲浪:使用 CefSharp,开发人员可以轻松地将网络浏览功能集成到他们的桌面程序中。这一功能为开发人员提供了无限可能,使他们能够将在线资料纳入用户界面,或制作支持网络的独特桌面应用程序。当 JavaScript 事件触发时,它可以接收回调。
  • 支持丰富的网络技术:通过使用 CefSharp,开发人员可以利用 Chromium 提供的所有功能,包括支持 HTML5、CSS3、JavaScript、WebGL 等最新网络标准以及其他现代网络标准。这使得在桌面程序中加入尖端网络技术成为可能。

  • 灵活性和自定义:CefSharp 为开发人员提供了大量的灵活性和定制可能性,允许他们处理事件、执行 JavaScript、与在线内容交互,以及修改浏览器行为以满足特定应用程序的需求。带有 WebGL 的 CefSharp 利用 OpenGL/DirectX 进行硬件加速渲染,支持 3D 内容。

通过使用 CefSharp,开发人员可以改善桌面应用程序,促进网上冲浪体验,鼓励用户互动,并在应用程序环境中为用户提供丰富的现代信息。

示例代码

using System;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace CefSharpExample
{
    public partial class MainForm : Form
    {
        private ChromiumWebBrowser chromeBrowser;

        public MainForm()
        {
            InitializeComponent();

            // Initialize CefSharp settings
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);

            // Create the ChromiumWebBrowser instance
            chromeBrowser = new ChromiumWebBrowser("https://ironpdf.com/"); // Load a URL

            // Add the ChromiumWebBrowser control to the form
            this.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill; // Fill the entire form

            // Handle when the browser component has finished loading
            chromeBrowser.LoadingStateChanged += ChromeBrowser_LoadingStateChanged;
        }

        private void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
        {
            if (!e.IsLoading)
            {
                // Page has finished loading
                // Perform actions after the page has loaded
                Console.WriteLine("Finished loading.");
            }
        }

        // Dispose of Cef resources when the form is closed
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }
    }
}
using System;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace CefSharpExample
{
    public partial class MainForm : Form
    {
        private ChromiumWebBrowser chromeBrowser;

        public MainForm()
        {
            InitializeComponent();

            // Initialize CefSharp settings
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);

            // Create the ChromiumWebBrowser instance
            chromeBrowser = new ChromiumWebBrowser("https://ironpdf.com/"); // Load a URL

            // Add the ChromiumWebBrowser control to the form
            this.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill; // Fill the entire form

            // Handle when the browser component has finished loading
            chromeBrowser.LoadingStateChanged += ChromeBrowser_LoadingStateChanged;
        }

        private void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
        {
            if (!e.IsLoading)
            {
                // Page has finished loading
                // Perform actions after the page has loaded
                Console.WriteLine("Finished loading.");
            }
        }

        // Dispose of Cef resources when the form is closed
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }
    }
}
Imports System
Imports System.Windows.Forms
Imports CefSharp
Imports CefSharp.WinForms

Namespace CefSharpExample
	Partial Public Class MainForm
		Inherits Form

		Private chromeBrowser As ChromiumWebBrowser

		Public Sub New()
			InitializeComponent()

			' Initialize CefSharp settings
			Dim settings As New CefSettings()
			Cef.Initialize(settings)

			' Create the ChromiumWebBrowser instance
			chromeBrowser = New ChromiumWebBrowser("https://ironpdf.com/") ' Load a URL

			' Add the ChromiumWebBrowser control to the form
			Me.Controls.Add(chromeBrowser)
			chromeBrowser.Dock = DockStyle.Fill ' Fill the entire form

			' Handle when the browser component has finished loading
			AddHandler chromeBrowser.LoadingStateChanged, AddressOf ChromeBrowser_LoadingStateChanged
		End Sub

		Private Sub ChromeBrowser_LoadingStateChanged(ByVal sender As Object, ByVal e As LoadingStateChangedEventArgs)
			If Not e.IsLoading Then
				' Page has finished loading
				' Perform actions after the page has loaded
				Console.WriteLine("Finished loading.")
			End If
		End Sub

		' Dispose of Cef resources when the form is closed
		Private Sub MainForm_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
			Cef.Shutdown()
		End Sub
	End Class
End Namespace
VB   C#

这段代码使用 CefSharp 开发了一个基本的 WinForms 应用程序,其中包含一个基于 Chromium 的嵌入式网络浏览器。下面是解释:

  • 使用 CefSettings 初始化 CefSharp 设置。
  • ChromiumWebBrowser该类表示 CefSharp 提供的网络浏览器控件。
  • LoadingStateChanged 事件用于处理浏览器加载状态的变化,例如页面加载完成时。
  • MainForm_FormClosing 事件可确保在表单关闭时正确关闭 Cef 资源。

有关使用 CefSharp 构建的、可编译的应用程序的基本示例,请参见 项目.更复杂的示例项目可在该项目的源代码中找到。

使用 IronPDF 的 CefSharp

集成 IronPDF使用 CefSharp 的 Chromium 嵌入式框架生成 PDF 的功能 (CEF) 该浏览器要求在.NET应用程序中同时使用 CefSharp 和 IronPDF。然而,截至 2022 年 1 月的最新版本,CefSharp 和 IronPDF 之间还没有直接的、开箱即用的接口。

CefSharp的主要目标是将Chromium网络浏览器引擎集成到.NET程序中,允许通过应用程序的用户界面显示在线内容并与之交互。CefSharp 可为 WPF 和 Windows 窗体应用程序提供浏览器控件。

虽然 CefSharp 和 IronPDF 没有直接集成,但开发人员仍可在同一应用程序上下文中使用这两个库。

安装 IronPDF

要获取 IronPDF 库,您需要遵循以下步骤。在软件包管理器中输入以下代码:

Install-Package IronPdf 
dotnet add package IronPdf

CefSharp.Wpf.NetCore(面向开发人员的工作原理):图 1 - 安装 IronPDF

或者,您也可以使用 NuGet 软件包管理器搜索软件包 "IronPDF"。从所有与 IronPDF 相关的 NuGet 软件包列表中,选择并下载所需的软件包。

CefSharp.Wpf.NetCore(开发人员如何使用):图 2 - IronPDF

在 CefSharp C&num 中使用 IronPDF;

要在 C# 应用程序中将 IronPDF 与 CefSharp 集成,需要执行两个步骤:利用 CefSharp 提供的基于 Chromium 的浏览器渲染 HTML 内容,然后使用 IronPDF 将 HTML 信息转换为 PDF 文档。下面的示例演示了如何完成这一集成:

using CefSharp;
using IronPdf;
using System;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CefSharpIronPdfIntegration
{
    public partial class MainForm : Form
    {
        private ChromiumWebBrowser chromeBrowser;

        public MainForm()
        {
            InitializeComponent();

            // Initialize CefSharp
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);

            // Create the ChromiumWebBrowser instance
            chromeBrowser = new ChromiumWebBrowser("https://ironpdf.com/"); // Load a URL

            // Add the ChromiumWebBrowser control to the form
            this.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill; // Fill the entire form

            // Handle when the browser component has finished loading
            chromeBrowser.LoadingStateChanged += ChromeBrowser_LoadingStateChanged;
        }

        private async void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
        {
            if (!e.IsLoading)
            {
                // Page has finished loading
                // Capture HTML content after page load completes
                string htmlContent = await chromeBrowser.GetSourceAsync();

                // Use IronPDF to generate a PDF from the captured HTML content
                var Renderer = new IronPdf.HtmlToPdf();
                var PDF = Renderer.RenderHtmlAsPdf(htmlContent);
                PDF.SaveAs("Output.pdf"); // Save the generated PDF

                Console.WriteLine("PDF generated successfully.");
            }
        }

        // Dispose of Cef resources when the form is closed to avoid unnecessary memory usage
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }
    }
}
using CefSharp;
using IronPdf;
using System;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CefSharpIronPdfIntegration
{
    public partial class MainForm : Form
    {
        private ChromiumWebBrowser chromeBrowser;

        public MainForm()
        {
            InitializeComponent();

            // Initialize CefSharp
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);

            // Create the ChromiumWebBrowser instance
            chromeBrowser = new ChromiumWebBrowser("https://ironpdf.com/"); // Load a URL

            // Add the ChromiumWebBrowser control to the form
            this.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill; // Fill the entire form

            // Handle when the browser component has finished loading
            chromeBrowser.LoadingStateChanged += ChromeBrowser_LoadingStateChanged;
        }

        private async void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
        {
            if (!e.IsLoading)
            {
                // Page has finished loading
                // Capture HTML content after page load completes
                string htmlContent = await chromeBrowser.GetSourceAsync();

                // Use IronPDF to generate a PDF from the captured HTML content
                var Renderer = new IronPdf.HtmlToPdf();
                var PDF = Renderer.RenderHtmlAsPdf(htmlContent);
                PDF.SaveAs("Output.pdf"); // Save the generated PDF

                Console.WriteLine("PDF generated successfully.");
            }
        }

        // Dispose of Cef resources when the form is closed to avoid unnecessary memory usage
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }
    }
}
Imports CefSharp
Imports IronPdf
Imports System
Imports System.Threading.Tasks
Imports System.Windows.Forms

Namespace CefSharpIronPdfIntegration
	Partial Public Class MainForm
		Inherits Form

		Private chromeBrowser As ChromiumWebBrowser

		Public Sub New()
			InitializeComponent()

			' Initialize CefSharp
			Dim settings As New CefSettings()
			Cef.Initialize(settings)

			' Create the ChromiumWebBrowser instance
			chromeBrowser = New ChromiumWebBrowser("https://ironpdf.com/") ' Load a URL

			' Add the ChromiumWebBrowser control to the form
			Me.Controls.Add(chromeBrowser)
			chromeBrowser.Dock = DockStyle.Fill ' Fill the entire form

			' Handle when the browser component has finished loading
			AddHandler chromeBrowser.LoadingStateChanged, AddressOf ChromeBrowser_LoadingStateChanged
		End Sub

		Private Async Sub ChromeBrowser_LoadingStateChanged(ByVal sender As Object, ByVal e As LoadingStateChangedEventArgs)
			If Not e.IsLoading Then
				' Page has finished loading
				' Capture HTML content after page load completes
				Dim htmlContent As String = Await chromeBrowser.GetSourceAsync()

				' Use IronPDF to generate a PDF from the captured HTML content
				Dim Renderer = New IronPdf.HtmlToPdf()
				Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent)
				PDF.SaveAs("Output.pdf") ' Save the generated PDF

				Console.WriteLine("PDF generated successfully.")
			End If
		End Sub

		' Dispose of Cef resources when the form is closed to avoid unnecessary memory usage
		Private Sub MainForm_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
			Cef.Shutdown()
		End Sub
	End Class
End Namespace
VB   C#

这段代码演示了一个简单的集成,即截取 Chromium 浏览器中加载的 HTML 内容,并使用 IronPDF 将其转换为 PDF 文档。下面是解释:

  • 初始化 CefSharp,将 Chromium 浏览器集成到 Windows 窗体应用程序中。
  • ChromiumWebBrowser` 控件:该控件可加载特定 URL (例如,"https://ironpdf.com/") 并创建一个实例。
  • 加载状态改变 "事件:跟踪浏览器的加载进度。当页面完成加载时 (e.IsLoading 为 false)在这种情况下,ChromeBrowser 会使用 GetSourceAsync异步捕获已加载页面的 HTML 内容。()`.
  • IronPDF 集成:捕获的 HTML 内容 (htmlContent) 使用 IronPDF 的 HtmlToPdf 功能将其转换为 PDF 文档。生成的 PDF 文件保存为 "Output.pdf"。

  • 关闭表单:通过调用 `Cef.Shutdown'确保正确关闭 Cef 资源。()表格关闭后

CefSharp.Wpf.NetCore(面向开发人员的工作原理):图 3 - 输出

这段代码演示了一个简单的集成,即截取 Chromium 浏览器中加载的 HTML 内容,然后使用 IronPDF 将其转换为 PDF 文档。您可以根据应用程序的具体需求自定义 URL、错误处理和其他方面。有关 IronPDF 文档的更多信息,请参阅 这里.

结论

将 IronPDF 与 CefSharp 集成到 C# 应用程序中,为管理文件和在线信息开辟了新的可能性。通过将 IronPDF 的 PDF 生成功能与 CefSharp 提供的基于 Chromium 的浏览器相结合,开发人员可以创建灵活的应用程序,在生成高质量 PDF 文档的同时整合动态网页内容。

IronPDF 的精简版软件包售价为 $749,包括为期一年的软件维护合同、升级选项、永久许可证和三十天退款保证。在三十天的试用期内,用户可以使用带水印的试用版在实际应用场景中对产品进行评估。要了解有关 IronPDF 成本、许可和免费版本的更多信息,请访问 链接.有关 Iron Software 的更多信息,请访问他们的 网站.

< 前一页
Npgsql C# .NET(开发者如何使用)
下一步 >
Microsoft 日志记录 C#(开发人员操作详解)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >