Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

PDFsharp vs QuestPDF (Comparaison Approfondie de la Bibliothèque PDF en C#)

Lorsqu'ils travaillent avec des documents PDF dans .NET, les développeurs se retrouvent souvent à comparer diverses bibliothèques pour déterminer laquelle convient le mieux aux exigences de leur projet. Three popular choices in the .NET ecosystem are PDFsharp, QuestPDF, and IronPDF. Chaque bibliothèque répond à des cas d'utilisation différents et offre des forces et des faiblesses uniques. Dans cet article, nous fournirons une comparaison approfondie de ces bibliothèques et comment elles gèrent la génération de PDF basique en utilisant cette URL pour vous aider à prendre une décision éclairée.

Qu'est-ce que PDFsharp ?

PDFsharp est une bibliothèque open-source conçue pour créer, éditer et restituer des documents PDF. Avec un accent sur la simplicité et les fonctionnalités de base du PDF, PDFsharp a été un outil fiable pour les développeurs cherchant des capacités de manipulation PDF simples.

Caractéristiques clés de PDFsharp

  • Création et édition de PDF : Générer de nouveaux PDF ou modifier ceux existants.
  • Dessin graphique : Inclut la prise en charge du dessin de formes, de texte et d'images.
  • Open Source : Sous licence MIT, ce qui le rend gratuit à utiliser et à modifier.

Installation

Grâce à l'utilisation de l'outil NuGet Package Manager, il est facile d'installer PDFsharp dans vos projets. Exécutez simplement la ligne suivante dans la console NuGet Package Manager:

Install-Package PDFsharp

Exemple de code PDFsharp

Maintenant, regardons comment PDFsharp pourrait gérer la création d'un nouveau document PDF à partir d'une URL donnée. Comme PDFsharp seul ne peut pas gérer la conversion de HTML ou d'URL en PDF, nous devrons intégrer un moteur de rendu web tel que HtmlRenderer.PdfSharp. De plus, nous utiliserons HttpClient pour récupérer le contenu HTML de l'URL donnée.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

public class Program
{
    static async Task Main(string[] args)
    {
        // Ensure proper encoding support
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Generate PDF from the fetched HTML content
            var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
            pdf.Save("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

public class Program
{
    static async Task Main(string[] args)
    {
        // Ensure proper encoding support
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Generate PDF from the fetched HTML content
            var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
            pdf.Save("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports TheArtOfDev.HtmlRenderer.PdfSharp

Public Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Ensure proper encoding support
		Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)

		Dim url As String = "https://www.apple.com"

		' Fetch HTML content from the URL
		Using client As New HttpClient()
			Dim htmlContent As String = Await client.GetStringAsync(url)

			' Generate PDF from the fetched HTML content
			Dim pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4)
			pdf.Save("output.pdf")

			Console.WriteLine("PDF created successfully as 'output.pdf'.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Fichier PDF de sortie

Exemple de sortie de PDFsharp

Comme vous pouvez le voir, bien que PDFsharp puisse être utilisé pour convertir du contenu HTML et des pages web en fichiers PDF, il a besoin de l'aide de bibliothèques supplémentaires et est incapable de conserver le CSS et le formatage vus sur le site web original. Bien qu'une grande bibliothèque PDF gratuite pour les développeurs, il manque certaines des fonctionnalités plus avancées observées dans les bibliothèques payantes telles qu'IronPDF.

Qu'est-ce que QuestPDF ?

QuestPDF est une bibliothèque moderne open-source axée sur la génération de PDF visuellement attrayants en utilisant une API fluide. Son approche innovante de la mise en page et du rendu de document en fait un concurrent de poids pour les applications nécessitant des conceptions dynamiques et complexes.

Caractéristiques clés de QuestPDF

  • API fluide : Offre une approche déclarative pour définir les mises en page de document.
  • Système de mise en page moderne : Inspiré par CSS, il prend en charge les grilles, les composants et les structures de mise en page flexibles.
  • Haute performance : Optimisé pour le rendu de grands documents complexes rapidement.

Installation

Grâce à cette bibliothèque disponible pour installation en tant que package NuGet, son installation est un processus simple, nécessitant juste l'exécution d'une ligne dans la console NuGet :

Install-Package QuestPDF

Exemple de code QuestPDF

Il est maintenant temps de regarder comment QuestPDF gérera la conversion de notre URL exemple au format PDF. Bien que QuestPDF ne prenne pas en charge nativement la conversion d'URL en PDF, vous pouvez utiliser un client HTTP pour récupérer le contenu HTML et le rendre en un PDF en utilisant l'API fluide de QuestPDF.

using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

public class Program
{
    static async Task Main(string[] args)
    {
        // Configure QuestPDF to use the community license
        QuestPDF.Settings.License = LicenseType.Community;

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Parse the HTML content using HtmlAgilityPack
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);

            // Extract meaningful content (e.g., text inside <body>)
            var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";

            // Generate PDF using QuestPDF
            Document.Create(container =>
            {
                container.Page(page =>
                {
                    page.Size(PageSizes.A4);
                    page.Margin(20);
                    page.Content().Text(bodyContent);
                });
            }).GeneratePdf("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

public class Program
{
    static async Task Main(string[] args)
    {
        // Configure QuestPDF to use the community license
        QuestPDF.Settings.License = LicenseType.Community;

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Parse the HTML content using HtmlAgilityPack
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);

            // Extract meaningful content (e.g., text inside <body>)
            var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";

            // Generate PDF using QuestPDF
            Document.Create(container =>
            {
                container.Page(page =>
                {
                    page.Size(PageSizes.A4);
                    page.Margin(20);
                    page.Content().Text(bodyContent);
                });
            }).GeneratePdf("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks
Imports HtmlAgilityPack
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Public Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Configure QuestPDF to use the community license
		QuestPDF.Settings.License = LicenseType.Community

		Dim url As String = "https://www.apple.com"

		' Fetch HTML content from the URL
		Using client As New HttpClient()
			Dim htmlContent As String = Await client.GetStringAsync(url)

			' Parse the HTML content using HtmlAgilityPack
			Dim htmlDoc = New HtmlDocument()
			htmlDoc.LoadHtml(htmlContent)

			' Extract meaningful content (e.g., text inside <body>)
			Dim bodyContent = If(htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText, "No content found")

			' Generate PDF using QuestPDF
			Document.Create(Sub(container)
				container.Page(Sub(page)
					page.Size(PageSizes.A4)
					page.Margin(20)
					page.Content().Text(bodyContent)
				End Sub)
			End Sub).GeneratePdf("output.pdf")

			Console.WriteLine("PDF created successfully as 'output.pdf'.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Fichier PDF de sortie

Exemple de sortie de QuestPDF

Tout comme avec PDFSharp, bien que QuestPDF puisse être utilisé pour convertir du contenu HTML en PDF avec l'aide de bibliothèques externes telles que HtmlAgilityPack, il est incapable de maintenir les styles CSS et le formatage. Bien que QuestPDF soit un excellent choix pour quiconque souhaitant créer des documents PDF à partir de zéro, la conversion de HTML en PDF n'est pas un point fort de cette bibliothèque.

IronPDF : Une bibliothèque PDF puissante

IronPDF est une bibliothèque PDF robuste conçue pour les développeurs .NET ayant besoin de capacités PDF avancées et complètes. Son accent sur le rendu HTML en PDF, combiné à des fonctionnalités supplémentaires telles que des options avancées pour manipuler des documents PDF, le chiffrement et la conformité PDF/A, en fait un choix puissant pour les applications de niveau entreprise.

Caractéristiques clés d'IronPDF

  • HTML en PDF : Render facilement des pages web complètes ou des chaînes HTML sous forme de PDF.
  • Conformité PDF/A : Générer des documents qui respectent les normes d'archivage à long terme.
  • Advanced Security: Supports encryption, password protection, and digital signatures.
  • Édition de PDFs : Modifier, fusionner et diviser des fichiers PDF existants.
  • Multiplateforme : Entièrement compatible avec .NET Framework, .NET Core et .NET 5+.

Installation

Pour installer IronPDF, utilisez le NuGet Package Manager dans Visual Studio :

En utilisant le NuGet Package Manager :

  1. Ouvrez votre projet dans Visual Studio.
  2. Cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions et sélectionnez "Gérer les packages NuGet".
  3. Recherchez "IronPDF" et cliquez sur "Installer".

Visuels d'installation d'IronPDF

En utilisant la console du Gestionnaire de paquets NuGet :

Install-Package IronPdf

Exemple : Convertir une URL en PDF en utilisant IronPDF

IronPDF fournit une API simple et directe pour convertir des URLs en PDFs. Voici un exemple :

using IronPdf;

public class PdfConverter
{
    public static void Main(string[] args)
    {
        // Create a renderer with IronPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the PDF
        pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

public class PdfConverter
{
    public static void Main(string[] args)
    {
        // Create a renderer with IronPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the PDF
        pdf.SaveAs("url.pdf");
    }
}
Imports IronPdf

Public Class PdfConverter
	Public Shared Sub Main(ByVal args() As String)
		' Create a renderer with IronPdf
		Dim renderer As New ChromePdfRenderer()

		' Render the URL as a PDF
		Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")

		' Save the PDF
		pdf.SaveAs("url.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Fichier PDF de sortie

Exemple de sortie d'IronPDF

L'exemple de code ci-dessus montre comment IronPDF peut facilement convertir le contenu d'une URL en PDF avec juste quelques lignes de code. Comme vous pouvez le voir, non seulement il a converti le HTML, mais il a aussi converti le style et les mises en page CSS, garantissant que le PDF de sortie reste fidèle au formatage original. Grâce à l'utilisation du moteur de rendu ChromePdfRenderer, IronPDF produit des documents PDF parfaitement pixelisés qui ne perdent rien de la qualité originale du contenu lors du processus de conversion.

Comme vu ici, IronPDF est un choix solide pour la conversion de HTML en PDF, ainsi que pour la conversion d'autres types de documents en PDF. Il gère les travaux de conversion de haute qualité dans un bloc de code concis et facile à implémenter.

Analyse détaillée

Facilité d'utilisation

PDFsharp est simple et facile à utiliser, en faisant un excellent choix pour les débutants ou les développeurs ayant des besoins simples en PDF. Son approche procédurale permet une mise en place et une implémentation rapides pour des tâches telles que l'ajout de texte, de formes ou d'images à un PDF. Cependant, il nécessite une bibliothèque externe pour gérer les tâches de conversion HTML et URL en PDF.

QuestPDF, d'autre part, offre une approche plus moderne avec son API fluide. Les développeurs ayant de l'expérience en design web ou UI le trouveront intuitif, mais les nouveaux venus peuvent faire face à une légère courbe d'apprentissage en s'habituant à la philosophie de conception centrée sur la mise en page. Encore une fois, il manque les outils intégrés pour gérer les conversions HTML en PDF.

IronPDF offre l'expérience la plus facile pour la conversion de HTML en PDF et des fonctionnalités PDF avancées. Son API intuitive réduit le temps d'implémentation et offre une documentation et des exemples solides. IronPDF peut gérer la conversion de nombreux types de documents différents en PDF, tel que l'exemple de la conversion d'URL en PDF que nous avons examiné dans cet article, et cela sans aucune perte de qualité du document.

Performance

La performance est un facteur critique, surtout pour les applications qui ont besoin de générer des PDF de manière dynamique. PDFsharp est adéquat pour des documents petits et simples mais a des difficultés avec des mises en page complexes ou de grande envergure.

QuestPDF excelle dans le rendu de documents dynamiques et visuellement attrayants. Il est optimisé pour gérer les mises en page structurées avec une haute efficacité.

IronPDF équilibre exceptionnellement bien les performances et les fonctionnalités, en particulier pour les applications nécessitant le rendu HTML, le CSS et la prise en charge de JavaScript. Il est également hautement capable de gérer des tâches PDF de niveau entreprise avec aisance.

Résumé de la comparaison

  • PDFsharp est une bibliothèque légère et open-source idéale pour les tâches de création et d'édition de PDF basiques. Il est idéal pour les petits projets mais manque de support pour les mises en page modernes et les fonctionnalités avancées.
  • QuestPDF brille dans la génération de PDFs dynamiques, complexes et visuellement attrayants en utilisant son API fluide. Cependant, il se concentre exclusivement sur la génération de PDF et ne prend pas en charge l'édition de documents existants.
  • IronPDF offre l'ensemble de fonctionnalités le plus complet, y compris la conversion intégrée de HTML en PDF, l'OCR, et des options de sécurité avancées. Bien qu'il nécessite une licence commerciale, sa fonctionnalité en fait un choix de premier plan pour les applications professionnelles et d'entreprise.

Conclusion

Choisir la bonne bibliothèque PDF pour votre projet .NET dépend de vos exigences spécifiques. Si vous avez besoin d'un outil léger et open-source pour des tâches PDF basiques, PDFsharp est une option solide. Pour créer des documents dynamiques et visuellement attrayants, QuestPDF se démarque par son approche moderne.

Cependant, si vous avez besoin de fonctionnalités avancées, d'une conversion HTML en PDF fluide et de capacités de niveau entreprise, découvrez ce que IronPDF a à offrir.

En comprenant les forces et les limitations de chaque bibliothèque, vous pouvez prendre une décision éclairée qui s'aligne sur les besoins de votre projet.

Veuillez noterPDFsharp et QuestPDF sont des marques déposées de leurs propriétaires respectifs. Ce site n'est pas affilié à, approuvé par, ou sponsorisé par PDFsharp ou QuestPDF. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à des fins d'information uniquement et reflètent les informations disponibles publiquement au moment de la rédaction.

Questions Fréquemment Posées

Quelle est la différence entre PDFsharp, QuestPDF et IronPDF?

PDFsharp est connu pour sa simplicité et ses fonctionnalités PDF de base, ce qui le rend adapté aux tâches basiques. QuestPDF offre une API moderne pour des documents visuellement attrayants mais manque de conversion HTML native. IronPDF excelle dans le rendu HTML en PDF et la manipulation avancée, idéal pour les applications d'entreprise.

Comment puis-je rendre du HTML en PDF dans .NET?

Vous pouvez utiliser IronPDF pour rendre du HTML en PDF dans .NET. Il supporte le CSS complet et le JavaScript, permettant une conversion de document de haute qualité.

Pourquoi pourrais-je choisir QuestPDF pour mon projet?

QuestPDF est idéal pour les projets nécessitant des documents PDF dynamiques et visuellement complexes. Son API fluide permet des mises en page flexibles, bien qu'il manque de prise en charge native pour la conversion HTML en PDF.

Quelles sont les limitations de l'utilisation de PDFsharp?

PDFsharp est limité en ce qu'il ne supporte pas nativement la conversion HTML en PDF. Il est mieux adapté aux tâches de création et d'édition basiques de PDF.

Comment IronPDF soutient-il la manipulation avancée de PDF?

IronPDF offre des fonctionnalités avancées telles que l'édition PDF, le cryptage et la conformité PDF/A. Il est conçu pour les applications de niveau entreprise nécessitant une gestion robuste des PDF.

Puis-je créer des PDF visuellement attrayants avec PDFsharp?

Bien que PDFsharp fournisse des fonctionnalités de création et d'édition de PDF basiques, il manque les capacités avancées de mise en page et de design trouvées dans QuestPDF et IronPDF, qui sont mieux adaptées aux documents visuellement complexes.

Quelles sont les étapes d'installation pour ces bibliothèques PDF?

Les trois bibliothèques peuvent être installées via le Gestionnaire de Packages NuGet dans Visual Studio. Utilisez la commande Install-Package [LibraryName] dans la Console du Gestionnaire de Packages NuGet, en remplaçant [LibraryName] par PDFsharp, QuestPDF ou IronPDF.

Y a-t-il un coût associé à l'utilisation de IronPDF?

Oui, IronPDF nécessite une licence commerciale pour le déploiement, offrant un support complet et des fonctionnalités avancées adaptées aux applications de niveau entreprise.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite