Cefsharp.WPF.NET Core (Cómo funciona para desarrolladores)
Los desarrolladores ahora pueden integrar fácilmente el potente motor de navegador web de Chromium en sus aplicaciones de escritorio .NET y aplicaciones WPF con CefSharp, un innovador contenedor .NET alrededor del Chromium Embedded Framework. Las experiencias web ricas dentro de interfaces de escritorio personalizadas son posibles para los desarrolladores de aplicaciones .NET gracias a CefSharp, que les permite aprovechar las características web de Chromium y las herramientas para desarrolladores sin ninguna dependencia externa. Con su amplia gama de nuevas características, como opciones de personalización y control sobre el comportamiento del navegador, este marco facilita la integración de tecnologías web contemporáneas como HTML5, CSS3 y JavaScript.
Las interacciones y experiencias de los usuarios con contenido basado en la web en soluciones de escritorio son transformadas por la interoperabilidad multiplataforma de CefSharp y las capacidades de interacción con el contenido web, que elevan los programas de escritorio y permiten experiencias de navegación dinámica directamente dentro del entorno de la aplicación. En este artículo, vamos a ver más sobre la versión de código abierto de CefSharp usando fragmentos de código.
Cómo usar CefSharp
- Crear un nuevo Formulario de Windows desde el Proyecto de Visual Studio.
- Instalar la biblioteca CefSharp.
- Declarar el objeto requerido para CefSharp que esté listo para compilar mínimamente.
- Introducir la URL que necesita cargarse.
- Ejecutar el código.
Instalar CefSharp.WinForms:
- Usar el Administrador de Paquetes NuGet de Visual Studio es el método más fácil para instalar CefSharp.
- Lanzar el proyecto en Visual Studio.
- En el Explorador de Soluciones, hacer clic derecho en tu proyecto.
- Elegir "Administrar Paquetes NuGet".
- Ir a la pestaña "Examinar" y buscar "CefSharp".
- Seleccionar el paquete CefSharp (CefSharp.Wpf, CefSharp.WinForms, etc.) que sea apropiado para tu proyecto.
- Para incluir el paquete en tu proyecto, haz clic en "Instalar".
Importancia de CefSharp
CefSharp es un marco que transforma la forma en que los desarrolladores construyen aplicaciones de escritorio y proyectos de automatización con capacidades de navegación web integradas al integrar sin esfuerzo el poder del motor de navegador web de Chromium en aplicaciones .NET. Con la ayuda de CefSharp, podemos mostrar contenido web remoto, incluyendo interfaces de usuario integradas con soporte para HTML5.
Aspectos importantes a enfatizar en una introducción a CefSharp son:
- El Chromium Embedded Framework (CEF) sirve como el marco para CefSharp, permitiendo la integración de las características del navegador Chromium en otros programas. Usando el proyecto Chromium de Google, CefSharp mejora los programas de escritorio con características web sofisticadas.
- Integración .NET: CefSharp es un potente contenedor .NET para Cef. Facilita a los programadores el uso de C# u otros lenguajes .NET para integrar un navegador web rápido en sus aplicaciones de escritorio .NET.
- Navegación web en Aplicaciones de Escritorio: Con CefSharp, los desarrolladores pueden incorporar fácilmente características de navegación web en sus programas de escritorio. Esta característica abre un mundo de posibilidades para los desarrolladores, permitiéndoles incorporar material en línea en sus interfaces de usuario o crear aplicaciones de escritorio únicas que estén habilitadas para la web. Puede recibir un callback cuando se disparen eventos de JavaScript.
- Soporte para Tecnologías Web Ricas: Al usar CefSharp, los desarrolladores pueden aprovechar todas las capacidades que Chromium ofrece, incluyendo soporte para los estándares web más nuevos como HTML5, CSS3, JavaScript, WebGL y otros estándares web modernos. Esto hace posible incluir tecnologías web de vanguardia en programas de escritorio.
- Flexibilidad y Personalización: CefSharp proporciona a los desarrolladores una gran cantidad de flexibilidad y opciones de personalización, permitiéndoles manejar eventos, ejecutar JavaScript, interactuar con contenido en línea y modificar el comportamiento del navegador para satisfacer necesidades específicas de la aplicación. CefSharp con WebGL, que utiliza OpenGL/DirectX para el renderizado acelerado por hardware, soporta contenido 3D.
Mediante el uso de CefSharp, los desarrolladores pueden mejorar las aplicaciones de escritorio facilitando experiencias de navegación web, alentando la interacción del usuario y proporcionando a los usuarios información rica y moderna dentro del entorno de la aplicación.
Código de Ejemplo:
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 NamespaceEste código usa CefSharp para desarrollar una aplicación básica de WinForms con un navegador web integrado basado en Chromium. Aquí hay una explicación:
- Inicializar la configuración de CefSharp usando
CefSettings. - ChromiumWebBrowser: Esta clase representa el control de navegador web proporcionado por CefSharp.
- El evento
LoadingStateChangedmaneja los cambios en el estado de carga del navegador, por ejemplo, cuando una página termina de cargar. - El evento
MainForm_FormClosingasegura que los recursos de Cef se apaguen correctamente al cerrar el formulario.
Para un ejemplo básico, se pueden ver las aplicaciones construidas usando CefSharp que están listas para compilar en el Proyecto de Ejemplo Mínimo en GitHub. Proyectos de ejemplo más complicados están disponibles en la fuente del proyecto.
CefSharp con IronPDF
Integrar las capacidades de generación de PDF de IronPDF con el navegador del Chromium Embedded Framework (CEF) de CefSharp requiere usar CefSharp e IronPDF juntos en una aplicación .NET. Sin embargo, a partir de la versión más reciente en enero de 2022, no hay una interfaz directa y lista entre CefSharp e IronPDF.
El objetivo principal de CefSharp es integrar el motor de navegador web de Chromium en programas .NET, permitiendo que el contenido en línea se visualice e interactúe a través de la interfaz de usuario de la aplicación. CefSharp proporciona controles de navegador para aplicaciones WPF y Windows Forms.
Aunque CefSharp e IronPDF no están integrados directamente, los desarrolladores aún pueden usar ambas bibliotecas dentro del mismo contexto de aplicación.
IronPDF se destaca en la conversión de HTML a PDF, asegurando la preservación precisa de los diseños y estilos originales. Es perfecto para crear PDFs a partir de contenido basado en la web como informes, facturas y documentación. Con soporte para archivos HTML, URLs y cadenas HTML en bruto, IronPDF produce fácilmente documentos PDF de alta calidad.
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 ClassInstalar IronPDF
Para adquirir la biblioteca IronPDF, necesitas seguir los siguientes pasos. Introduce el siguiente código en el Administrador de Paquetes:
Install-Package IronPdf
dotnet add package IronPdfInstall-Package IronPdf
dotnet add package IronPdf
Alternativamente, puedes usar el Administrador de Paquetes NuGet para buscar el paquete "IronPDF". De la lista de todos los paquetes NuGet relacionados con IronPDF, elige y descarga el paquete necesario.

Uso de IronPDF en CefSharp C#
Para integrar IronPDF con CefSharp en una aplicación C#, necesitas realizar dos pasos: utilizar el navegador basado en Chromium proporcionado por CefSharp para renderizar contenido HTML y luego usar IronPDF para convertir esa información HTML en un documento PDF. El siguiente ejemplo demuestra cómo lograr esta integración:
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 NamespaceEste código demuestra una integración simple donde el contenido HTML cargado en el navegador Chromium se intercepta, y se usa IronPDF para transformarlo en un documento PDF. Aquí hay una explicación:
- Inicializar CefSharp para integrar el navegador Chromium en una aplicación de Windows Forms.
- Control
ChromiumWebBrowser: Este control carga una URL específica (en este ejemplo, "https://ironpdf.com/") en el navegador y crea una instancia de él. - Evento
LoadingStateChanged: Rastrear el progreso de carga del navegador. Cuando la página termina de cargar (e.IsLoadinges falso), el ChromeBrowser captura asincrónicamente el contenido HTML de la página cargada usandoGetSourceAsync(). - Integración de IronPDF: El contenido HTML capturado (
htmlContent) se convierte en un documento PDF usando la capacidad HtmlToPdf de IronPDF. El PDF generado se guarda como "Output.pdf". - Cierre del Formulario: Asegúrate de que los recursos de Cef se apaguen correctamente llamando a
Cef.Shutdown()después de cerrar el formulario.

Este código demuestra una integración simple donde el contenido HTML cargado en el navegador Chromium es interceptado y luego convertido en un documento PDF usando IronPDF. Personaliza la URL, el manejo de errores y otros aspectos según las necesidades específicas de tu aplicación. Para más información sobre la documentación de IronPDF, por favor consulta el Paquete NuGet de IronPDF.
Conclusión
La integración de IronPDF con CefSharp en una aplicación C# abre nuevas posibilidades para gestionar documentos e información en línea. Al combinar las características de generación de PDF de IronPDF con el navegador basado en Chromium proporcionado por CefSharp, los desarrolladores pueden crear aplicaciones flexibles que pueden generar documentos PDF de alta calidad mientras incorporan contenido web dinámico.
El paquete Lite de IronPDF está disponible por $799 e incluye un contrato de mantenimiento de software de un año, opciones de actualización, una licencia permanente y una garantía de devolución de dinero de treinta días. Durante el período de prueba de treinta días, los usuarios pueden evaluar el producto en escenarios del mundo real con una versión de prueba con marca de agua. Para saber más sobre el costo, las licencias y la versión gratuita de IronPDF, visita la Información de Licencias de IronPDF. Para más información sobre Iron Software, por favor visita su Sitio Web de Iron Software.
Preguntas Frecuentes
¿Cómo puedo integrar un navegador web basado en Chromium en mi aplicación de escritorio .NET?
Puedes utilizar CefSharp, un contenedor de .NET alrededor del Chromium Embedded Framework, para integrar fácilmente un navegador web basado en Chromium en tus aplicaciones de escritorio .NET. Esto te permite aprovechar tecnologías web modernas como HTML5, CSS3 y JavaScript.
¿Qué pasos están involucrados en la configuración de CefSharp en una aplicación WPF?
Para configurar CefSharp en una aplicación WPF, comienza creando un nuevo proyecto en Visual Studio. Usa el Administrador de Paquetes NuGet para instalar el paquete CefSharp.Wpf y luego configura los ajustes necesarios para incrustar el navegador Chromium en tu aplicación.
¿Cómo convierto contenido HTML renderizado en un navegador Chromium a un documento PDF?
Para convertir contenido HTML renderizado en un navegador Chromium a PDF, primero puedes renderizar el HTML usando CefSharp y luego utilizar la función HtmlToPdf de IronPDF para generar un documento PDF.
¿Se puede utilizar CefSharp junto con herramientas de generación de PDF en una aplicación .NET?
Sí, CefSharp puede usarse junto con herramientas de generación de PDF como IronPDF dentro de una aplicación .NET. Aunque no hay una integración directa, puedes utilizar ambos para renderizar contenido HTML y convertirlo en PDFs.
¿Cuáles son los beneficios de integrar CefSharp en una aplicación .NET?
Integrar CefSharp en una aplicación .NET proporciona beneficios como la capacidad de mostrar e interactuar con contenido web moderno directamente dentro de aplicaciones de escritorio. También permite a los desarrolladores personalizar el comportamiento del navegador y utilizar tecnologías web como HTML5, CSS3 y JavaScript.
¿Cómo puedo solucionar problemas al integrar CefSharp con una aplicación .NET?
Para solucionar problemas con la integración de CefSharp, asegúrate de que todos los paquetes de NuGet estén correctamente instalados, verifica la compatibilidad con tu versión .NET y confirma la configuración en tu proyecto de Visual Studio.
¿Es posible personalizar el comportamiento del navegador Chromium en una aplicación .NET?
Sí, CefSharp permite a los desarrolladores personalizar el comportamiento del navegador Chromium integrado en una aplicación .NET, ofreciendo control sobre la configuración del navegador y la capacidad de extender funcionalidades con código personalizado.
¿Qué tipo de proyectos se benefician del uso combinado de CefSharp e IronPDF?
Proyectos que requieren mostrar contenido web dinámico y generar informes o documentación PDF directamente desde ese contenido se benefician del uso combinado de CefSharp e IronPDF. Esta combinación es ideal para aplicaciones que necesitan una gestión robusta de documentos y capacidades de renderización de contenido web.








