.NET 幫助

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

發佈 2024年1月27日
分享:

介紹

開發人員現在可以輕鬆地將 Chromium 強大的網頁瀏覽器引擎整合到他們的 .NET 桌面應用程式和 WPF 應用程式中,這要歸功於 CefSharp,一個創新的 Chromium Embedded Framework 的 .NET 包裝器。 CefSharp 使 .NET 應用程式開發者能夠在自定義桌面介面內實現豐富的網頁體驗,讓他們能夠利用 Chromium 的網頁功能和開發者工具,且無需任何外部依賴。 憑藉其廣泛的新功能,例如自訂選項和對瀏覽器行為的控制,這個框架使整合現代網頁技術如HTML5、CSS3和JavaScript變得更加簡單。

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

如何使用CefSharp

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

  2. 安裝程式庫 CefSharp

  3. 宣告 CefSharp 所需的物件,準備以最低需求進行編譯。

  4. 輸入需要載入的網址。

  5. 運行程式碼。

    安裝 CefSharp.WinForms

    • 使用 Visual Studio 的 NuGet 套件管理器是安裝 CefSharp 最簡單的方法。
    • 在 Visual Studio 中啟動專案。
    • 在方案總管中,右鍵點擊您的專案。
    • 選擇「管理 NuGet 套件」。
    • 前往「瀏覽」標籤並搜尋「CefSharp」。
    • 選擇 CefSharp 套件(CefSharp.WpfCefSharp.WinForms等等。)適合您的專案。
    • 若要在您的專案中包含該套件,請點擊「安裝」。

CefSharp 的重要性

CefSharp是一個框架,改變了開發人員建構桌面應用程式和自動化專案的方式,透過將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、與在線內容互動,並修改瀏覽器行為以滿足特定的應用程序需求。 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 構建並準備編譯的應用程式可參考GitHub 上的簡單範例專案. 項目的來源中提供了更複雜的範例專案。

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

在 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 Forms 應用程式中。
  • ChromiumWebBrowser 控制:此控制加載特定的 URL(在此範例中,"https://ironpdf.com/")進入瀏覽器並創建其實例
  • LoadingStateChanged 事件:跟蹤瀏覽器的載入進度。 頁面加載完成時(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文檔。 根據您的應用程式特定需求自訂網址、錯誤處理和其他方面。 如需有關IronPDF文件的更多信息,請參閱IronPDF NuGet 套件.

結論

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

IronPDF 的 Lite 套件售價為 $749,包括一年的軟體維護合約、升級選項、永久授權和三十天退款保證。 在三十天的試用期內,用戶可以使用帶有水印的試用版在實際場景中評估產品。 要了解有關 IronPDF 的成本、許可和免費版本的更多資訊,請造訪IronPDF Licensing Information. 如需有關 Iron Software 的更多資訊,請造訪他們的Iron Software 網站.

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

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

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >