Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Los desarrolladores ya pueden integrar fácilmente el potente motor del navegador web Chromium en sus aplicaciones .NET de escritorio y WPF con CefSharp, una ingeniosa envoltura .NET en torno a Chromium Embedded Framework. CefSharp hace posible que los desarrolladores de aplicaciones .NET disfruten de experiencias web enriquecidas dentro de interfaces de escritorio personalizadas, lo que les permite aprovechar las funciones web y las herramientas de desarrollo de Chromium sin dependencias externas. 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 contenidos basados en web en soluciones de escritorio se transforman gracias a la interoperabilidad entre plataformas y las capacidades de interacción con contenidos web de CefSharp, que elevan los programas de escritorio y permiten experiencias dinámicas de navegación web directamente en el entorno de la aplicación. En este artículo, vamos a ver más sobre la versión de código abierto de CefSharp utilizando fragmentos de código.
Cree un nuevo formulario de Windows desde el proyecto de Visual Studio.
Instale la biblioteca CefSharp.
Declarar el objeto necesario para CefSharp que está listo para compilar mínimamente.
Introduzca la URL que debe cargarse.
Ejecuta el código.
Instalar CefSharp.WinForms:
CefSharp es un marco de trabajo que transforma la forma en que los desarrolladores construyen aplicaciones de escritorio y proyectos de automatización con capacidades integradas de navegación web, integrando sin esfuerzo la potencia del motor de navegación web de Chromium en las aplicaciones .NET. Con la ayuda de CefSharp, podemos mostrar contenido web remoto, incluyendo UI incrustada construida con soporte HTML5.
Las cosas importantes a destacar en una introducción CefSharp son:
Flexibilidad y personalización: CefSharp ofrece a los desarrolladores una gran flexibilidad y posibilidades de personalización, permitiéndoles manejar eventos, ejecutar JavaScript, interactuar con contenidos en línea y modificar el comportamiento del navegador para adaptarlo a las necesidades particulares de la aplicación. CefSharp con WebGL, que aprovecha OpenGL/DirectX para el renderizado acelerado por hardware, admite contenidos 3D.
Mediante el uso de CefSharp, los desarrolladores pueden mejorar las aplicaciones de escritorio facilitando las experiencias de navegación web, fomentando la interacción del usuario y proporcionándole información rica y actual dentro del entorno de la aplicación.
Código de muestra:
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 CefSharp para desarrollar una aplicación WinForms básica con un navegador web embebido basado en Chromium. He aquí una explicación:
El evento MainForm_FormClosing garantiza que los recursos del Cef se cierren correctamente al cerrar el formulario.
Para ver un ejemplo básico de aplicaciones creadas con CefSharp listas para compilar, consulte la páginaProyecto de ejemplo mínimo en GitHub. En el código fuente del proyecto hay disponibles proyectos de ejemplo más complicados.
Integración deIronPDFcon Chromium Embedded Framework de CefSharp.(CEF) requiere el uso conjunto de CefSharp e IronPDF en una aplicación .NET. Sin embargo, a partir de la versión más reciente de enero de 2022, no existe una interfaz directa entre CefSharp e IronPDF.
El objetivo principal de CefSharp es integrar el motor del navegador web Chromium en programas .NET, lo que permite mostrar contenidos en línea e interactuar con ellos 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 se integran directamente, los desarrolladores pueden utilizar ambas bibliotecas en el mismo contexto de aplicación.
Para adquirir la biblioteca IronPDF, debe seguir los siguientes pasos. Introduzca el siguiente código en el Gestor de paquetes:
Install-Package IronPdf
dotnet add package IronPdf
También puede utilizar el gestor de paquetes NuGet para buscar el paquete "IronPDF". En la lista de todos los paquetes NuGet relacionados con IronPDF, elija y descargue el paquete necesario.
Para integrar IronPDF con CefSharp en una aplicación C#, es necesario realizar dos pasos: utilizar el navegador basado en Chromium proporcionado por CefSharp para renderizar contenido HTML y, a continuación, utilizar IronPDF para convertir esa información HTML en un documento PDF. El siguiente ejemplo muestra cómo realizar 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 Namespace
Este código demuestra una integración sencilla en la que se intercepta el contenido HTML cargado en el navegador Chromium y se utiliza IronPDF para transformarlo en un documento PDF. He aquí una explicación:
ChromiumWebBrowser
: Este control carga una URL específica(en este ejemplo, "https://ironpdf.com/") en el navegador y crea una instancia del mismo.LoadingStateChanged
: Rastrea el progreso de carga del navegador. Cuando la página termine de cargarse(e.IsLoading es falso)ChromeBrowser captura de forma asíncrona el contenido HTML de la página cargada mediante GetSourceAsync()
.Cierre del formulario: Asegúrese de que los recursos del Cef se cierran 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. Personalice la URL, la gestión de errores y otros aspectos en función de las necesidades específicas de su aplicación. Para obtener más información sobre la documentación de IronPDF, consulte el documentoPaquete NuGet IronPDF.
La integración de IronPDF con CefSharp en una aplicación C# abre nuevas posibilidades para la gestión de documentos e información en línea. Al combinar las funciones de generación de PDF de IronPDF con el navegador basado en Chromium que proporciona CefSharp, los desarrolladores pueden crear aplicaciones flexibles capaces de generar documentos PDF de alta calidad al tiempo que incorporan contenido web dinámico.
El paquete Lite de IronPDF está disponible por $749 e incluye un contrato de mantenimiento del software de un año, opciones de actualización, una licencia permanente y una garantía de devolución del dinero de treinta días. Durante el periodo de prueba de treinta días, los usuarios pueden evaluar el producto en situaciones reales con una versión de prueba con marca de agua. Para obtener más información sobre el coste, las licencias y la versión gratuita de IronPDF, visite la páginaInformación sobre licencias de IronPDF. Para más información sobre Iron Software, visite su sitio webSitio web de Iron Software.
9 productos API .NET para sus documentos de oficina