AIDE .NET

Cefsharp.WPF .NET Core (Comment ça fonctionne pour les développeurs)

Introduction

Les développeurs peuvent désormais intégrer facilement le puissant moteur de navigation Web de Chromium dans leurs applications de bureau .NET et WPF grâce à CefSharp, un wrapper .NET inventif autour du Chromium Embedded Framework. Des expériences web riches au sein d'interfaces de bureau personnalisées sont rendues possibles pour les développeurs d'applications .NET grâce à CefSharp, qui leur permet d'exploiter les fonctionnalités web et les outils de développement de Chromium sans aucune dépendance externe. Avec son large éventail de nouvelles fonctionnalités telles que les options de personnalisation et la maîtrise du comportement du navigateur, ce cadre facilite l'intégration des technologies web contemporaines telles que HTML5, CSS3 et JavaScript.

Les interactions et les expériences des utilisateurs avec le contenu web dans les solutions de bureau sont transformées par l'interopérabilité multiplateforme de CefSharp et les capacités d'interaction avec le contenu web, qui élèvent les programmes de bureau et permettent des expériences dynamiques de navigation sur le web au sein même de l'environnement de l'application. Dans cet article, nous allons en savoir plus sur la version open-source de CefSharp en utilisant des extraits de code.

Comment utiliser CefSharp

  1. Créez un nouveau formulaire Windows à partir du projet Visual Studio.

  2. Installez la bibliothèque CefSharp.

  3. Déclarez l'objet requis pour CefSharp qui est prêt à être compilé de manière minimale.

  4. Saisissez l'URL à charger.

  5. Exécutez le code.

    Installer CefSharp.WinForms :

    • L'utilisation du gestionnaire de paquets NuGet de Visual Studio est la méthode la plus simple pour installer CefSharp.
    • Lancez le projet dans Visual Studio.
    • Dans l'explorateur de solutions, cliquez avec le bouton droit de la souris sur votre projet.
    • Choisissez "Manage NuGet Packages".
    • Allez dans l'onglet "Parcourir" et recherchez "CefSharp".
    • Sélectionnez le package CefSharp (CefSharp.Wpf, CefSharp.WinForms, etc.) qui est approprié pour votre projet.
    • Pour inclure le paquet dans votre projet, cliquez sur "Installer".

Importance de CefSharp

CefSharp est un framework qui transforme la manière dont les développeurs construisent des applications de bureau et des projets d'automatisation avec des capacités de navigation web intégrées en intégrant facilement la puissance du moteur de navigateur web de Chromium dans les applications .NET. Avec l'aide de CefSharp, nous pouvons afficher du contenu web à distance, y compris une interface utilisateur intégrée construite avec le support HTML5.

Les points importants à souligner dans une introduction à CefSharp sont les suivants :

  • Le Chromium Embedded Framework (CEF) sert de cadre pour CefSharp, permettant l'intégration des fonctionnalités du navigateur Chromium dans d'autres programmes. En utilisant le projet Chromium de Google, CefSharp améliore les programmes de bureau avec des fonctionnalités web sophistiquées.
  • intégration .NET : CefSharp est un puissant wrapper .NET pour le Cef. Il permet aux programmeurs d'utiliser C# ou d'autres langages .NET pour intégrer un navigateur web rapide dans leurs applications de bureau .NET.
  • Navigation sur le web dans les applications de bureau : Avec CefSharp, les développeurs peuvent facilement incorporer des fonctions de navigation sur le web dans leurs programmes de bureau. Cette fonctionnalité offre un monde de possibilités aux développeurs, leur permettant d'incorporer du matériel en ligne dans leurs interfaces utilisateur ou de créer des applications de bureau uniques compatibles avec le web. Il peut recevoir un rappel lorsque des événements JavaScript se déclenchent.
  • Prise en charge des technologies web riches : En utilisant CefSharp, les développeurs peuvent utiliser toutes les capacités que Chromium a à offrir, y compris la prise en charge des normes Web les plus récentes comme HTML5, CSS3, JavaScript, WebGL, et d'autres normes Web modernes. Il est ainsi possible d'intégrer des technologies web de pointe dans des programmes de bureau.
  • Flexibilité et personnalisation : CefSharp offre aux développeurs une grande flexibilité et des possibilités de personnalisation, leur permettant de gérer des événements, d'exécuter du JavaScript, d'interagir avec du contenu en ligne et de modifier le comportement du navigateur pour répondre aux besoins particuliers de l'application. CefSharp avec WebGL, qui s'appuie sur OpenGL/DirectX pour un rendu accéléré par le matériel, prend en charge le contenu 3D.

    En utilisant CefSharp, les développeurs peuvent améliorer les applications de bureau en facilitant la navigation sur le web, en encourageant l'interaction avec l'utilisateur et en lui fournissant des informations riches et actuelles dans l'environnement de l'application.

    Exemple de code :

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
$vbLabelText   $csharpLabel

Ce code utilise CefSharp pour développer une application WinForms de base avec un navigateur web intégré basé sur Chromium. Voici une explication :

  • Initialise les paramètres CefSharp en utilisant CefSettings.
  • ChromiumWebBrowser : Cette classe représente le contrôle du navigateur web fourni par CefSharp.
  • L'événement LoadingStateChanged gère les changements de l'état de chargement du navigateur, par exemple lorsqu'une page finit de se charger.
  • L'événement MainForm_FormClosing garantit que les ressources du Cef sont correctement fermées lors de la fermeture du formulaire.

    Pour un exemple de base, pour des applications développées avec CefSharp et prêtes à être compilées, consultez le projet d'exemple minimal sur GitHub. Des exemples de projets plus complexes sont disponibles dans la source du projet.

CefSharp avec IronPDF

L'intégration des capacités de génération de PDF d'IronPDF avec le framework Chromium Embedded de CefSharp (CEF) nécessite l'utilisation conjointe de CefSharp et d'IronPDF dans une application .NET. Cependant, depuis la version la plus récente de janvier 2022, il n'existe pas d'interface directe et prête à l'emploi entre CefSharp et IronPDF.

L'objectif principal de CefSharp est d'intégrer le moteur de navigation web Chromium dans les programmes .NET, ce qui permet d'afficher du contenu en ligne et d'interagir avec lui par le biais de l'interface utilisateur de l'application. CefSharp fournit des contrôles de navigateur pour les applications WPF et Windows Forms.

Bien que CefSharp et IronPDF ne soient pas directement intégrés, les développeurs peuvent toujours utiliser les deux bibliothèques dans le même contexte d'application.

IronPDF excelle dans la conversion HTML en PDF, garantissant une préservation précise des mises en page et des styles d'origine. C'est parfait pour créer des PDF à partir de contenus basés sur le web, tels que des rapports, des factures et de la documentation. Avec la prise en charge des fichiers HTML, des URL et des chaînes HTML brutes, IronPDF produit facilement des documents PDF de haute qualité.

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
$vbLabelText   $csharpLabel

Installer IronPDF

Pour acquérir la bibliothèque IronPDF, vous devez suivre les étapes suivantes. Saisissez le code suivant dans le gestionnaire de paquets :

Install-Package IronPdf 
dotnet add package IronPdf
Install-Package IronPdf 
dotnet add package IronPdf
SHELL

CefSharp.Wpf.NetCore (Comment cela fonctionne pour les développeurs) : Figure 1 - Installer IronPDF

Vous pouvez également utiliser le gestionnaire de paquets NuGet pour rechercher le paquetage "IronPDF". Dans la liste de tous les paquets NuGet liés à IronPDF, choisissez et téléchargez le paquet nécessaire.

CefSharp.Wpf.NetCore (Comment cela fonctionne pour les développeurs) : Figure 2 - IronPDF

Utilisation de IronPDF dans CefSharp C\

Pour intégrer IronPDF à C# dans une application C#, vous devez effectuer deux étapes : utiliser le navigateur basé sur Chromium fourni par CefSharp pour rendre le contenu HTML, puis utiliser IronPDF pour convertir ces informations HTML en document PDF. L'exemple suivant montre comment réaliser cette intégration :

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
$vbLabelText   $csharpLabel

Ce code démontre une intégration simple où le contenu HTML chargé dans le navigateur Chromium est intercepté, et IronPDF est utilisé pour le transformer en document PDF. Voici une explication :

  • Initialiser CefSharp pour intégrer le navigateur Chromium dans une application Windows Forms.
  • Contrôle ChromiumWebBrowser : Ce contrôle charge une URL spécifique (dans cet exemple, "https://ironpdf.com/") dans le navigateur et en crée une instance.
  • Événement LoadingStateChanged : Suit la progression du chargement du navigateur. Lorsque la page a fini de se charger (e.IsLoading est faux), le ChromeBrowser capture de manière asynchrone le contenu HTML de la page chargée en utilisant GetSourceAsync().
  • Intégration de IronPDF : Le contenu HTML capturé (htmlContent) est converti en document PDF à l'aide de la fonctionnalité HtmlToPdf de IronPDF. Le PDF généré est enregistré sous le nom de "Output.pdf".
  • Fermeture du formulaire : Assurez-vous que les ressources Cef sont correctement fermées en appelant Cef.Shutdown() après la fermeture du formulaire.

    CefSharp.Wpf.NetCore (Comment ça fonctionne pour les développeurs) : Figure 3 - Sortie

    Ce code démontre une intégration simple où le contenu HTML chargé dans le navigateur Chromium est intercepté puis converti en document PDF à l'aide d'IronPDF. Personnalisez l'URL, la gestion des erreurs et d'autres aspects en fonction des besoins spécifiques de votre application. Pour plus d'informations sur la documentation d'IronPDF, veuillez vous référer au paquet NuGet IronPDF.

Conclusion

L'intégration d'IronPDF avec CefSharp dans une application C# ouvre de nouvelles possibilités de gestion de documents et d'informations en ligne. En combinant les fonctionnalités de génération de PDF d'IronPDF avec le navigateur basé sur Chromium fourni par CefSharp, les développeurs peuvent créer des applications flexibles capables de générer des documents PDF de haute qualité tout en incorporant du contenu web dynamique.

Le package Lite de IronPDF est disponible pour $749 et comprend un contrat de maintenance logicielle d'un an, des options de mise à niveau, une licence permanente et une garantie de remboursement de trente jours. Pendant la période d'essai de trente jours, les utilisateurs peuvent évaluer le produit dans des scénarios réels à l'aide d'une version d'essai en filigrane. Pour en savoir plus sur le coût, les licences et la version gratuite d'IronPDF, visitez les Informations de Licence d'IronPDF. Pour plus d'informations sur Iron Software, veuillez visiter leur site web Iron Software.

Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< PRÉCÉDENT
Npgsql C# .NET (Comment cela fonctionne pour les développeurs)
SUIVANT >
Microsoft Logging C# (Comment cela fonctionne pour les développeurs)