Cefsharp.WPF.NET Core (Como funciona para desenvolvedores)
Agora, os desenvolvedores podem integrar facilmente o poderoso mecanismo de navegador web do Chromium em seus aplicativos de desktop .NET e aplicativos WPF com o CefSharp, um inovador wrapper .NET em torno do Chromium Embedded Framework. O CefSharp possibilita aos desenvolvedores de aplicativos .NET experiências web avançadas em interfaces de desktop personalizadas, permitindo que eles aproveitem os recursos web e as ferramentas de desenvolvimento do Chromium sem dependências externas. Com sua ampla gama de novos recursos, como opções de personalização e controle sobre o comportamento do navegador, essa estrutura facilita a integração de tecnologias web contemporâneas como HTML5, CSS3 e JavaScript.
As interações e experiências dos usuários com conteúdo baseado na web em soluções para desktop são transformadas pela interoperabilidade multiplataforma e pelos recursos de interação com conteúdo da web do CefSharp, que aprimoram os programas de desktop e possibilitam experiências dinâmicas de navegação na web diretamente no ambiente do aplicativo. Neste artigo, vamos explorar mais a versão de código aberto do CefSharp através de trechos de código.
Como usar o CefSharp
- Crie um novo formulário do Windows a partir do projeto do Visual Studio.
- Instale a biblioteca CefSharp .
- Declare o objeto necessário para o CefSharp que esteja pronto para compilar de forma mínima.
- Insira o URL que precisa ser carregado.
- Execute o código.
Instale o CefSharp.WinForms:
- Usar o Gerenciador de Pacotes NuGet do Visual Studio é o método mais fácil para instalar o CefSharp.
- Inicie o projeto no Visual Studio.
- No Explorador de Soluções, clique com o botão direito do mouse no seu projeto.
- Selecione "Gerenciar pacotes NuGet ".
- Acesse a aba "Procurar" e busque por "CefSharp".
- Selecione o pacote CefSharp (CefSharp.Wpf, CefSharp.WinForms , etc.) mais adequado para o seu projeto.
- Para incluir o pacote em seu projeto, clique em "Instalar".
Importância do CefSharp
CefSharp é um framework que transforma a maneira como os desenvolvedores criam aplicativos desktop e projetos de automação com recursos integrados de navegação na web, integrando facilmente o poder do mecanismo de navegador web Chromium em aplicativos .NET . Com a ajuda do CefSharp, podemos exibir conteúdo web remoto, incluindo interfaces de usuário incorporadas criadas com suporte a HTML5.
Pontos importantes a serem enfatizados em uma introdução ao CefSharp são:
- O Chromium Embedded Framework (CEF) serve como estrutura para o CefSharp, permitindo a integração dos recursos do navegador Chromium em outros programas. Ao utilizar o projeto Chromium do Google, o CefSharp aprimora programas de desktop com recursos sofisticados da web.
- Integração com .NET : CefSharp é um poderoso wrapper .NET para Cef. Isso facilita para os programadores usar C# ou outras linguagens .NET para integrar um navegador web rápido em seus aplicativos .NET para desktop.
- Navegação na Web em aplicativos de desktop: Com o CefSharp, os desenvolvedores podem incorporar facilmente recursos de navegação na Web em seus programas de desktop. Essa funcionalidade oferece um mundo de possibilidades para os desenvolvedores, permitindo que eles incorporem material online em suas interfaces de usuário ou criem aplicativos de desktop exclusivos que sejam compatíveis com a web. Ele pode receber uma função de retorno quando eventos JavaScript são acionados.
- Suporte a tecnologias web avançadas: Ao usar o CefSharp, os desenvolvedores podem aproveitar todos os recursos que o Chromium oferece, incluindo suporte aos padrões web mais recentes, como HTML5, CSS3, JavaScript, WebGL e outros padrões web modernos. Isso possibilita a inclusão de tecnologias web de ponta em programas para desktop. Flexibilidade e personalização: O CefSharp oferece aos desenvolvedores grande flexibilidade e possibilidades de personalização, permitindo que eles manipulem eventos, executem JavaScript, interajam com conteúdo online e modifiquem o comportamento do navegador para atender às necessidades específicas da aplicação. O CefSharp com WebGL, que utiliza OpenGL/DirectX para renderização acelerada por hardware, suporta conteúdo 3D.
Por meio do uso do CefSharp, os desenvolvedores podem aprimorar aplicativos de desktop, facilitando a experiência de navegação na web, incentivando a interação do usuário e fornecendo informações ricas e atualizadas dentro do ambiente do aplicativo.
Código de exemplo:
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
Este código utiliza o CefSharp para desenvolver uma aplicação WinForms básica com um navegador web incorporado baseado no Chromium. Segue uma explicação:
- Inicialize as configurações do CefSharp usando
CefSettings. - ChromiumWebBrowser: Esta classe representa o controle do navegador web fornecido pelo CefSharp.
O evento
LoadingStateChangedlida com as mudanças no estado de carregamento do navegador, por exemplo, quando uma página termina de carregar. O eventoMainForm_FormClosinggarante que os recursos do Cef sejam devidamente desativados após o fechamento do formulário.
Para um exemplo básico, veja o Projeto de Exemplo Mínimo no GitHub , com aplicativos criados usando CefSharp que já podem ser compilados. Exemplos de projetos mais complexos estão disponíveis no código-fonte do projeto.
CefSharp com IronPDF
A integração dos recursos de geração de PDF do IronPDF com o navegador Chromium Embedded Framework (CEF) do CefSharp requer o uso conjunto do CefSharp e do IronPDF em uma aplicação .NET . No entanto, na versão mais recente, de janeiro de 2022, não existe uma interface direta e pronta para uso entre o CefSharp e o IronPDF.
O principal objetivo do CefSharp é integrar o mecanismo do navegador web Chromium em programas .NET , permitindo que o conteúdo online seja exibido e que se possa interagir com ele através da interface do usuário do aplicativo. O CefSharp fornece controles de navegador para aplicativos WPF e Windows Forms.
Embora CefSharp e IronPDF não sejam diretamente integrados, os desenvolvedores ainda podem usar ambas as bibliotecas no mesmo contexto de aplicação.
O IronPDF se destaca na conversão de HTML para PDF , garantindo a preservação precisa dos layouts e estilos originais. É perfeito para criar PDFs a partir de conteúdo da web, como relatórios, faturas e documentação. Com suporte para arquivos HTML, URLs e strings HTML brutas, o IronPDF produz facilmente documentos PDF de alta qualidade.
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
Instale o IronPDF
Para obter a biblioteca IronPDF , você precisa seguir os próximos passos. Insira o seguinte código no Gerenciador de Pacotes:
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf

Alternativamente, você pode usar o Gerenciador de Pacotes NuGet para procurar o pacote "IronPDF". Na lista de todos os pacotes NuGet relacionados ao IronPDF, escolha e baixe o pacote necessário.

Usando o IronPDF no CefSharp em C
Para integrar o IronPDF com o CefSharp em uma aplicação C#, você precisa realizar duas etapas: utilizar o navegador baseado no Chromium fornecido pelo CefSharp para renderizar o conteúdo HTML e, em seguida, usar o IronPDF para converter essas informações HTML em um documento PDF. O exemplo a seguir demonstra como realizar essa integração:
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
Este código demonstra uma integração simples onde o conteúdo HTML carregado no navegador Chromium é interceptado e o IronPDF é usado para transformá-lo em um documento PDF. Eis uma explicação:
- Inicialize o CefSharp para integrar o navegador Chromium em um aplicativo Windows Forms.
ChromiumWebBrowserControle: Este controle carrega uma URL específica (neste exemplo, "https://ironpdf.com/") no navegador e cria uma instância dela.LoadingStateChangedEvento: Monitora o progresso de carregamento do navegador. Quando a página termina de carregar (e.IsLoadingé falso), o ChromeBrowser captura de forma assíncrona o conteúdo HTML da página carregada usandoGetSourceAsync().- Integração com IronPDF : O conteúdo HTML capturado (
htmlContent) é convertido em um documento PDF usando o recurso HtmlToPdf do IronPDF. O PDF gerado é salvo como "Output.pdf". - Encerramento do formulário: Certifique-se de que os recursos do Cef sejam devidamente encerrados chamando
Cef.Shutdown()após o fechamento do formulário.

Este código demonstra uma integração simples onde o conteúdo HTML carregado no navegador Chromium é interceptado e então convertido em um documento PDF usando o IronPDF. Personalize o URL, o tratamento de erros e outros aspectos de acordo com as necessidades específicas da sua aplicação. Para obter mais informações sobre a documentação do IronPDF , consulte o pacote NuGet do IronPDF .
Conclusão
A integração do IronPDF com o CefSharp em uma aplicação C# abre novas possibilidades para o gerenciamento de documentos e informações online. Ao combinar os recursos de geração de PDF do IronPDF com o navegador baseado no Chromium fornecido pelo CefSharp, os desenvolvedores podem criar aplicativos flexíveis capazes de gerar documentos PDF de alta qualidade, incorporando conteúdo web dinâmico.
O pacote Lite do IronPDF está disponível por $799 e inclui um contrato de manutenção de software de um ano, opções de atualização, uma licença permanente e uma garantia de reembolso de trinta dias. Durante o período de teste de trinta dias, os usuários podem avaliar o produto em cenários reais com uma versão de teste com marca d'água. Para saber mais sobre o custo, licenciamento e versão gratuita do IronPDF, visite a página de Informações sobre Licenciamento do IronPDF . Para obter mais informações sobre a Iron Software, visite o site da Iron Software .
Perguntas frequentes
Como posso integrar um navegador web baseado no Chromium em meu aplicativo desktop .NET?
Você pode usar o CefSharp, um wrapper .NET para o Chromium Embedded Framework, para integrar facilmente um navegador web baseado no Chromium em seus aplicativos desktop .NET. Isso permite que você aproveite tecnologias web modernas, como HTML5, CSS3 e JavaScript.
Quais são os passos envolvidos na configuração do CefSharp em uma aplicação WPF?
Para configurar o CefSharp em uma aplicação WPF, comece criando um novo projeto no Visual Studio. Use o Gerenciador de Pacotes NuGet para instalar o pacote CefSharp.Wpf e, em seguida, configure as definições necessárias para incorporar o navegador Chromium à sua aplicação.
Como faço para converter conteúdo HTML renderizado em um navegador Chromium para um documento PDF?
Para converter conteúdo HTML renderizado em um navegador Chromium para PDF, você pode primeiro renderizar o HTML usando o CefSharp e, em seguida, usar a função HtmlToPdf do IronPDF para gerar um documento PDF.
O CefSharp pode ser usado em conjunto com ferramentas de geração de PDF em uma aplicação .NET?
Sim, o CefSharp pode ser usado em conjunto com ferramentas de geração de PDF como o IronPDF em uma aplicação .NET. Embora não haja integração direta, você pode utilizar ambos para renderizar conteúdo HTML e convertê-lo em PDFs.
Quais são os benefícios de integrar o CefSharp em uma aplicação .NET?
A integração do CefSharp em uma aplicação .NET oferece benefícios como a capacidade de exibir e interagir com conteúdo web moderno diretamente em aplicações desktop. Também permite que os desenvolvedores personalizem o comportamento do navegador e utilizem tecnologias web como HTML5, CSS3 e JavaScript.
Como posso solucionar problemas ao integrar o CefSharp com um aplicativo .NET?
Para solucionar problemas com a integração do CefSharp, certifique-se de que todos os pacotes NuGet estejam instalados corretamente, verifique a compatibilidade com a sua versão do .NET e verifique as configurações do seu projeto no Visual Studio.
É possível personalizar o comportamento do navegador Chromium em uma aplicação .NET?
Sim, o CefSharp permite que os desenvolvedores personalizem o comportamento do navegador Chromium integrado a um aplicativo .NET, oferecendo controle sobre as configurações do navegador e a capacidade de estender a funcionalidade com código personalizado.
Que tipo de projetos se beneficiam do uso conjunto de CefSharp e IronPDF?
Projetos que exigem a exibição de conteúdo web dinâmico e a geração de relatórios ou documentação em PDF diretamente a partir desse conteúdo se beneficiam do uso conjunto do CefSharp e do IronPDF. Essa combinação é ideal para aplicações que necessitam de recursos robustos de gerenciamento de documentos e renderização de conteúdo web.




