.NET 帮助

Cefsharp.WPF.NET Core(它如何为开发人员工作)

发布 2024年一月27日
分享:

介绍

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

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

如何使用 CefSharp

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

  2. 安装CefSharp库。

  3. 为 CefSharp 声明所需的对象,该对象可随时进行最小化编译。

  4. 输入需要加载的 URL。

  5. 运行代码。

    安装 CefSharp.WinForms

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

CefSharp 的重要性

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

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

  • Chromium 嵌入式框架(CEF)作为 CefSharp 的框架,可以将 Chromium 浏览器的功能集成到其他程序中。 通过使用 Google 的 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 构建并可编译的应用程序的基本示例,请参见GitHub 上的最小示例项目. 项目源代码中提供了更复杂的示例项目。

CefSharp 与 IronPDF

集成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# 中使用 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/")在浏览器中创建一个实例
  • LoadingStateChanged "事件:跟踪浏览器的加载进度。 页面加载完成后(e.IsLoading 为 false)在这种情况下,ChromeBrowser 会使用 GetSourceAsync异步捕获已加载页面的 HTML 内容。()`.
  • IronPDF 集成:捕获的 HTML 内容(html内容)译文将使用 IronPDF 的 HtmlToPdf 功能转换为 PDF 文档。 生成的 PDF 文件保存为 "Output.pdf"。
  • 表格关闭:通过调用`Cef.Shutdown'确保正确关闭 Cef 资源()表格关闭后

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

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

结论

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

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

< 前一页
Npgsql C# .NET(它如何为开发人员工作)
下一步 >
Microsoft Logging C#(对开发者的工作原理)

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >