Cefsharp.WPF.NET Core(開發者的工作原理)
開發人員現在可以使用 CefSharp 將 Chromium 強大的網頁瀏覽器引擎輕鬆整合到他們的 .NET 桌面應用程式和 WPF 應用程式中,CefSharp 是 Chromium Embedded Framework 的創新 .NET wrapper。 透過 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 Package Manager 是安裝 CefSharp 最簡單的方法。
- 在 Visual Studio 中啟動專案。
- 在解決方案總管中,用滑鼠右鍵按一下專案。
- 選擇"管理 NuGet 套件"。
- 前往"瀏覽"標籤,搜尋"CefSharp"。
- 選擇適合您專案的 CefSharp 套件 (CefSharp.Wpf、CefSharp.WinForms等)。
- 若要在您的專案中加入套件,請按一下"安裝"。
CefSharp 的重要性
CefSharp 是一個框架,透過毫不費力地將 Chromium 網頁瀏覽器引擎的強大功能整合到 .NET 應用程式中,改變了開發人員建構桌面應用程式和自動化專案的方式,並整合了網路衝浪功能。 在 CefSharp 的協助下,我們可以顯示遠端網頁內容,包括以 HTML5 支援建立的嵌入式使用者介面。
在 CefSharp 介紹中需要強調的重要事項有
- Chromium Embedded Framework (CEF) 是 CefSharp 的框架,可將 Chromium 瀏覽器的功能整合到其他程式中。 透過使用 Google 的 Chromium 專案,CefSharp 可增強桌面程式的精密網路功能。
- .NET 整合:CefSharp 是 Cef 功能強大的 .NET wrapper。 它讓程式設計師可以輕鬆地使用 C# 或其他 .NET 語言,將快速網頁瀏覽器整合到他們的桌面 .NET 應用程式中。
- 桌面應用程式中的網路衝浪:透過 CefSharp,開發人員可以輕鬆地將網頁瀏覽功能整合到他們的桌面程式中。 此功能為開發人員提供了一個充滿可能性的世界,讓他們能夠將線上資料納入使用者介面,或製作獨特的桌上型電腦應用程式,並將其網路化。 當 JavaScript 事件發生時,它可以接收回呼。
- 豐富的 Web 技術支援:透過使用 CefSharp,開發人員可以利用 Chromium 所提供的所有功能,包括支援 HTML5、CSS3、JavaScript、WebGL 等最新的網頁標準,以及其他現代網頁標準。 這樣才能在桌面程式中加入最尖端的網路技術。
- 彈性與客製化:CefSharp 為開發人員提供了極大的靈活性和客製化可能性,允許他們處理事件、執行 JavaScript、與線上內容互動,以及修改瀏覽器行為以符合特定應用程式的需求。 CefSharp with 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本代碼使用 CefSharp 開發一個基本的 WinForms 應用程式,並內嵌以 Chromium 為基礎的網頁瀏覽器。 以下是解釋:
- 使用
CefSettings初始化 CefSharp 設定。 - ChromiumWebBrowser:這個類別代表 CefSharp 提供的網頁瀏覽器控制。
LoadingStateChanged事件處理瀏覽器的載入狀態變更,例如,當一個頁面完成載入時。MainForm_FormClosing事件可確保 Cef 資源在表單關閉時正確關閉。
如需基本範例,即使用 CefSharp 建立並可編譯的應用程式,請參閱 GitHub 上的最小範例專案。 更複雜的範例專案可在專案的原始碼中找到。
CefSharp 與 IronPDF
將 IronPDF 的 PDF 產生功能與 CefSharp 的 Chromium Embedded Framework (CEF) 瀏覽器整合,需要在 .NET 應用程式中一起使用 CefSharp 和 IronPDF。 然而,截至 2022 年 1 月的最新版本,CefSharp 和 IronPDF 之間沒有直接的開箱即用介面。
CefSharp 的主要目標是將 Chromium 網頁瀏覽器引擎整合到 .NET 程式中,讓線上內容可以透過應用程式的使用者介面顯示與互動。 CefSharp 為 WPF 和 Windows Forms 應用程式提供瀏覽器控制項。
雖然 CefSharp 與 IronPDF 並未直接整合,但開發人員仍可在相同的應用程式情境中使用這兩個函式庫。
IronPDF 擅長於 HTML 至 PDF 的轉換,可確保精確保留原始版面與樣式。 它非常適合從網頁內容(如報告、發票和文件)建立 PDF。 IronPDF 支援 HTML 檔案、URL 和原始 HTML 字串,可輕鬆製作高品質的 PDF 文件。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class安裝 IronPDF
若要取得 IronPDF 函式庫,您需要遵循接下來的步驟。 在套件管理員中輸入以下程式碼:
Install-Package IronPdf
dotnet add package IronPdfInstall-Package IronPdf
dotnet add package IronPdf
另外,您也可以使用 NuGet Package Manager 來搜尋套件"IronPDF"。 從與 IronPDF 相關的所有 NuGet 套件清單中,選擇並下載必要的套件。

在 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本代碼示範了一個簡單的整合,其中截取 Chromium 瀏覽器載入的 HTML 內容,並使用 IronPDF 將其轉換為 PDF 文件。 以下是解釋:
- 初始化 CefSharp 以將 Chromium 瀏覽器整合至 Windows Forms 應用程式。
ChromiumWebBrowser控件:此控制將特定的 URL(在此範例中為"https://ironpdf.com/")載入瀏覽器,並建立一個實例。LoadingStateChanged事件:追蹤瀏覽器的載入進度。 當頁面完成載入時(e.IsLoading為 false),ChromeBrowser 會使用GetSourceAsync()異步擷取已載入頁面的 HTML 內容。- IronPdf 整合:使用 IronPDF 的 HtmlToPdf 功能將擷取的 HTML 內容 (
htmlContent) 轉換成 PDF 文件。 產生的 PDF 會儲存為 "Output.pdf"。 - 表格關閉:在表單關閉後,透過呼叫
Cef.Shutdown()確保 Cef 資源正確關閉。

此程式碼示範了一個簡單的整合,在 Chromium 瀏覽器中載入的 HTML 內容會被截取,然後透過 IronPDF 轉換成 PDF 文件。 根據您應用程式的特定需求,自訂 URL、錯誤處理及其他方面。 如需 IronPdf 文件的更多資訊,請參閱 IronPDF NuGet Package。
結論
IronPdf 與 CefSharp 在 C# 應用程式中的整合,為管理文件和線上資訊開啟了新的可能性。 透過結合 IronPdf 的 PDF 生成功能與 CefSharp 提供的基於 Chromium 的瀏覽器,開發人員可以建立靈活的應用程式,在結合動態網頁內容的同時生成高品質的 PDF 文件。
IronPDF 的 Lite 套裝以 $799 的價格提供,包括一年的軟體維護合約、升級選項、永久授權以及三十天的退款保證。 在三十天的試用期間,使用者可以在真實世界的情境中,使用有水印的試用版來評估產品。 若要瞭解 IronPdf 的成本、授權和免費版本的詳細資訊,請造訪 IronPDF授權資訊。 如需 Iron Software 的進一步資訊,請造訪他們的 Iron Software 網站。
常見問題解答
如何將基於 Chromium 的網頁瀏覽器整合到我的 .NET 桌面應用程式中?
您可以使用 Chromium Embedded Framework 的 .NET wrapper CefSharp,輕鬆地將基於 Chromium 的網頁瀏覽器整合到您的 .NET 桌面應用程式中。這可讓您充分利用 HTML5、CSS3 和 JavaScript 等現代網路技術。
在 WPF 應用程式中設定 CefSharp 有哪些步驟?
要在 WPF 應用程式中設定 CefSharp,首先要在 Visual Studio 中建立一個新專案。使用 NuGet Package Manager 安裝 CefSharp.Wpf 套件,然後設定必要的設定,將 Chromium 瀏覽器嵌入到您的應用程式中。
如何將 Chromium 瀏覽器中呈現的 HTML 內容轉換成 PDF 文件?
若要將在 Chromium 瀏覽器中渲染的 HTML 內容轉換為 PDF,您可以先使用 CefSharp 渲染 HTML,然後再使用 IronPDF 的 HtmlToPdf 函式來產生 PDF 文件。
CefSharp 可以與 .NET 應用程式中的 PDF 產生工具一起使用嗎?
是的,CefSharp 可以與 PDF 生成工具(如 .NET 應用程式中的 IronPDF)一起使用。雖然沒有直接的整合,但您可以利用這兩種工具來呈現 HTML 內容並轉換成 PDF。
將 CefSharp 整合到 .NET 應用程式有什麼好處?
將 CefSharp 整合到 .NET 應用程式可提供多種優點,例如直接在桌面應用程式中顯示現代網路內容並與之互動的能力。它還允許開發人員自訂瀏覽器行為,並使用 HTML5、CSS3 和 JavaScript 等網頁技術。
將 CefSharp 與 .NET 應用程式整合時,如何排除故障?
若要排除與 CefSharp 整合的問題,請確認已正確安裝所有 NuGet 套件,檢查與您的 .NET 版本是否相容,並驗證 Visual Studio 專案中的組態設定。
是否可以在 .NET 應用程式中自訂 Chromium 瀏覽器的行為?
是的,CefSharp 可讓開發人員自訂整合到 .NET 應用程式中的 Chromium 瀏覽器的行為,提供瀏覽器設定的控制,並可使用自訂程式碼擴充功能。
什麼樣的專案可以同時使用 CefSharp 和 IronPDF?
需要顯示動態網頁內容,並從該內容直接產生 PDF 報告或文件的專案,可以同時使用 CefSharp 和 IronPDF。對於需要強大文件管理和網頁內容渲染功能的應用程式來說,這種組合是理想的選擇。







