Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comparaison de 7 bibliothèques C# pour générer des PDF (Gratuites & Payantes)

La fonctionnalité de génération de PDF C# est cruciale pour de nombreuses applications modernes, allant de la création de rapports aux systèmes de facturation. In this article, we will explore six popular ways to generate PDF files using C#, highlighting both code-based libraries, such as IronPDF, and online APIs and tools. Que vous ayez besoin de générer des fichiers PDF dynamiquement dans une application web ou simplement créer des fichiers PDF à partir de documents existants, ces outils vous couvrent.

1. IronPDF

IronPDF est une bibliothèque PDF .NET premium conçue pour les développeurs ayant besoin de conversions de fichiers HTML en PDF de haute qualité. IronPDF utilise un moteur de rendu basé sur Chromium pour garantir des conversions précises, ce qui en fait un choix parfait pour les applications web souhaitant convertir des pages HTML ou des rapports basés sur le web en fichiers PDF en C#. L'outil est connu pour sa gestion robuste des documents PDF existants et propose des fonctionnalités pour éditer, fusionner ou diviser des PDF.

IronPDF s'intègre facilement dans les projets C# via le Gestionnaire de Paquets NuGet, et avec seulement quelques lignes de code, vous pouvez commencer à générer des documents PDF. C'est un outil polyvalent tant pour le contenu HTML dynamique que pour les sorties de fichiers PDF générées par le serveur.

Fonctionnalités clés

  • Conversion HTML en PDF : IronPDF excelle dans la conversion de pages HTML complexes, y compris le support de l'exécution JavaScript et CSS modernes, directement en PDF. Il utilise un moteur de rendu basé sur Chromium, garantissant que le résultat final est identique à ce que vous verriez dans un navigateur web.
  • Manipulation des PDF : IronPDF vous permet de fusionner, diviser et modifier facilement les documents PDF existants.
  • Options de style avancées : IronPDF prend en charge les feuilles de style externes, les polices personnalisées et le JavaScript, vous permettant de créer des documents hautement stylisés. C'est parfait pour les factures, les rapports et le contenu basé sur le web.
  • Fonctionnalités de sécurité : IronPDF fournit des fonctionnalités pour ajouter une protection par mot de passe, des signatures numériques, et définir des permissions pour restreindre des actions comme l'impression, la copie ou la modification du PDF.
  • Gestion des formulaires : IronPDF permet aux développeurs de créer, remplir et lire des formulaires PDF de manière programmatique, ce qui en fait un bon choix pour les applications nécessitant une saisie utilisateur au format PDF.
  • Gestionnaire de paquets NuGet : Installation et gestion faciles via la console de gestion des packages dans Visual Studio.

Exemple de code

using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"

		' Create an instance of ChromePdfRenderer
		Dim renderer As New ChromePdfRenderer()

		' Render the HTML as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

		' Save the PDF to a specified file
		pdf.SaveAs("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. Importation de l'espace de noms : using IronPdf; importe la bibliothèque IronPDF pour accéder à ses classes et méthodes.
  2. Chaîne HTML : La variable 'html' contient le contenu HTML que vous souhaitez convertir en PDF.
  3. Instance de Render : new ChromePdfRenderer(); crée une instance de la classe ChromePdfRenderer, fournissant des méthodes pour rendre le contenu HTML au format PDF.
  4. Rendu du PDF : PdfDocument pdf = renderer.RenderHtmlAsPdf(html); convertit la chaîne HTML en un document PDF.
  5. Enregistrement du PDF : pdf.SaveAs("Generated.pdf"); enregistre le PDF généré vers le chemin de fichier spécifié.

Avantages

  • Qualité de rendu excellente pour le contenu web.
  • Support robuste pour les formulaires, hyperliens et signets.

Inconvénients

  • Les frais de licence peuvent être une considération pour les projets plus importants.
  • Certaines fonctionnalités avancées peuvent nécessiter un apprentissage approfondi.

2. iTextSharp

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 2

iTextSharp est une bibliothèque PDF .NET bien établie qui offre des fonctionnalités étendues pour créer et éditer des fichiers PDF. Elle est largement utilisée dans les industries telles que la finance et le juridique, où les documents doivent être personnalisés et sécurisés. iTextSharp vous permet de créer des fichiers PDF à partir de zéro, de remplir des formulaires, et de modifier des fichiers PDF, offrant un contrôle étendu sur le contenu du document. Il est particulièrement utile pour les applications d'entreprise qui ont besoin de générer des fichiers PDF avec des mises en page précises et des données dynamiques, telles que les factures ou contrats.

Fonctionnalités clés

  • Capacités complètes de création de PDF : iTextSharp facilite la création d'un fichier PDF en C# à partir de zéro, permettant aux développeurs d'ajouter du texte, des images, des tableaux, et des graphiques vectoriels. Il offre un contrôle total sur la mise en page du document, y compris la possibilité de définir des tailles de page, marges et métadonnées.
  • Remplissage de formulaire : Une force significative de iTextSharp est sa capacité à gérer les formulaires PDF (AcroForms). Vous pouvez créer des formulaires avec divers champs de saisie et les remplir ultérieurement de manière programmatique, une fonctionnalité utile dans les flux de travail de génération automatique de documents.
  • Conversion XML en PDF : iTextSharp offre un support robuste pour la conversion de données XML en PDF en utilisant XFA (Architecture de Formulaires XML). Ceci est particulièrement précieux dans les industries où les données XML doivent être formatées en formulaires ou rapports standards.
  • Sécurité PDF : iTextSharp inclut des fonctionnalités avancées telles que l'ajout de cryptage, signatures numériques, et filigranes pour assurer l'authenticité du document et protéger les données sensibles.
  • Extraction et manipulation de texte : Vous pouvez extraire du texte des PDF existants, réorganiser le contenu du document, ou manipuler les éléments de page, le rendant utile pour le post-traitement de documents ou la génération de rapports sommaires à partir de PDF complexes.

Exemple de code

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

namespace Helpers
{
    public class PdfGenerator
    {
        public static byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
            return Generate(html);
        }

        public static byte[] GeneratePdfFromPage(string htmlPage)
        {
            return Generate(htmlPage);
        }

        private static byte[] Generate(string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                }
                pdfDocument.Close();
                return memoryStream.ToArray();
            }
        }
    }
}
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

namespace Helpers
{
    public class PdfGenerator
    {
        public static byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
            return Generate(html);
        }

        public static byte[] GeneratePdfFromPage(string htmlPage)
        {
            return Generate(htmlPage);
        }

        private static byte[] Generate(string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                }
                pdfDocument.Close();
                return memoryStream.ToArray();
            }
        }
    }
}
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml

Namespace Helpers
	Public Class PdfGenerator
		Public Shared Function GeneratePdfFromFragment(ByVal htmlFragment As String) As Byte()
			Dim html = String.Format("
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment)
			Return Generate(html)
		End Function

		Public Shared Function GeneratePdfFromPage(ByVal htmlPage As String) As Byte()
			Return Generate(htmlPage)
		End Function

		Private Shared Function Generate(ByVal html As String) As Byte()
			Using memoryStream As New MemoryStream()
				Dim pdfDocument = New Document(PageSize.LETTER)
				Dim pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
				pdfDocument.Open()
				Using fw = New StringReader(html)
					XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw)
				End Using
				pdfDocument.Close()
				Return memoryStream.ToArray()
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. GeneratePdfFromFragment : Prend un fragment HTML (comme un document HTML partiel) et le convertit en une structure HTML complète en le plaçant dans un modèle de base <html> et <body>. Il appelle ensuite la méthode interne Generate.
  2. GeneratePdfFromPage : Accepte une page HTML complète et appelle directement la méthode Generate.
  3. Generate : Cette méthode gère la conversion de HTML en PDF.
    • Initialise un MemoryStream pour contenir le PDF généré en mémoire.
    • Crée un objet Document iTextSharp avec des pages au format lettre.
    • Le XMLWorkerHelper analyse le contenu HTML et l'écrit dans le document PDF en utilisant le StringReader fourni.

Avantages

  • Hautement personnalisable avec un ensemble de fonctionnalités riche.
  • Documentation exhaustive et support communautaire.

Inconvénients

  • iTextSharp (qui est gratuit pour un usage personnel mais nécessite une licence commerciale pour les projets à plus grande échelle) peut avoir des limitations dans la gestion de CSS ou JavaScript complexes.
  • XMLWorker (utilisé ici) est un outil déprécié de iTextSharp pour l'analyse HTML/CSS. iText7 (la nouvelle version de iText) utilise un parseur HTML plus robuste, pdfHTML, qui pourrait offrir un meilleur support des normes web modernes.
  • Courbe d'apprentissage plus accentuée pour les débutants.

3. PDFSharp

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 3

PDFSharp est une bibliothèque PDF .NET open-source, légère et idéale pour les tâches de création de PDF basiques. Si votre application nécessite seulement des opérations simples comme ajouter du texte, des images, ou des tableaux, PDFSharp est une option facile à utiliser pour générer des documents PDF en C#. Elle manque de fonctionnalités avancées comme la conversion HTML en PDF, mais elle brille par sa simplicité pour générer des fichiers PDF de petite à moyenne taille en C#.

Fonctionnalités clés

  • Création de PDF de base : API simple et facile à utiliser pour dessiner du texte et des graphiques. Idéal pour créer des documents simples.
  • Manipulation de documents : Fusionner et modifier des PDFs existants avec facilité, permettant ainsi la flexibilité dans la gestion des documents.
  • Support du dessin et des graphiques : PDFsharp fournit un ensemble d'outils pour dessiner sur des pages PDF, y compris des lignes, rectangles, et d'autres graphiques vectoriels. Il prend également en charge l'intégration d'images dans vos PDFs.
  • Gratuit et open-source : PDFsharp est complètement gratuit pour un usage commercial et non commercial, ce qui en fait une option attrayante pour les petites entreprises et les développeurs travaillant sur des projets open-source.

Exemple de code

using PdfSharp.Pdf;
using PdfSharp.Drawing;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";

        // Add a page to the document
        PdfPage page = document.AddPage();

        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);

        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
                       new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
using PdfSharp.Pdf;
using PdfSharp.Drawing;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";

        // Add a page to the document
        PdfPage page = document.AddPage();

        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);

        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
                       new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing

Friend Class Program
	Shared Sub Main()
		' Create a new PDF document
		Dim document As New PdfDocument()
		document.Info.Title = "Created with PdfSharp"

		' Add a page to the document
		Dim page As PdfPage = document.AddPage()

		' Create an XGraphics object to draw on the page
		Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

		' Set a font to use for drawing text
		Dim font As New XFont("Verdana", 20, XFontStyle.Bold)

		' Draw the text on the PDF page
		gfx.DrawString("Hello, World!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)

		' Save the document to disk
		document.Save("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument : Représente le document PDF entier. Vous pouvez ajouter des pages, définir des métadonnées, et manipuler le document.
  • PdfPage : Représente une page unique au sein du document. Les nouvelles pages sont ajoutées en utilisant la méthode AddPage.
  • XGraphics : Utilisé pour dessiner du texte, des images, et des formes sur une page spécifique. C'est similaire à GDI+ dans .NET.
  • XFont : Spécifie la police et le style pour le rendu du texte. Dans cet exemple, "Verdana" est utilisé avec un style gras.
  • DrawString : Dessine la chaîne spécifiée à la position définie dans le document.

Avantages

  • Gratuit et open-source sans restrictions de licence.
  • Simple et léger, facile pour commencer la génération de PDF de base.
  • Fonctionne bien pour les projets ne nécessitant pas de fonctionnalités complexes.

Inconvénients

  • Fonctionnalité limitée comparée à d'autres bibliothèques.
  • Pas de support natif pour la conversion HTML en PDF.

4. Syncfusion PDF Library

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 4

Syncfusion PDF Library est un outil haute performance et complet conçu pour les entreprises ayant besoin de travailler avec des PDFs dans un large éventail d'applications. Il fait partie de la suite Syncfusion plus large, qui offre des bibliothèques pour une variété de formats et de plateformes. La bibliothèque PDF se distingue par son ensemble de fonctionnalités étendues qui va au-delà de la simple création de documents et permet une manipulation détaillée, y compris le remplissage de formulaires, les signatures numériques et la sécurité des documents.

Fonctionnalités clés

  • API PDF complète : Capable de générer des PDF hautement personnalisés, y compris ceux avec des mises en page complexes, polices intégrées, et images haute résolution. Fournit un contrôle détaillé sur tous les aspects de la création de PDF, de la mise en forme des pages aux options de disposition avancées.
  • Traitement des formulaires : La bibliothèque excelle dans la création, le remplissage, et l'extraction de données à partir de formulaires PDF interactifs (AcroForms). Utile pour créer des PDFs remplissables pour la saisie utilisateur, automatiser la saisie de données, ou traiter des formulaires remplis.
  • Signatures numériques et cryptage : Offre des fonctionnalités de sécurité robustes, y compris la capacité de crypter des documents PDF, ajouter une protection par mot de passe, et appliquer des signatures numériques. Essentiel pour les industries telles que la santé et les services juridiques qui nécessitent l'authenticité et la sécurité des documents.

Exemple de code

using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

class Program
{
    static void Main()
    {
        // Create a new PDF document.
        PdfDocument document = new PdfDocument();

        // Add a page to the document.
        PdfPage page = document.Pages.Add();

        // Create PDF graphics for the page.
        PdfGraphics graphics = page.Graphics;

        // Set the standard font.
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);

        // Draw the text.
        graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));

        // Save the document.
        document.Save("Output.pdf");

        // Close the document.
        document.Close(true);
    }
}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

class Program
{
    static void Main()
    {
        // Create a new PDF document.
        PdfDocument document = new PdfDocument();

        // Add a page to the document.
        PdfPage page = document.Pages.Add();

        // Create PDF graphics for the page.
        PdfGraphics graphics = page.Graphics;

        // Set the standard font.
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);

        // Draw the text.
        graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));

        // Save the document.
        document.Save("Output.pdf");

        // Close the document.
        document.Close(true);
    }
}
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Graphics

Friend Class Program
	Shared Sub Main()
		' Create a new PDF document.
		Dim document As New PdfDocument()

		' Add a page to the document.
		Dim page As PdfPage = document.Pages.Add()

		' Create PDF graphics for the page.
		Dim graphics As PdfGraphics = page.Graphics

		' Set the standard font.
		Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)

		' Draw the text.
		graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, New PointF(0, 0))

		' Save the document.
		document.Save("Output.pdf")

		' Close the document.
		document.Close(True)
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument : Représente le document PDF. Vous pouvez ajouter des pages, définir des propriétés, et manipuler son contenu.
  • PdfPage : Représente une page au sein du document PDF.
  • PdfFont : Définit la police pour le rendu du texte. Dans ce cas, une police standard Helvetica est utilisée.
  • DrawString : Dessine la chaîne spécifiée sur la page PDF aux coordonnées données.

Avantages

  • Ensemble de fonctionnalités riches, adapté pour créer des PDFs complexes.
  • Support professionnel et documentation le rendant idéal pour les applications à grande échelle.
  • Supporte des capacités avancées de PDF telles que le remplissage de formulaires, le cryptage, et les annotations.

Inconvénients

  • Les frais de licence sont relativement élevés pour un usage commercial.
  • API complexe, qui peut nécessiter du temps pour être maîtrisée.

5. PDFShift (outil en ligne)

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 5

PDFShift est un service basé sur le cloud conçu pour convertir HTML en fichiers PDF. Il s'intègre parfaitement aux applications C# via son API, vous permettant de convertir des pages web HTML générées dynamiquement en PDFs de qualité professionnelle. PDFShift est particulièrement utile pour les développeurs web qui souhaitent générer des documents PDF à la demande à partir de contenu HTML, tel que des factures ou des rapports. Puisque PDFShift fonctionne entièrement via son API REST, vous pouvez envoyer seulement quelques lignes d'HTML au service et recevoir en retour un fichier PDF téléchargeable. C'est une solution simple et évolutive pour la génération de fichiers PDF basée sur le web.

Fonctionnalités clés

  • Conversion HTML en PDF : PDFShift excelle dans la conversion de documents HTML en PDFs de haute qualité. Il prend en charge les styles CSS complexes, JavaScript, et les mises en page de design responsive, garantissant que votre page web ait le même aspect en format PDF.
  • Intégration par API : L'API PDFShift est conçue pour une intégration transparente dans les applications web. Il est simple d'utilisation : il suffit d'envoyer une requête HTTP POST avec le contenu HTML, et le service retourne un document PDF.
  • Options de personnalisation : Permet la personnalisation du PDF généré, notamment la taille de page, l'orientation, les marges, et les en-têtes/pieds de page. Vous pouvez aussi ajouter du contenu dynamique aux en-têtes et pieds de page, comme les numéros de page ou les métadonnées du document.

Comment ça marche

  • Envoyer une requête POST avec le contenu HTML à l'endpoint API PDFShift.
  • Recevoir le PDF généré en réponse, prêt à être téléchargé ou enregistré.

Exemple de code

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>"
			Dim content = New StringContent(htmlContent, Encoding.UTF8, "application/json")

			Dim response As HttpResponseMessage = Await client.PostAsync("https://api.pdfshift.io/v3/convert", content)

			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • HttpClient : Envoie le contenu HTML sous forme de requête POST à l'API PDFShift.
  • PostAsync : Envoie la requête à l'API, qui traite le HTML et retourne le PDF.
  • ReadAsByteArrayAsync : Lit la réponse PDF sous forme de tableau d'octets, qui peut ensuite être enregistré sous forme de fichier.

Avantages

  • API simple avec configuration minimale.
  • Idéal pour les applications web ayant besoin de conversion dynamique HTML en PDF.
  • Pas besoin de gérer des bibliothèques ou serveurs PDF.

Inconvénients

  • Limité à la conversion HTML en PDF; ne prend pas en charge des fonctionnalités PDF plus complexes.
  • Nécessite une connexion Internet et des coûts après un certain seuil d'utilisation.

6. DocRaptor (outil en ligne)

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 6

DocRaptor est un autre service de génération de PDF basé sur l'API qui convertit HTML et CSS en PDFs de haute qualité. Il est connu pour sa capacité à bien rendre les documents HTML, notamment en gérant des styles CSS complexes, des requêtes de média, et des polices web. Cela fait de DocRaptor un excellent choix pour générer des documents d'apparence professionnelle tels que des rapports, factures, et livres électroniques, directement depuis des modèles HTML.

Fonctionnalités clés

  • Support HTML et CSS : Convertit des documents HTML avec des styles CSS complexes, y compris les requêtes de média et les polices.
  • Intégration par API : API REST pour une intégration transparente dans les applications web.
  • En-têtes/Pieds de page personnalisés : Ajoutez des en-têtes et pieds de page dynamiques, y compris des numéros de page et formatage personnalisé.
  • Sécurité PDF : Prise en charge du cryptage et de la protection par mot de passe.

Comment ça marche

  • Envoyer une requête POST à l'API DocRaptor avec du contenu HTML.
  • Personnaliser la sortie PDF avec des paramètres pour la taille de page, les marges, en-têtes, et pieds de page.
  • Recevoir le PDF généré en réponse.

Exemple de code

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim apiKey As String = "YOUR_API_KEY"
			Dim htmlContent As String = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>"
			Dim jsonData As String = $"{{""test"": true, ""document_content"": ""{htmlContent}"", ""name"": ""Generated.pdf"", ""document_type"": ""pdf""}}"
			Dim content = New StringContent(jsonData, Encoding.UTF8, "application/json")

			Dim response As HttpResponseMessage = Await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content)

			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • Clé API : Vous devez fournir une clé d'API pour l'authentification en utilisant DocRaptor. Remplacez "YOUR_API_KEY" par votre clé réelle.
  • JsonData : Cette chaîne JSON contient le contenu HTML, le nom du document, et le type (PDF dans ce cas).
  • PostAsync : Envoie le contenu HTML et les paramètres à l'API DocRaptor pour la génération de PDF.

Avantages

  • Rendu de haute qualité avec support complet pour HTML, CSS, et JavaScript.
  • Options avancées de personnalisation pour la disposition et la sécurité des documents.
  • Pas besoin de maintenir des bibliothèques ou infrastructures de génération de PDF.

Inconvénients

  • Service payant après avoir dépassé une limite d'usage gratuit.
  • Dépendant de la connectivité Internet.

7. Outils en ligne sans code

Si vous ne souhaitez pas coder ou avez besoin d'une solution rapide pour générer des PDFs, plusieurs outils en ligne permettent de créer des PDFs rapidement et facilement. Voici quelques options notables :

7.1. Smallpdf

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 7

Smallpdf est une plateforme en ligne offrant une variété d'outils liés aux PDF, y compris la capacité de créer des PDFs à partir d'une large gamme de formats de fichiers. Elle est conçue pour les utilisateurs qui veulent une interface simple de glisser-déposer sans avoir besoin d'écrire du code. Smallpdf est largement utilisé pour les conversions de fichiers rapides, comme transformer des documents Word, feuilles Excel, ou images en PDFs. Elle propose également des outils pour fusionner, compresser, et diviser des PDFs, en faisant un outil polyvalent pour les tâches PDF basiques.

Fonctionnalités clés

  • Conversion de fichiers : Supporte la conversion de fichiers Word, Excel, PowerPoint, et images (JPG, PNG) en PDF. Cela la rend idéale pour les utilisateurs qui ont besoin de créer des PDFs rapidement à partir de divers types de documents.
  • Fusion et division de PDFs : Offre une interface simple pour fusionner plusieurs PDFs en un seul fichier ou diviser un PDF en pages individuelles.
  • Intégration de stockage en cloud : Vous pouvez facilement télécharger des fichiers depuis Google Drive ou Dropbox et enregistrer les PDFs convertis sur ces plateformes, simplifiant la gestion des fichiers.
  • Outils d'édition PDF : Fournit des outils d'édition PDF basiques pour modifier tout document PDF existant, comme ajouter des annotations, remplir des formulaires, et signer des documents numériquement.

Avantages

  • Très facile à utiliser pour les non-développeurs.
  • Gratuit pour un usage basique avec des options pour mettre à niveau pour plus de fonctionnalités.
  • Offre une large variété d'outils liés aux PDFs comme la fusion, la division, et la compression de PDFs.

Inconvénients

  • Personnalisation limitée comparée aux solutions basées sur le code.
  • L'offre gratuite peut avoir des restrictions de fonctionnalités.

7.2. PDFescape

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 8

PDFescape est un éditeur PDF basé sur le web facile à utiliser qui permet aux utilisateurs de créer, éditer, et visualiser des PDFs sans avoir besoin d'installer de logiciel. C'est un excellent outil pour ceux qui ont besoin de faire des modifications rapides aux PDFs, comme remplir des formulaires, ajouter des annotations textuelles, ou insérer des images. PDFescape propose également des outils pour créer de nouveaux PDFs à partir de zéro, en faisant un choix flexible pour la création de documents basiques.

Fonctionnalités clés

  • Remplissage et édition de formulaires : Excelle dans la gestion des formulaires PDF. Les utilisateurs peuvent facilement remplir des formulaires ou modifier des champs existants dans les documents PDF, utile pour les contrats, applications, et autres formulaires.
  • Création de PDF basique : Offre des outils pour ajouter du texte, formes, images, et champs de formulaire. Utile pour créer des documents simples comme des lettres ou formulaires.
  • Annotations et commentaires : Ajoutez des commentaires, post-it, et autres annotations aux PDFs existants, rendant PDFescape un excellent outil pour la relecture et la collaboration de documents.
  • Pas d'installation requise : Fonctionne entièrement dans votre navigateur, donc il n'y a pas besoin d'installer de logiciel. Cela le rend idéal pour les utilisateurs qui ont besoin d'un accès rapide aux outils PDF lorsqu'ils sont en déplacement.

Avantages

  • Simple à utiliser pour les utilisateurs non techniques.
  • Offre gratuite pour la création et édition de PDFs basiques.
  • Convient pour les tâches d'édition mineures de PDFs.

Inconvénients

  • Manque de fonctionnalités avancées pour la création complexe de PDFs.
  • Options de conception et de formatage limitées.

7.3. PDF Candy

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 9

PDF Candy est une suite d'outils PDF en ligne gratuits qui couvre un large éventail de tâches liées aux PDFs, de la conversion de fichiers à l'édition. C'est un excellent choix pour les utilisateurs qui ont besoin d'effectuer rapidement des opérations PDF sans s'inscrire pour un compte ou installer un logiciel. PDF Candy prend en charge la conversion de divers types de fichiers, tels que des documents Word, images, et fichiers texte, en PDFs. Il propose également des outils pour fusionner, diviser, et compresser des PDFs.

Fonctionnalités clés

  • Large gamme d'options de conversion : Peut convertir plusieurs formats de fichiers, y compris des documents Word, images, et fichiers texte, en PDFs. Cela en fait un outil flexible pour traiter différents types de contenu.
  • Fusion et division de PDFs : Permet aux utilisateurs de fusionner plusieurs PDFs en un seul ou de diviser de grands PDFs en fichiers plus petits et plus gérables.
  • Confidentialité des fichiers : Supprime automatiquement les fichiers de ses serveurs après une courte période, garantissant que vos documents restent privés.
  • Gratuit à utiliser : La plupart des outils sont gratuits à utiliser sans inscription, le rendant accessible à un large public. Cependant, il propose également une version premium avec des fonctionnalités plus avancées pour ceux qui ont besoin d'un usage plus fréquent ou de conversions de fichiers plus grandes.

Avantages

  • Facile à utiliser et entièrement gratuit pour la plupart des utilisateurs.
  • Supporte une variété de types de fichiers pour conversion en PDF.
  • Pas besoin d'enregistrement de compte pour un usage basique.

Inconvénients

  • Fonctionnalités de personnalisation PDF avancées limitées.
  • Certains outils peuvent avoir des restrictions sur la taille du fichier ou la complexité de conversion.

Conclusion

Comparaison de 7 bibliothèques de génération de PDF en C# (outils gratuits et payants): Figure 10

Choisir le bon outil pour générer des fichiers PDF en C# dépend de vos besoins. Si vous devez générer des documents PDF à partir de contenu HTML, IronPDF et PDFShift sont d'excellents choix. iTextSharp et Syncfusion offrent des options de personnalisation et un contrôle étendu sur la structure du document pour des projets plus complexes. Pour des solutions plus simples et open-source, PDFsharp est un choix fiable pour modifier des fichiers PDF ou créer des PDFs basiques. Enfin, pour les non-développeurs, Smallpdf, PDFescape, et PDF Candy fournissent des options faciles et sans code pour travailler avec des fichiers PDF.

Pour ceux qui sont intéressés par l'essai de [IronPDF](trial license), ce qui en fait une excellente option pour les développeurs pour tester sa conversion HTML en PDF et ses fonctionnalités de manipulation de PDF avant de s'engager pour une licence payante. L'essai vous permet d'explorer ses fonctionnalités premium, telles que la génération de fichiers PDF de haute qualité, les options de sécurité, et la modification de documents PDF existants, vous offrant une expérience pratique des capacités de l'outil. Si votre projet nécessite des conversions fréquentes de HTML en PDF ou une édition complexe de PDF, l'essai gratuit d'IronPDF est un excellent moyen de vérifier s'il répond à vos besoins.

En évaluant les fonctionnalités spécifiques de chaque outil et la portée de votre projet, vous pouvez choisir la meilleure solution pour générer des fichiers PDF efficacement en C#.

Questions Fréquemment Posées

Comment puis-je convertir HTML en PDF en C# ?

Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDFs. Vous pouvez également convertir des fichiers HTML en PDFs en utilisant RenderHtmlFileAsPdf.

Quelles sont les différences entre les bibliothèques PDF C# gratuites et payantes ?

Les bibliothèques gratuites telles que PDFsharp sont excellentes pour la création et la manipulation de PDF de base, tandis que les bibliothèques payantes comme IronPDF offrent des fonctionnalités avancées comme la conversion HTML en PDF, le traitement des formulaires et une sécurité renforcée.

Quelle est la meilleure bibliothèque open-source pour les tâches PDF de base en C# ?

PDFsharp est une bibliothèque PDF .NET open-source et légère idéale pour les tâches de création de PDF de base. Elle est gratuite pour un usage commercial et non-commercial.

Comment iTextSharp supporte-t-il la création sécurisée de documents PDF ?

iTextSharp fournit des options de personnalisation étendues pour créer des documents PDF sécurisés, y compris le support pour les signatures numériques et le cryptage, ce qui le rend adapté aux industries nécessitant une gestion sécurisée des documents.

Puis-je utiliser des outils en ligne pour la conversion HTML en PDF dans des applications C# ?

Oui, des outils en ligne comme PDFShift et DocRaptor offrent une conversion HTML en PDF basée sur une API, idéale pour les applications web nécessitant une génération dynamique de PDF.

Quels sont les avantages d'utiliser une bibliothèque avec un moteur de rendu basé sur Chromium pour la génération de PDF ?

Les bibliothèques comme IronPDF, qui utilisent un moteur de rendu basé sur Chromium, offrent une conversion HTML en PDF de haute qualité avec prise en charge de styles complexes et JavaScript.

Comment la Bibliothèque PDF Syncfusion profite-t-elle aux applications d'entreprise ?

La Bibliothèque PDF Syncfusion offre des fonctionnalités complètes pour les applications d'entreprise, y compris le traitement des formulaires, les signatures numériques et le cryptage, ce qui la rend très adaptée aux exigences professionnelles complexes.

IronPDF est-il compatible avec la prochaine version .NET 10 ?

Oui, IronPDF est compatible avec .NET 10 nativement. Il est répertorié comme compatible avec .NET 10, au même titre que les versions 9, 8, 7, 6, Core, Standard et Framework, et aucune manipulation particulière n'est nécessaire. (ironpdf.com)

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