Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

Créer un PDF à partir d'un Tableau d'Octets C# iTextSharp (vs IronPDF)

Dans les applications modernes .NET, la création et la gestion de fichiers PDF est une exigence courante, que vous génériez des rapports, des factures ou des archives numériques. Developers often turn to third-party PDF libraries for this task, and two of the most popular options in the .NET ecosystem are IronPDF and iText 7 (the successor to iTextSharp).

Chaque bibliothèque offre un ensemble d'outils puissant pour des cas d'utilisation différents. Mais laquelle est la mieux adaptée pour générer un PDF à partir d'un tableau d'octets) en C# ? Cet article décompose tout cela avec des comparaisons, des exemples de code et des informations pour aider les développeurs .NET à faire le bon choix.

Que vous construisiez des applications de niveau entreprise ou des outils internes de petite taille, choisir la bonne bibliothèque PDF peut vous faire gagner du temps de développement et garantir un rendu robuste. Explorons ce que chaque bibliothèque offre.

Introduction aux bibliothèques PDF

À quoi servent les bibliothèques PDF ?

Les bibliothèques PDF en C# permettent aux développeurs de générer, manipuler et lire des fichiers PDF de manière programmatique. Elles couvrent un large éventail de cas d'utilisation, tels que :

  • Exporter des rapports et des factures
  • Générer du contenu dynamique à partir de formulaires web
  • Convertir des pages HTML ou des modèles en PDFs
  • Ajouter des éléments visuels à vos fichiers PDF tels que numéros de page, graphiques, images, et plus encore.
  • Fusionner ou diviser des documents
  • Signer numériquement des PDFs

Elles jouent également un rôle crucial dans la portabilité des données et la conformité avec des normes telles que PDF/A pour l'archivage ou les exigences d'accessibilité.

iTextSharp et IronPDF : Les principaux concurrents

Parmi les bibliothèques PDF .NET disponibles, iTextSharp et IronPDF se sont imposées comme des solutions leader, chacune avec des atouts uniques :

  • iTextSharp est une bibliothèque open-source mature basée sur l'iText de Java, offrant un contrôle PDF robuste avec une courbe d'apprentissage raide et des mises en garde de licence.
  • IronPDF, une bibliothèque commerciale moderne, se concentre sur la simplicité, la rapidité et l'intégration web, vous permettant de convertir directement les vues HTML et ASP.NET en fichiers PDF.

Pourquoi le choix de la bonne bibliothèque est important

Choisir entre les deux n'est pas seulement une question de préférence, cela a un impact sur la productivité, la maintenance, la performance et même la conformité légale des licences. Les projets qui exigent des délais d'exécution courts, des modifications fréquentes de formatage ou le rendu de PDF à partir de modèles HTML bénéficient du développement rapide, tandis que les applications de niveau entreprise pourraient donner la priorité à la conformité aux normes et à la maintenabilité à long terme.

Comparaison des fonctionnalités

iText 7 pour .NET (Successeur d'iTextSharp)

iText 7 est le successeur officiel d'iTextSharp et offre une architecture entièrement repensée. C'est une bibliothèque puissante et extensible adaptée à la création, l'édition et la validation de PDFs dans des industries où la conformité est cruciale, telles que le juridique, la finance et le gouvernement. La suite iText 7 inclut un support pour PDF/A, PDF/UA, les signatures numériques, la rédaction, et la création de formulaires.

Bien qu'il soit toujours open-source sous licence AGPL, une licence commerciale est disponible pour les projets propriétaires.

Fonctionnalités clés d'iText 7

  • API moderne, remplaçant l'ancienne structure d'iTextSharp
  • Support modulaire : HTML to PDF, PDF/A, formulaires, rédaction, signatures numériques
  • Haute performance pour les applications d'entreprise
  • Idéal pour PDF/A, accessibilité, conformité

Veuillez noterVous devrez utiliser itext7 pour les opérations PDF de base et vous pouvez inclure des modules complémentaires facultatifs tels que html2pdf séparément.

Installation (NuGet)

Pour télécharger le paquet de base d'iText 7 pour la génération de PDF :

Install-Package itext7

Installation d'iText 7 via la console de gestion de paquets NuGet

Vous pouvez également installer iText 7 via l'écran du gestionnaire de paquets pour la solution. Pour ce faire, allez d'abord dans le menu déroulant Outils, puis trouvez "Gestionnaire de paquets NuGet > Gérer les paquets NuGet pour la solution".

Menu déroulant de l'outil Visual Studio

Ensuite, il suffit de rechercher iText 7, puis de cliquer sur « Installer ».

Page de paquet NuGet iText 7

Exemple de code : Créer des documents PDF à partir d'un tableau d'octets en utilisant iText 7

using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIText7()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIText7() As Byte()
		Using ms = New MemoryStream()
			Dim writer = New PdfWriter(ms)
			Dim pdf = New iText.Kernel.Pdf.PdfDocument(writer)
			Dim doc = New Document(pdf)

			doc.Add(New Paragraph("Hello from iText 7 for .NET!"))

			doc.Close() ' Always close the document to finalize content
			Return ms.ToArray()
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Fichier PDF de sortie

Sortie PDF iText 7

Explication

  • PdfWriter écrit le contenu dans un MemoryStream.
  • PdfDocument gère la structure interne du PDF.
  • Document est utilisé pour ajouter du contenu de haut niveau (texte, images, tableaux).
  • Une fois que l'on appelle doc.Close(), le contenu PDF est totalement écrit et prêt à être retourné sous forme de tableau d'octets.

Cet exemple illustre l'API plus modulaire et lisible d'iText 7 par rapport à iTextSharp. Cependant, elle manque toujours de support natif pour le rendu HTML/CSS à moins que vous n'incluiez pdfhtml, qui est sous licence distincte.

Avantages et inconvénients d'iText 7

Avantages :

  • Contrôle complet des PDFs\ iText 7 offre un contrôle complet sur les éléments PDF, comme les tableaux, les formulaires, et les signatures numériques. Cela le rend idéal pour les applications nécessitant une conformité stricte aux normes PDF spécifiques, telles que PDF/A ou PDF/UA.

  • Modulaire et évolutif\ iText 7 est modulaire, ce qui signifie que vous pouvez installer uniquement les modules spécifiques dont vous avez besoin (par exemple, pdfhtml pour la conversion HTML en PDF). Cela permet une mise en œuvre plus légère si vous n'utilisez pas toutes les fonctionnalités.

  • Prise en charge des normes PDF complexes\ iText 7 prend en charge les normes ISO telles que PDF/A (archivage), PDF/UA (accessibilité) et PDF/X (impression), le rendant adapté aux environnements professionnels et juridiques où la conformité est cruciale.

  • Documentation riche et support\ iText 7 dispose d'une documentation complète et d'une large communauté. L'entreprise offre également un support professionnel, garantissant que les développeurs peuvent obtenir de l'aide en cas de besoin.

  • Version gratuite disponible (AGPL)\ Les développeurs peuvent utiliser iText 7 gratuitement sous la licence AGPL, ce qui est idéal pour les projets open source ou l'utilisation personnelle.

Inconvénients :

  • Licence AGPL pour l'utilisation commerciale\ Bien qu'iText 7 propose une version gratuite, les utilisateurs commerciaux doivent se conformer à la licence AGPL, qui exige de publier le code source de tout logiciel utilisant iText 7 ou de payer une licence commerciale.

  • Courbe d'apprentissage raide\ L'API d'iText 7 est plus complexe et riche en fonctionnalités, ce qui peut entraîner une courbe d'apprentissage plus élevée par rapport à des bibliothèques plus simples comme IronPDF. Les développeurs doivent se familiariser avec sa structure de document à bas niveau et son architecture basée sur les modules.

  • Lourd pour des tâches simples\ iText 7 peut sembler encombrant pour les tâches PDF de base, telles que la création de documents simples ou la conversion basique de HTML en PDF, surtout comparé à des bibliothèques comme IronPDF, qui simplifient le processus.

  • Nécessite des modules externes pour HTML en PDF\ La conversion HTML en PDF dans iText 7 n'est disponible que par le biais du module additionnel pdfhtml, qui nécessite une installation séparée et peut ne pas prendre en charge le contenu web moderne aussi parfaitement qu'IronPDF.

IronPDF pour .NET : Une puissante bibliothèque PDF

IronPDF est une bibliothèque .NET de haut niveau conçue pour simplifier la génération de documents PDF en mettant l'accent sur la productivité des développeurs. Elle est particulièrement efficace pour le rendu de contenu et de style HTML, ce qui la rend idéale pour les flux de travail web modernes vers PDF.

Fonctionnalités principales :

  • Créer des fichiers PDF à partir de tableaux d'octets et travailler avec des documents PDF sans besoin d'installer Adobe Reader
  • Rendu direct HTML en PDF en utilisant un moteur Chromium complet pour créer des documents PDF à partir de contenu HTML
  • Fonctionne avec les vues MVC, les Razor Pages et les URL locales/distantes
  • Prend en charge les fichiers image, JavaScript, CSS et les mises en page réactives sans configuration supplémentaire
  • Syntaxe facile à utiliser et mise en place minimale requise
  • Licence perpétuelle et sans contraintes AGPL

Installer IronPDF

IronPDF peut également être installé via NuGet, en exécutant la commande suivante dans la console de gestion de paquets NuGet :

Install-Package IronPdf

Installation d'IronPDF via la console du gestionnaire de paquets

Alternativement, vous pouvez l'installer via le gestionnaire de paquets NuGet pour l'écran Soluction. Pour ce faire, naviguez vers "Outils > Gestionnaire de paquets NuGet > Gérer les paquets NuGet pour la solution".

Menu déroulant Outils dans Visual Studio

Ensuite, recherchez IronPDF, et cliquez sur "Installer".

Écran du gestionnaire de paquets NuGet IronPDF

Après l'installation, vous pouvez commencer à rendre des pages HTML complètes en PDF en quelques secondes, sans modules supplémentaires requis. Il prend en charge le CSS moderne, JavaScript et même le contenu web interactif sans configuration supplémentaire.

Exemple de code : Créer des documents PDF à partir d'un tableau d'octets avec IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIronPdf()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		Dim pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>")
		Return pdfDoc.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Fichier PDF de sortie

Sortie IronPDF

Explication

  • L'instruction using IronPdf importe la bibliothèque IronPDF pour accéder à toutes les classes liées aux PDFs.
  • var renderer = new ChromePdfRenderer() crée un nouveau rendu HTML en PDF alimenté par un moteur Chromium sans tête.
  • renderer.RenderHtmlAsPdf(...) convertit la chaîne HTML donnée en un document PDF. Vous pouvez également passer des chemins de fichiers ou des URLs.
  • pdfDoc.BinaryData retourne le PDF final sous forme de tableau d'octets, prêt à être sauvegardé, diffusé ou stocké en base de données.

Avantages et inconvénients d'IronPDF

Avantages :

  • Rendu HTML vers PDF sans effort\ Convertir directement du contenu HTML, CSS et JavaScript en PDF avec le style complet, y compris Bootstrap et des polices personnalisées, sans besoin de code de mise en page complexe ou de modules supplémentaires.

  • Démarrage rapide & API intuitive\ Créez des fichiers PDF parfaitement stylés en seulement quelques lignes de code, avec une syntaxe claire et une compatibilité complète avec .NET Core et .NET Framework.

  • Prise en charge complète des technologies web\ IronPDF prend en charge JavaScript, le CSS moderne, les SVG et les requêtes média, ce qui est rarement le cas avec d'autres bibliothèques à moins qu'elles n'utilisent des navigateurs sans tête comme Chromium (ce qu'IronPDF fait en interne).

  • Gestion intégrée des images & assets\ Incluez facilement des images, des fichiers locaux ou même récupérez des ressources à partir de URLs distantes sans configuration supplémentaire.

  • Licence perpétuelle & sans AGPL\ Contrairement à iText 7, IronPDF offre des licences commerciales flexibles sans les restrictions des obligations open-source AGPL.

  • Idéal pour les vues MVC & Razor\ Convertit sans couture les vues Razor .cshtml dans les applications ASP.NET en PDFs imprimables.

Inconvénients :

  • L'utilisation commerciale nécessite une licence\ Bien qu'il y ait une version d'essai gratuite, IronPDF n'est pas open source. Les projets avec des budgets serrés peuvent avoir besoin d'évaluer les coûts de licence.

  • Taille du paquet initial plus grande\ Étant donné qu'il intègre un moteur Chromium sans tête, le paquet NuGet est plus lourd que certaines alternatives.

Exemples de code pratiques comparés

Les exemples de code suivants dans cette section démontrent comment ces bibliothèques fonctionnent, avec une comparaison entre IronPDF et iText 7 pour les mêmes tâches. Chaque bibliothèque sera testée dans les mêmes scénarios : générer un PDF à partir d'une URL, rendre une image en PDF, et convertir du HTML stylé en PDF, tout en utilisant des tableaux d'octets pour manipuler notre contenu PDF. Cela permettra aux développeurs d'évaluer comment chaque bibliothèque aborde ces cas d'utilisation courants.

1. Générer un PDF simple à partir d'une URL en utilisant un tableau d'octets

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfFromUrlWithIronPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfFromUrlWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		renderer.RenderingOptions.EnableJavaScript = True
		renderer.RenderingOptions.WaitForJavaScript(5000)
		renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

		Dim pdf = renderer.RenderUrlAsPdf("https://www.apple.com")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

PDF de sortie

Sortie IronPDF : URL vers PDF

IronPDF utilise un moteur Chromium sans tête pour le rendu pixel-parfait des pages web avec une prise en charge complète de JavaScript et CSS.

iText 7

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports System.Net.Http
Imports System.Threading.Tasks
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = Await pdfGenerator.GeneratePdfFromUrlWithIText7Async()

		' Save the PDF to a file
		File.WriteAllBytes("itext7-from-url.pdf", pdfBytes)
	End Function
End Class

Friend Class PdfGenerator
	Public Async Function GeneratePdfFromUrlWithIText7Async() As Task(Of Byte())
		Dim httpClient As New HttpClient()
		Dim html As String = Await httpClient.GetStringAsync("https://www.apple.com")

		Dim stream = New MemoryStream()
		HtmlConverter.ConvertToPdf(html, stream)
		Return stream.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

Sortie iText 7 : URL vers PDF

iText 7 récupère le HTML brut avec HttpClient et le rend à l'aide de HtmlConverter, mais il ne prend pas en charge l'exécution de JavaScript (comme confirmé par la documentation officielle d'iText, qui recommande l'utilisation de Selenium ou d'une automatisation de navigateur similaire pour le prétraitement JavaScript) et a une stylistique CSS limitée. Bien qu'iText7 ait ajouté une prise en charge partielle de flexbox dans la version 7.1.15 (2021), de nombreuses propriétés CSS3 restent non supportées, en particulier pour les mises en page modernes complexes.

2. Créer un nouveau fichier PDF à partir d'une image en utilisant un tableau d'octets

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim pdf = ImageToPdfConverter.ImageToPdf("example.png")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

Sortie IronPDF : Image vers PDF

Génération d'image vers PDF facile avec l'outil ImageToPdfConverter d'IronPDF. Avec cela, vous pouvez facilement créer des fichiers PDF à partir d'images telles que des fichiers PNG ou JPG.

iText 7

using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.IO.Image
Imports iText.Layout.Element
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("iText-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim ms = New MemoryStream()
		Dim writer = New PdfWriter(ms)
		Dim pdfDoc = New iText.Kernel.Pdf.PdfDocument(writer)
		Dim document As New Document(pdfDoc)

		Dim img = New Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"))
		document.Add(img)
		document.Close()

		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

Sortie PDF iText 7 avec image

Création manuelle de la mise en page du document et insertion explicite de l'image à l'aide de ImageDataFactory.

3. Convertir du contenu HTML stylé en PDF en utilisant un tableau d'octets

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>"

		Dim pdf = (New ChromePdfRenderer()).RenderHtmlAsPdf(html)
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

Sortie IronPDF : HTML stylé vers PDF

IronPDF prend entièrement en charge le CSS dans les balises ou les feuilles de style externes grâce à son moteur Chromium.

iText 7 + pdfHTML

using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the new document to the specified file location
		File.WriteAllBytes("iText-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>"

		Dim ms = New MemoryStream()
		Dim properties As New ConverterProperties()
		HtmlConverter.ConvertToPdf(New MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties)
		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

Sortie iText 7 : HTML stylé vers PDF

Nécessite l'installation du module d'extension payant pdfHTML pour gérer les tâches de conversion HTML.

Résumé de la comparaison

Fonctionnalité IronPDF iText 7 (avec pdfHTML)
Rendu URL vers PDF Rendu complet Chromium Récupère HTML, pas de support JS natif
Ajout d'image Intégrer via HTML ou son outil de tamponnage d'image dédié Manuel par usine d'image
Rendu HTML stylé Support complet CSS Support CSS seulement par pdfHTML
Retourne tableau d'octets Oui Oui
Complexité de mise en place Simple Modéré (mise en page manuelle)
Qualité de sortie Pixel parfait Bonne mais statique

Conclusion : Quelle bibliothèque .NET devriez-vous choisir ?

Choosing between IronPDF and iText 7 depends on your project’s needs — but when it comes to developer experience, ease of use, and modern rendering accuracy, IronPDF clearly stands out.

If you're working with dynamic HTML content, web rendering, or need to create PDF files from URLs with full JavaScript and CSS support, IronPDF's Chromium-based engine delivers unmatched fidelity. Son API intuitive et sa mise en place rapide le rendent idéal pour le développement rapide et l'utilisation en production réelle — surtout lorsque vous travaillez avec des tableaux d'octets, des flux de fichiers ou la génération de PDF basée sur le web.

D'un autre côté, iText 7 est une bibliothèque puissante et bien respectée avec une approche de mise en page plus traditionnelle. Elle offre un contrôle solide sur la structure des documents et est excellente pour les développeurs qui ont besoin d'une manipulation fine, mais elle présente une courbe d'apprentissage plus abrupte et manque de capacités de rendu HTML modernes.

Voici la conclusion :

  • Voulez-vous un rendu pixel parfait du contenu web moderne, du HTML stylé, ou un prototypage rapide ? Optez pour IronPDF.
  • Besoin d'outils de création PDF à bas niveau avec un contrôle granulaire ? iText 7 pourrait être le bon choix.

Prêt à commencer avec IronPDF ?\ Téléchargez l'essai gratuit et voyez à quel point il est facile de créer des PDFs professionnels basés sur des tableaux d'octets en C# avec juste quelques lignes de code.

Veuillez noteriText 7 est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou sponsorisé par iText 7. 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

Comment puis-je convertir un tableau d'octets en PDF en C# ?

Vous pouvez utiliser IronPDF pour convertir un tableau d'octets en PDF en C#. Il suffit de charger le tableau d'octets dans un document IronPDF en utilisant la méthode `PdfDocument.FromBytes`, qui analysera les données et générera un document PDF.

Quels sont les avantages d'utiliser IronPDF pour la conversion HTML en PDF ?

IronPDF excelle dans la conversion HTML en PDF grâce à l'utilisation d'un moteur Chromium sans tête, qui prend en charge le CSS moderne et JavaScript. Cela le rend idéal pour rendre le contenu web dynamique en documents PDF au pixel près.

Quels sont les principaux avantages d'utiliser IronPDF par rapport à iText 7 pour la génération de PDF ?

IronPDF offre une API plus simple et une configuration plus rapide pour les projets qui ont besoin de convertir du HTML en PDF, avec un support complet pour CSS et JavaScript. Il est particulièrement adapté aux applications nécessitant un développement rapide et une intégration de contenu web.

Comment iText 7 gère-t-il la conformité PDF ?

iText 7 est conçu pour les industries fortement réglementées, en supportant des normes telles que PDF/A, PDF/UA et PDF/X. Il offre un contrôle robuste sur la création de PDF, ce qui le rend adapté aux applications où la conformité est cruciale.

Quel est le processus pour installer IronPDF dans un projet .NET ?

Pour installer IronPDF, vous pouvez utiliser le gestionnaire de packages NuGet dans Visual Studio. Exécutez la commande `Install-Package IronPdf` dans la console du gestionnaire de packages pour l'ajouter à votre projet.

IronPDF peut-il créer des PDF à partir de vues ASP.NET ?

Oui, IronPDF peut rendre les vues ASP.NET directement en documents PDF. Cette fonctionnalité permet aux développeurs de convertir facilement des pages web aux mises en page et styles complexes en PDF.

Quels types d'applications bénéficient le plus de l'utilisation de IronPDF ?

Les applications qui nécessitent de convertir du contenu web dynamique, tel que des rapports et des factures, en PDF bénéficient le plus de l'utilisation de IronPDF. Sa configuration rapide et son support des technologies web en font un choix idéal pour les projets nécessitant des mises à jour fréquentes et des designs modernes.

Comment l'architecture modulaire d'iText 7 affecte-t-elle son utilisation ?

L'architecture modulaire d'iText 7 permet d'ajouter des fonctionnalités PDF spécifiques, telles que la conversion HTML ou la signature numérique, selon les besoins. Cela offre de la flexibilité mais peut nécessiter un apprentissage et une installation supplémentaires pour chaque module.

Quelles sont les différences de licence entre IronPDF et iText 7 ?

IronPDF offre une licence perpétuelle adaptée aux applications commerciales, sans contraintes AGPL. En revanche, iText 7 est disponible sous licence AGPL pour les projets open-source, l'utilisation commerciale nécessitant une licence payante.

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