COMPARAISON DES PRODUITS

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

Dans les applications .NET modernes, la création et la gestion de fichiers PDF sont des exigences courantes—que vous génériez des rapports, des factures ou des enregistrements numériques. Les développeurs se tournent souvent vers des bibliothèques PDF tierces pour cette tâche, et deux des options les plus populaires dans l'écosystème .NET sont IronPDF et iText 7 (le successeur d'iTextSharp).

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

Que vous développiez des applications de niveau entreprise ou de petits outils internes, choisir la bonne bibliothèque PDF peut vous faire gagner du temps de développement et garantir un résultat 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. Ils servent une large gamme de cas d'utilisation, tels que :

  • Exportation de rapports et de factures
  • Générer du contenu dynamique à partir de formulaires web
  • Conversion de pages HTML ou de modèles en PDF
  • Ajout d'éléments visuels à vos fichiers PDF tels que des numéros de page, des graphiques, des images, et plus encore
  • Fusion ou division de documents
  • Signature numérique de PDF

    Ils 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 de premier plan, chacune avec des atouts uniques :

  • iTextSharp est une bibliothèque open-source mature basée sur iText de Java, offrant un contrôle PDF robuste avec une courbe d'apprentissage abrupte et des avertissements de licence.
  • IronPDF, une bibliothèque commerciale moderne, se concentre sur la simplicité, la rapidité et l'intégration web, vous permettant de convertir des vues HTML et ASP.NET directement 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 affecte la productivité, la maintenance, les performances, et même la conformité aux licences légales. Les projets qui nécessitent un délai d'exécution rapide, des modifications fréquentes de format ou le rendu PDF à partir de modèles HTML bénéficient d'un développement rapide, tandis que les applications de niveau entreprise pourraient privilégier la conformité aux normes et la maintenabilité à long terme.

Comparaison des caractéristiques

iText 7 pour .NET (Successeur de iTextSharp)

iText 7 est le successeur officiel de iTextSharp et propose 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 PDF dans des secteurs fortement réglementés comme le juridique, la finance et le gouvernement. La suite iText 7 inclut la prise en charge du PDF/A, PDF/UA, des signatures numériques, du caviardage et de la création de formulaires.

Bien qu'il reste open source sous la 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
  • Prise en charge modulaire : HTML vers PDF, PDF/A, formulaires, rédaction, signatures numériques
  • Haute performance pour les applications d'entreprise
  • Idéal pour PDF/A, accessibilité, conformité

    ⚠️ Note : Vous devrez utiliser itext7 pour les opérations PDF de base et pouvez inclure des modules complémentaires optionnels tels que html2pdf séparément.

Installation (NuGet)

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

Install-Package itext
Install-Package itext
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package itext
$vbLabelText   $csharpLabel

Installation d'iText 7 via la console du gestionnaire de packages NuGet

Vous pouvez également utiliser iText 7 via l'écran du gestionnaire de packages pour solution. Pour ce faire, vous devez d'abord aller dans le menu déroulant Outils, puis trouver "Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution".

Menu déroulant des outils de Visual Studio

Ensuite, recherchez simplement iText 7 et cliquez sur "Installer".

Page du package 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())
        {
            PdfWriter writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            Document 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())
        {
            PdfWriter writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            Document 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 As New PdfWriter(ms)
			Dim pdf = New iText.Kernel.Pdf.PdfDocument(writer)
			Dim doc As 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).
  • Après l'appel à doc.Close(), le contenu PDF est complètement écrit et prêt à être retourné sous forme de tableau d'octets.

    Cet exemple met en valeur l’API plus modulaire et lisible d’iText 7 par rapport à iTextSharp. Cependant, il manque toujours de support natif pour le rendu HTML/CSS à moins d'inclure pdfhtml, qui est licencié séparément.

Avantages et inconvénients d'iText 7

Avantages :

  • Contrôle PDF Complet

    iText 7 offre un contrôle complet sur les éléments PDF, tels que les tableaux, les formulaires et les signatures numériques. Cela le rend idéal pour les applications nécessitant une forte conformité qui exigent des 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 de HTML en PDF). Cela permet une mise en œuvre plus légère si vous n'utilisez pas toutes les fonctionnalités.

  • Prend en charge les normes PDF complexes

    iText 7 prend en charge les normes ISO telles que PDF/A (archivage), PDF/UA (accessibilité) et PDF/X (impression), ce qui le rend 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 grande communauté. L'entreprise propose é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 un usage personnel.

    Inconvénients :

  • Licence AGPL pour 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 pour une licence commerciale.

  • Courbe d'apprentissage abrupte

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

  • Lourd pour des tâches simples

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

  • Nécessite des modules externes pour la conversion HTML en PDF

    La conversion HTML en PDF dans iText 7 n'est disponible que via le module supplémentaire pdfhtml, qui nécessite une installation séparée et peut ne pas gérer le contenu web moderne aussi facilement que IronPDF.

IronPDF for .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. Il est particulièrement efficace pour le rendu du contenu HTML et le style, ce qui le rend idéal pour les workflows modernes de conversion web en PDF.

Caractéristiques principales :

  • Créez des fichiers PDF à partir de tableaux d'octets et travaillez avec des documents PDF sans avoir besoin d'installer Adobe Reader
  • Rendu direct de HTML en PDF en utilisant le moteur Chromium complet pour créer des documents PDF à partir de contenu HTML
  • Fonctionne avec les vues MVC, les pages Razor et les URL locales/distantes
  • Prend en charge les fichiers image, JavaScript, CSS, et les mises en page responsive dès la sortie de la boîte
  • Syntaxe facile à utiliser et configuration minimale requise
  • Licence perpétuelle et aucune contrainte AGPL

Installation d'IronPDF

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

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
$vbLabelText   $csharpLabel

Installation de IronPDF via la console du gestionnaire de packages

Alternativement, vous pouvez l'installer via le gestionnaire de packages NuGet pour l'écran de Solution. Pour ce faire, accédez à "Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution".

Outils déroulants dans Visual Studio

Ensuite, recherchez IronPDF et cliquez sur "Installer".

Écran du gestionnaire de packages NuGet IronPDF

Après l'installation, vous pouvez commencer à rendre des pages HTML complètes en PDF en quelques secondes—aucun module supplémentaire n'est requis. Il prend en charge les CSS modernes, 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;

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;

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

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

Résultat IronPDF

Explication

  • L'instruction using IronPdf importe la bibliothèque IronPDF pour accéder à toutes les classes liées aux PDF.
  • var renderer = new HtmlToPdf() crée un nouveau moteur de 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 fichier ou des URL.
  • pdfDoc.BinaryData renvoie le PDF final sous forme de tableau d'octets, prêt à être enregistré, diffusé en continu ou stocké dans une base de données.

Avantages et inconvénients de IronPDF

Avantages :

  • Rendu HTML en PDF sans effort

    Rendre le contenu HTML, CSS et JavaScript directement en PDF avec un 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 et API intuitive

    Créez des fichiers PDF entièrement stylés en quelques lignes de code, avec une syntaxe claire et une compatibilité complète avec .NET Core et .NET Framework.

  • Assistance complète pour les technologies web

    IronPDF prend en charge JavaScript, CSS modernes, SVG et requêtes média, ce que la plupart des bibliothèques ont du mal à faire à moins d'utiliser des navigateurs sans interface graphique comme Chromium (ce que IronPDF fait en interne).

  • Gestion intégrée des images et des ressources

    Intégrez facilement des images, des fichiers locaux, ou même récupérez des éléments à partir d'URL distantes sans configuration supplémentaire.

  • Licences perpétuelles et pas d'AGPL

    Contrairement à iText 7, IronPDF propose des licences commerciales flexibles sans les restrictions des obligations AGPL open-source.

  • Excellent pour les vues MVC et Razor

    Convertit de manière transparente 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 un essai gratuit, IronPDF n'est pas open source. Les projets avec des budgets serrés peuvent avoir besoin d'évaluer les coûts de licence.

  • Taille Initiale du Paquet Plus Grande

    Étant donné qu'il intègre un moteur Chromium sans tête, le package NuGet est plus lourd que certaines alternatives.

Exemples de Code Pratiques Comparés

Les exemples de code suivants dans cette section démontrent ces bibliothèques en action, pendant lesquels nous comparerons IronPDF et iText 7 en utilisant les mêmes tâches. Les deux bibliothèques seront soumises aux mêmes scénarios : générer un PDF à partir d'une URL, rendre une image sous forme de PDF, et convertir du HTML stylisé en PDF, tout en utilisant des tableaux d'octets pour gérer notre contenu PDF. Cela permettra aux développeurs d'évaluer comment chaque bibliothèque aborde ces cas d'utilisation courants.

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.WaitFor.JavaScript(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.WaitFor.JavaScript(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.WaitFor.JavaScript(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

Output PDF

URL vers la sortie PDF IronPDF

IronPDF utilise un moteur Chromium sans tête pour un rendu pixel-perfect des pages web avec un support complet 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;

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;

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

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 l'HttpClient et le rend à l'aide de HtmlConverter, mais il ne prend pas en charge JavaScript et dispose de capacités de style CSS limitées.

2. Création d'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

Create Pdf From Byte Array Itextsharp 11 related to IronPDF

✅ Génération facile d'images en PDF avec l'outil ImageToPdfConverter de 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

PDF iText 7 avec sortie image

🟡 Création manuelle de la mise en page du document et insertion explicite d'images en utilisant ImageDataFactory.

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

IronPDF

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.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 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.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 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.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

Résultat PDF de HTML stylisé par IronPDF

✅ 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.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;
using iText.Html2pdf;

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.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;
using iText.Html2pdf;

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.Layout
Imports iText.IO.Image
Imports iText.Layout.Element
Imports System.IO
Imports iText.Html2pdf

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 PDF à partir d'HTML stylisé avec iText 7

⚠️Nécessite l'installation de l'add-on payant pdfHTML pour gérer les tâches de conversion HTML.

📊 Résumé de la comparaison

Caractéristique IronPDF iText 7 (avec pdfHTML)


Rendre une URL en PDF ✅ Rendu Chromium complet ⚠️ Extraire HTML, pas de prise en charge native de JS

Ajouter une image ✅ Intégrer via HTML ou son outil dédié de tamponnage d'image ✅ Usine d'image manuelle

Rendre le HTML stylisé ✅ Prise en charge complète du CSS ⚠️ Prise en charge du CSS uniquement via pdfHTML

Renvoie un tableau de bytes ✅ Oui ✅ Oui

Complexité de Configuration ⭐ Simple ⭐⭐ Modéré (mise en page manuelle)

Qualité de sortie ⭐⭐⭐⭐⭐ Pixel-perfect ⭐⭐⭐ Bon mais statique

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

Choisir entre IronPDF et iText 7 dépend des besoins de votre projet — mais en ce qui concerne l'expérience du développeur, la facilité d'utilisation et la précision de rendu moderne, IronPDF se distingue clairement.

Si vous travaillez avec du contenu HTML dynamique, le rendu web, ou si vous avez besoin de créer des fichiers PDF à partir d'URLs avec un support complet de JavaScript et CSS, le moteur basé sur Chromium d'IronPDF offre une fidélité inégalée. Son API intuitive et son installation rapide le rendent idéal pour un développement rapide et une utilisation en production réelle — particulièrement lorsqu'il s'agit de travailler 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 plus traditionnelle axée sur la mise en page. Il offre un contrôle solide sur la structure des documents et convient aux développeurs qui ont besoin d'une manipulation fine, mais il présente une courbe d'apprentissage plus raide et manque de capacités de rendu HTML modernes.

Voici l'essentiel :

  • Vous voulez un rendu parfaitement fidèle à partir de contenu web moderne, de HTML stylisé ou pour un prototypage rapide ? Optez pour IronPDF.
  • Besoin d'outils de création PDF de 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 découvrez à quel point il est facile de créer des PDF professionnels basés sur un tableau d'octets en C# avec seulement quelques lignes de code.

Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< PRÉCÉDENT
Comparaison entre IronPDF et Foxit PDF SDK
SUIVANT >
Comparaison entre iTextSharp et IronPDF pour l'édition des PDF