.NET 幫助

Cefsharp.WPF.NET Core(開發人員如何運作)

發佈 2024年1月27日
分享:

簡介

開發人員現在可以輕鬆地將 Chromium 強大的網頁瀏覽器引擎整合到他們的 .NET 桌面應用程序和 WPF 應用程序中,這要歸功於 CefSharp,這是一個創新的 .NET 包裝器圍繞 Chromium Embedded Framework。CefSharp 為 .NET 應用程序開發人員提供了豐富的網頁體驗,使他們能夠利用 Chromium 的網頁功能和開發者工具,且無需任何外部依賴。通過它的廣泛新功能,例如自訂選項和對瀏覽器行為的控制,這個框架使得整合現代網頁技術如 HTML5、CSS3 和 JavaScript 更加容易。

CefSharp 的跨平台互操作性和網頁內容互動功能改善了使用者對桌面解決方案中網頁內容的互動和體驗,提升桌面程序,並在應用程序環境內提供動態的網頁瀏覽體驗。在本文中,我們將通過代碼片段了解更多關於 CefSharp 的開源版本。

如何使用 CefSharp

  1. 從 Visual Studio 專案中創建一個新的 Windows Form。

  2. 安裝 CefSharp 庫。

  3. 宣告 CefSharp 所需的對象,以準備最低限度的編譯。

  4. 輸入需要加載的 URL。

  5. 運行代碼。

安裝 CefSharp.WinForms:

  • 使用 Visual Studio 的 NuGet 套件管理器是安裝 CefSharp 的最簡單方法。
  • 在 Visual Studio 中啟動專案。
  • 在方案資源管理器中,右鍵點擊您的專案。
  • 選擇“管理 NuGet 套件”。
  • 前往“瀏覽”選項卡,搜索“CefSharp”。
  • 選擇 CefSharp 套件。 (CefSharp.Wpf CefSharp.WinForms等等。) 適合您的專案。
  • 要將套件包含在您的專案中,請點擊「安裝」。

CefSharp的重要性

CefSharp 是一個透過將Chromium網頁瀏覽器引擎的強大功能無縫整合到.NET應用程式中,改變開發人員構建桌面應用程式和自動化項目的框架。藉由CefSharp的幫助,我們可以顯示遠端網頁內容,包括以HTML5支持構建的嵌入式用戶界面。

在介紹CefSharp時需要強調的重要事項有:

  • Chromium嵌入式框架 (CEF) 作為CefSharp的框架,CefSharp 使得整合Chromium瀏覽器的功能到其他程序中。通過使用Google的Chromium項目,CefSharp為桌面程序增強了先進的網頁功能。
  • .NET 集成:CefSharp 是 Cef 的一個強大的 .NET 包裝器。它使程序員能夠輕鬆使用C#或其他 .NET 語言將快速的網頁瀏覽器整合到他們的桌面 .NET 應用程序中。
  • 桌面應用中的網頁瀏覽:通過CefSharp,開發人員可以輕鬆地將網頁瀏覽功能整合到他們的桌面程序中。這一功能為開發人員提供了無盡的可能性,使他們能夠將在線內容整合到其用戶界面中,或者製作具有網絡功能的獨特桌面應用程序。它可以在JavaScript事件觸發時接收回調。
  • 豐富的網頁技術支持:通過使用CefSharp,開發人員可以利用Chromium提供的所有功能,包括支持最新的網頁標準,例如HTML5、CSS3、JavaScript、WebGL和其他現代網頁標準。這使得在桌面程序中包含尖端的網頁技術成為可能。
  • 靈活性和自定義:CefSharp 為開發人員提供了大量的靈活性和自定義選項,使他們能夠處理事件、執行JavaScript、與網上內容互動並根據特定應用程序需求修改瀏覽器行為。CefSharp 支援 WebGL,它利用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開發一個基於Chromium的嵌入式網頁瀏覽器的基本WinForms應用程式。以下是說明:

  • 使用CefSettings初始化CefSharp設置。
  • ChromiumWebBrowser:此類別代表CefSharp提供的網頁瀏覽器控制項。
  • LoadingStateChanged事件處理瀏覽器的載入狀態變化,例如當一個頁面完成載入時。
  • MainForm_FormClosing事件確保在表單關閉時正確關閉Cef資源。

如需簡單示例,請參閱使用CefSharp構建的準備編譯的應用程式,參見 專案更複雜的示例項目可在項目的源代碼中找到。

CefSharp 與 IronPDF

整合 IronPDF將 PDF 生成功能與 CefSharp 的 Chromium 嵌入式框架結合 (CEF) 瀏覽器需要在.NET應用程式中同時使用CefSharp和IronPDF。然而,根據2022年1月的最新版本,目前沒有CefSharp和IronPDF之間直接現成的介面。

CefSharp的主要目標是將Chromium網頁瀏覽器引擎整合到.NET程式中,讓在線內容可以通過應用程式的用戶界面來顯示和互動。CefSharp為WPF和Windows Forms應用提供瀏覽器控制項。

雖然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

在C#應用程式中使用 IronPDF 於 CefSharp

要在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 Forms應用程式中。
  • ChromiumWebBrowser控制項:該控制項載入特定的URL (在此範例中,"https://ironpdf.com/") 到瀏覽器並建立它的一個實例。
  • LoadingStateChanged 事件:追蹤瀏覽器的加載進度。當頁面加載完成時 (e.IsLoading 為 false),ChromeBrowser 使用 GetSourceAsync 異步捕獲已加載頁面的 HTML 內容()`.
  • IronPDF 集成:捕获的 HTML 内容 (htmlContent) 轉換成PDF文件是通過IronPDF的HtmlToPdf功能完成的。生成的PDF文件會儲存為「Output.pdf」。
  • 表單關閉:確保正確關閉Cef資源,透過呼叫 Cef.Shutdown。()` 在表單關閉後。

CefSharp.Wpf.NetCore(對於開發者的運作方式):圖 3 - 輸出

此代碼展示了一個簡單的整合,其中在Chromium瀏覽器中加載的HTML內容被攔截,然後使用IronPDF轉換成PDF文件。根據您的應用需求,定製URL、錯誤處理和其他方面的設定。更多有關IronPDF文檔的資訊,請參閱 這裡.

結論

將IronPDF與CefSharp集成到C#應用程式中,為管理文件和在線資訊打開了新的可能性。通過結合IronPDF的PDF生成功能和CefSharp提供的基於Chromium的瀏覽器,開發人員可以創建靈活的應用程式,這些應用程式可以生成高品質的PDF文檔,同時合并動態的網頁內容。

IronPDF的Lite方案售價為$749,包括一年的軟件維護合約、升級選項、永久許可以及三十天退款保證。在三十天試用期內,用戶可以使用帶水印的試用版本在實際情境中評估產品。欲了解更多關於IronPDF的價格、許可和免費版本的資訊,請訪問 連結有關Iron Software的更多資訊,請訪問他們的 網站.

< 上一頁
Npgsql C# .NET(開發人員如何使用)
下一個 >
Microsoft 日誌記錄 C#(開發者如何運作)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >