AYUDA .NET

Cefsharp.WPF.NET Core (Cómo Funciona Para Desarrolladores)

Publicado en 27 de enero, 2024
Compartir:

Introducción

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.

Cómo utilizar CefSharp

  1. Cree un nuevo formulario de Windows desde el proyecto de Visual Studio.

  2. Instale la biblioteca CefSharp.

  3. Declarar el objeto necesario para CefSharp que está listo para compilar mínimamente.

  4. Introduzca la URL que debe cargarse.

  5. Ejecuta el código.

    Instalar CefSharp.WinForms:

    • El método más sencillo para instalar CefSharp es utilizar el gestor de paquetes NuGet de Visual Studio.
    • Inicie el proyecto en Visual Studio.
    • En el Explorador de soluciones, haga clic con el botón derecho en su proyecto.
    • Seleccione "Gestionar paquetes NuGet".
    • Vaya a la pestaña "Examinar" y busque "CefSharp".
    • Seleccione el paquete CefSharp(CefSharp.Wpf,CefSharp.WinFormsetc.) adecuado para su proyecto.
    • Para incluir el paquete en su proyecto, haga clic en "Instalar".

Importancia de CefSharp

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:

  • El marco integrado de Chromium(CEF) sirve de marco para CefSharp, permitiendo la integración de las características del navegador Chromium en otros programas. Al utilizar el proyecto Chromium de Google, CefSharp mejora los programas de escritorio con sofisticadas funciones web.
  • Integración .NET: CefSharp es un potente envoltorio .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 .NET de escritorio.
  • Navegación web en aplicaciones de escritorio: Con CefSharp, los desarrolladores pueden incorporar fácilmente funciones de navegación web en sus programas de escritorio. Esta función ofrece un mundo de posibilidades a los desarrolladores, ya que les permite incorporar material en línea a sus interfaces de usuario o crear aplicaciones de escritorio exclusivas compatibles con la web. Puede recibir una llamada de retorno cuando se disparan eventos JavaScript.
  • Soporte para tecnologías web avanzadas: Mediante el uso de CefSharp, los desarrolladores pueden hacer uso de todas las capacidades que Chromium tiene para ofrecer, incluyendo soporte para los estándares web más recientes como HTML5, CSS3, JavaScript, WebGL y otros estándares web modernos. Esto permite incluir tecnologías web de vanguardia en programas de escritorio.
  • 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
VB   C#

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:

  • Inicializa la configuración de CefSharp utilizando CefSettings.
  • ChromiumWebBrowser: Esta clase representa el control del navegador web proporcionado por CefSharp.
  • El evento LoadingStateChanged maneja los cambios de estado de carga del navegador, por ejemplo, cuando una página termina de cargarse.
  • 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.

CefSharp con IronPDF

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.

Instalar IronPDF

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

CefSharp.Wpf.NetCore(Cómo funciona para desarrolladores): Figura 1 - Instalar 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.

CefSharp.Wpf.NetCore(Cómo funciona para desarrolladores): Figura 2 - IronPDF

Uso de IronPDF en C# CefSharp

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
VB   C#

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:

  • Inicializa CefSharp para integrar el navegador Chromium en una aplicación Windows Forms.
  • Control ChromiumWebBrowser: Este control carga una URL específica(en este ejemplo, "https://ironpdf.com/") en el navegador y crea una instancia del mismo.
  • Evento 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().
  • Integración de IronPDF: El contenido HTML capturado(Contenido) se convierte en un documento PDF mediante la función HtmlToPdf de IronPDF. El PDF generado se guarda como "Salida.pdf".
  • Cierre del formulario: Asegúrese de que los recursos del Cef se cierran correctamente llamando a Cef.Shutdown() después de cerrar el formulario.

    CefSharp.Wpf.NetCore(Cómo funciona para desarrolladores): Figura 3 - Salida

    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.

Conclusión

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.

< ANTERIOR
Npgsql C# .NET (Cómo funciona para desarrolladores)
SIGUIENTE >
Registro de Microsoft C# (Cómo Funciona para Desarrolladores)

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >