COMPARAISON DES PRODUITS

iTextSharp C# HTML to PDF Alternative pour .NET Core

Jordi Bardia
Jordi Bardia
février 19, 2025
Partager:

Pour les développeurs travaillant avec des PDF, disposer d'une bibliothèque fiable pour la génération et la manipulation des PDF est essentiel. Dans l'écosystème .NET, il peut y avoir des dizaines de bibliothèques PDF C# parmi lesquelles choisir, alors comment choisir celle qui correspond le mieux à vos besoins ?

Choisir la bibliothèque appropriée est crucial pour un développement efficace lors de l'utilisation des fonctionnalités PDF dans les applications .NET. Cet article fournit une comparaison détaillée entre deux bibliothèques PDF C# de premier plan :IronPDF etiText 7 (anciennement connu sous le nom de iTextSharp). Nous explorerons leurs fonctionnalités, performances, licences et adéquation aux diverses exigences de projet pour vous aider à prendre une décision éclairée.

Pourquoi choisir une bibliothèque PDF .NET ?

Les PDF sont largement utilisés dans les rapports, factures et documents juridiques, ce qui rend la génération et la manipulation de PDF essentielles pour de nombreuses applications. Lors du choix d'une bibliothèque, les facteurs clés à considérer incluent :

  • Facilité d'intégration – À quelle vitesse pouvez-vous implémenter des fonctionnalités PDF ?
  • Prise en charge de la conversion HTML en PDF – Permet-elle une conversion facile à partir de contenu web ?
  • Licence et coût – Est-ce gratuit ou nécessite-t-il une licence commerciale ?
  • Ensemble de fonctionnalités – Prend-il en charge l'extraction de texte, la signature ou l'édition ?
  • Performance – À quelle vitesse génère-t-il ou traite-t-il des PDFs ?

Un aperçu d'IronPDF et iText7

Introduction à IronPDF

IronPDF est une bibliothèque PDF commerciale conçue spécifiquement pour les développeurs .NET. Elle simplifie la génération, la manipulation et la conversion de PDF, ce qui en fait l'une des bibliothèques les plus faciles à utiliser dans les applications C#.

IronPDF prend en charge .NET Core, .NET Framework, et .NET Standard, garantissant la compatibilité à travers divers environnements .NET. Son haut niveau de compatibilité multiplateforme en fait un choix idéal pour les équipes travaillant dans différents environnements d'applications, et il s'intègre parfaitement aux IDE tels que Visual Studio. Au-delà de sa version .NET, IronPDF est également disponible en Java, Python et Node.js.

🔹 Principales fonctionnalités :

  • Prise en charge intégrée de la conversion HTML en PDF – Convertirpages Web, HTML, CSS et JavaScript en PDF sans modules complémentaires supplémentaires.
  • Édition de PDF – Modifiez les PDF existants enajouter du texte, des images, les en-têtes et les pieds de page.
  • Sécurité PDF – Cryptez les PDFs, définissezprotection par mot de passeet gérer les autorisations pour la visualisation, l'impression ou la modification.
  • Filigranage et annotations – Appliquez facilement du texte et des imagesfiligranes, des tampons ou des commentaires sur des documents.
  • Remplissage de formulaires et extraction de données – Remplir des formulaires interactifsFormulaires PDFprogrammatique et extraire les données de formulaire.

    📌 Idéal pour : Les développeurs recherchant une solution simple et complète sans le tracas d'add-ons supplémentaires ou de licences complexes.

Introduction à iText7

iText 7 est une bibliothèque PDF puissante et flexible qui offre des capacités étendues de manipulation de PDF, y compris la création de documents, le chiffrement et la signature. Toutefois, sa bibliothèque principale ne prend pas en charge la conversion HTML en PDF de manière native.

🔹 Principales fonctionnalités :

  • Personnalisation de PDF de bas niveau – Offre un contrôle détaillé de la structure, des métadonnées et du rendu des PDF.
  • Accessibilité et conformité : Génère des PDF/A, PDF/UA et PDF/X pour l'archivage à long terme et la conformité en matière d'accessibilité.
  • Conversion HTML en PDF : L'add-on payant pdfHTML permet la conversion de contenu HTML en PDFs.
  • Support Java & .NET : Principalement conçu pour Java, avec un support C# via iText 7 pour .NET.
  • Gestion des formulaires PDF : Créez et modifiez des AcroForms et des formulaires XFA pour des formulaires PDF interactifs.

    📌 Idéal pour : les développeurs qui ont besoin d'une solution PDF hautement personnalisable et sont prêts à acheter des modules complémentaires pour des fonctionnalités étendues.

Fonctionnalités et Avantages

Avant d'aborder les fonctionnalités et leurs exemples de code accompagnants, examinons d'abord l'une des plus grandes différences fonctionnelles entre IronPDF et iText 7, conversion de HTML en PDF.

  • IronPDF prend en charge nativement le rendu de HTML, CSS et JavaScript sans nécessiter de composants supplémentaires.
  • iText 7, en revanche, nécessite le module complémentaire pdfHTML, qui est une fonctionnalité payante sous licence commerciale. Cela augmente les coûts pour les développeurs ayant besoin de fonctionnalité web vers PDF.

    Itextsharp 1 related to Fonctionnalités et Avantages

    Diagramme de flux de comparaison HTML vers PDF

    📌 Conclusion : Si vous avez besoin de conversion HTML en PDF, IronPDF est la solution la plus rentable car elle inclut cette fonctionnalité dès l'installation.

Fonctionnalités clés d'IronPDF (avec exemples de code)

IronPDF dispose d'un ensemble riche de fonctionnalités pour travailler avec des documents PDF. Ceux-ci vont de la création de PDF à la manipulation et à la sécurité des PDF. Pour avoir une idée plus claire de la vaste gamme de fonctionnalités qu'offre cette bibliothèque, nous allons examiner quelques fonctionnalités clés sélectionnées.

Conversion HTML en PDF :

Convertir le contenu HTMLen documents PDF de haute qualité grâce au puissant moteur de rendu d'IronPDF. Le moteur de rendu d'IronPDF ne se contente pas de convertir le contenu HTML ; avec lui, vous pourrez conserver tout le style CSS original et l'interactivité JavaScript.

using IronPdf;

public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
        pdf.SaveAs("HtmlToPdf.pdf");
    }
}
using IronPdf;

public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
        pdf.SaveAs("HtmlToPdf.pdf");
    }
}
Imports IronPdf

Public Class Program

	Shared Sub Main(ByVal args() As String)

		Dim renderer As New ChromePdfRenderer()
		Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("example.html")
		pdf.SaveAs("HtmlToPdf.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Entrée HTML

Itextsharp 2 related to Conversion HTML en PDF :

Contenu HTML d'entrée

PDF de sortie

Itextsharp 3 related to Conversion HTML en PDF :

Sortie HTML en PDF avec IronPDF

Dans cet exemple de code, nous avons d'abord créé une nouvelle instance ChromePdfRenderer, ce qui nous donne accès au puissant moteur de rendu qu'IronPDF utilise pour convertir le HTML en PDF. Ensuite, nous passons un fichier HTML à la méthode RenderHtmlFileAsPdf()method, qui à son tour rend le HTML en un PDF, stocké dans l'objet PdfDocument. Enfin, nous sauvegarderons le PDF à l'emplacement de fichier spécifié.

URL vers PDF :

Pour les développeurs cherchant à convertir le contenu d'une URL en PDFs, ne cherchez pas plus loin qu'IronPDF. Avec cette bibliothèque, vous pourrez créer des documents PDF parfaitement précis grâce à l'utilisation du moteur de rendu ChromePdfRenderer, qui conservera tous les styles et mises en page d'origine lors du rendu des documents.URL vers PDF. Pour cet exemple, nous utiliseronsthis URL, pour démontrer comment IronPDF peut gérer des styles CSS plus complexes.

using IronPdf;
public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        pdf.SaveAs("UrlToPdf.pdf");
    }
}
using IronPdf;
public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        pdf.SaveAs("UrlToPdf.pdf");
    }
}
Imports IronPdf
Public Class Program

	Shared Sub Main(ByVal args() As String)

		Dim renderer As New ChromePdfRenderer()

		Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
		pdf.SaveAs("UrlToPdf.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie PDF :

Itextsharp 4 related to URL vers PDF :

URL vers sortie PDF avec IronPDF

Tout comme dans notre exemple de conversion HTML en PDF, la première étape pour convertir toute URL en PDF à l'aide de IronPDF est de créer d'abord une nouvelle instance de ChromePdfRenderer. Une fois que la méthode a rendu le contenu de l'URL au format PDF en utilisant RenderUrlAsPdf, elle enregistre le PDF résultant dans un nouvel objet PdfDocument, avant que nous utilisions la méthode SaveAs pour enregistrer le PDF.

Signatures PDF :

Assurez l'authenticité de votre document PDF en appliquant unsignature numériqueà vos documents PDF. Il existe différentes méthodes que les développeurs pourraient envisager d'appliquer pour signer numériquement, telles que la signature numérique du PDF avec un certificat sécurisé, l'ajout d'une image d'une signature manuscrite à un PDF ou le tamponnage d'une image du certificat directement sur le PDF lui-même.

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;

public class Program
{

    static void Main(string[] args)
    {
        // Create PdfSignature object
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        var sig = new PdfSignature(cert);
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign and save PDF document
        sig.SignPdfFile("product_report.pdf");
    }
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;

public class Program
{

    static void Main(string[] args)
    {
        // Create PdfSignature object
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        var sig = new PdfSignature(cert);
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign and save PDF document
        sig.SignPdfFile("product_report.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Imports IronSoftware.Drawing

Public Class Program

	Shared Sub Main(ByVal args() As String)
		' Create PdfSignature object
		Dim cert As New X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable)

		Dim sig = New PdfSignature(cert)
		sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 350, 250))

		' Sign and save PDF document
		sig.SignPdfFile("product_report.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

PDF de sortie

Itextsharp 5 related to Signatures PDF :

Sortie de signature numérique utilisant IronPDF

Pour cet exemple, nous avons chargé notre objet certificat, créé une représentation visuelle de la signature, ou dans notre cas l'image IronPDF, et créé un nouvel objet PdfSignature, qui gère la signature du document PDF lui-même. Enfin, nous avons utilisé SignPdfFile pour signer et enregistrer notre document PDF.

Si vous souhaitez explorer davantage les fonctionnalités qu'IronPDF a à offrir, assurez-vous de consulter ses informationspage des fonctionnalités, ou le Guides pratiquesqui contiennent des exemples de code détaillés pour chaque fonctionnalité.

iText7 Principales Caractéristiques (Avec Exemples de Code)

iText7 offre une large gamme de fonctionnalités pour personnaliser et enrichir vos documents PDF. Avec un support étendu des formats pour diverses normes PDF et une manipulation avancée des PDF, cette bibliothèque PDF est riche en fonctionnalités. Cependant, comme mentionné précédemment, iText7 peut nécessiter des packages supplémentaires pour effectuer certaines tâches liées aux PDF, telles que la conversion de HTML en PDF.

Conversion de HTML en PDF :

Bien que iText7 ne puisse pas gérer seul la conversion HTML en PDF, nous pouvons utiliser pdfHTML, un module complémentaire payant sous la licence commerciale d'iText7, pour convertir le fichier HTML que nous avons utilisé dans notre exemple IronPDF en document PDF.

using iText.Html2pdf;

public class Program
{

    static void Main(string[] args)
    {
        using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
        using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
        {
            ConverterProperties converterProperties = new ConverterProperties();
            HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
            pdf.Close();
        }
    }
}
using iText.Html2pdf;

public class Program
{

    static void Main(string[] args)
    {
        using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
        using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
        {
            ConverterProperties converterProperties = new ConverterProperties();
            HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
            pdf.Close();
        }
    }
}
Imports iText.Html2pdf

Public Class Program

	Shared Sub Main(ByVal args() As String)
		Using htmlSource As FileStream = File.Open("example.html", FileMode.Open)
		Using pdf As FileStream = File.Open("HtmlToPdfOutput.pdf", FileMode.Create)
			Dim converterProperties As New ConverterProperties()
			HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties)
			pdf.Close()
		End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

PDF de sortie

Itextsharp 6 related to Conversion de HTML en PDF :

Sortie iText7 HTML vers PDF

Pour cet exemple, nous avons chargé le fichier HTML et spécifié l'emplacement du fichier pour enregistrer le PDF rendu. Ensuite, en utilisant la méthode ConvertToPdf, nous pouvons facilement convertir le fichier HTML en un document PDF.

URL vers PDF :

Il est maintenant temps de comparer comment iText7 se mesure à IronPDF en ce qui concerne la conversion de URL en PDF. Pour cela, nous utiliserons exactement la même URL qu'auparavant pour garantir une comparaison équitable.

using System;
using System.Net.Http;
using System.IO;
using iText.Html2pdf;

public class Program
{
    public static async System.Threading.Tasks.Task Main(string[] args)
    {
        string url = "https://www.apple.com";  // Replace with your target URL
        string outputPdfPath = "output.pdf";

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

                // Convert HTML to PDF
                using (FileStream pdfStream = new FileStream(outputPdfPath, FileMode.Create))
                {
                    ConverterProperties properties = new ConverterProperties();
                    HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties);
                }
            }

            Console.WriteLine("PDF created successfully: " + outputPdfPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
using System;
using System.Net.Http;
using System.IO;
using iText.Html2pdf;

public class Program
{
    public static async System.Threading.Tasks.Task Main(string[] args)
    {
        string url = "https://www.apple.com";  // Replace with your target URL
        string outputPdfPath = "output.pdf";

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

                // Convert HTML to PDF
                using (FileStream pdfStream = new FileStream(outputPdfPath, FileMode.Create))
                {
                    ConverterProperties properties = new ConverterProperties();
                    HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties);
                }
            }

            Console.WriteLine("PDF created successfully: " + outputPdfPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.IO
Imports iText.Html2pdf

Public Class Program
	Public Shared Async Function Main(ByVal args() As String) As System.Threading.Tasks.Task
		Dim url As String = "https://www.apple.com" ' Replace with your target URL
		Dim outputPdfPath As String = "output.pdf"

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

				' Convert HTML to PDF
				Using pdfStream As New FileStream(outputPdfPath, FileMode.Create)
					Dim properties As New ConverterProperties()
					HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties)
				End Using
			End Using

			Console.WriteLine("PDF created successfully: " & outputPdfPath)
		Catch ex As Exception
			Console.WriteLine("Error: " & ex.Message)
		End Try
	End Function
End Class
$vbLabelText   $csharpLabel

PDF de sortie

Itextsharp 7 related to URL vers PDF :

URL iText7 vers sortie PDF

Comme on peut le voir ici, l'approche de iText7 pour la conversion d'URL en PDF est plus manuelle et complexe. Tout d'abord, nous devons télécharger le contenu HTML depuis l'URL, avant de suivre des étapes similaires à celles vues dans l'exemple de conversion HTML en PDF pour rendre le contenu de notre URL dans un document PDF et l'enregistrer. Comme vous pouvez le voir sur l'image de sortie, iText7 n'a pas pu conserver beaucoup du style et de la mise en page d'origine, contrairement à IronPDF.

Signatures PDF :

using System.Security.Cryptography.X509Certificates;
using iText.Kernel.Pdf;
using iText.Signatures;
using iText.Bouncycastle.Crypto;
using iText.Commons.Bouncycastle.Cert;
using iText.Commons.Bouncycastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using iText.Bouncycastle.X509;
using iText.Kernel.Crypto;

public partial class Program
{
    static void Main(string[] args)
    {
        string inputPdf = "input.pdf";       // PDF to be signed
        string outputPdf = "signed_output.pdf";  // Signed PDF output
        string pfxFile = "IronSoftware.pfx";  // Path to your PFX certificate
        string password = "Passw0rd";   // Password for PFX file

        try
        {
            // Load your certificate
            Pkcs12Store ks = new Pkcs12StoreBuilder().Build();
            using (FileStream fs = new FileStream(pfxFile, FileMode.Open, FileAccess.Read))
            {
                ks.Load(fs, password.ToCharArray());
            }

            string? alias = null;
            foreach (string al in ks.Aliases)
            {
                if (ks.IsKeyEntry(al))
                {
                    alias = al;
                    break;
                }
            }

            if (alias == null)
            {
                throw new Exception("Alias not found in the PFX file.");
            }

            ICipherParameters pk = ks.GetKey(alias).Key;
            X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
            X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());

            // Convert BouncyCastle certificate to iText certificate
            var itextCertChain = new IX509Certificate[chain.Length];
            for (int i = 0; i < chain.Length; i++)
            {
                itextCertChain[i] = new X509CertificateBC(chain[i].Certificate);
            }

            // Create output PDF with signed content
            using (PdfReader reader = new PdfReader(inputPdf))
            using (FileStream os = new FileStream(outputPdf, FileMode.Create, FileAccess.Write))
            {
                PdfSigner signer = new PdfSigner(reader, os, new StampingProperties().UseAppendMode());

                // Set up the external signature (private key + digest algorithm)
                IPrivateKey iTextPrivateKey = new PrivateKeyBC(pk);
                IExternalSignature pks = new PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256);
                IExternalDigest digest = new BouncyCastleDigest();

                // Perform the signing (detached signature)
                signer.SignDetached(digest, pks, itextCertChain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
            }

            Console.WriteLine($"PDF digitally signed successfully: {outputPdf}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error signing PDF: {ex.Message}");
        }
    }
}
using System.Security.Cryptography.X509Certificates;
using iText.Kernel.Pdf;
using iText.Signatures;
using iText.Bouncycastle.Crypto;
using iText.Commons.Bouncycastle.Cert;
using iText.Commons.Bouncycastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using iText.Bouncycastle.X509;
using iText.Kernel.Crypto;

public partial class Program
{
    static void Main(string[] args)
    {
        string inputPdf = "input.pdf";       // PDF to be signed
        string outputPdf = "signed_output.pdf";  // Signed PDF output
        string pfxFile = "IronSoftware.pfx";  // Path to your PFX certificate
        string password = "Passw0rd";   // Password for PFX file

        try
        {
            // Load your certificate
            Pkcs12Store ks = new Pkcs12StoreBuilder().Build();
            using (FileStream fs = new FileStream(pfxFile, FileMode.Open, FileAccess.Read))
            {
                ks.Load(fs, password.ToCharArray());
            }

            string? alias = null;
            foreach (string al in ks.Aliases)
            {
                if (ks.IsKeyEntry(al))
                {
                    alias = al;
                    break;
                }
            }

            if (alias == null)
            {
                throw new Exception("Alias not found in the PFX file.");
            }

            ICipherParameters pk = ks.GetKey(alias).Key;
            X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
            X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());

            // Convert BouncyCastle certificate to iText certificate
            var itextCertChain = new IX509Certificate[chain.Length];
            for (int i = 0; i < chain.Length; i++)
            {
                itextCertChain[i] = new X509CertificateBC(chain[i].Certificate);
            }

            // Create output PDF with signed content
            using (PdfReader reader = new PdfReader(inputPdf))
            using (FileStream os = new FileStream(outputPdf, FileMode.Create, FileAccess.Write))
            {
                PdfSigner signer = new PdfSigner(reader, os, new StampingProperties().UseAppendMode());

                // Set up the external signature (private key + digest algorithm)
                IPrivateKey iTextPrivateKey = new PrivateKeyBC(pk);
                IExternalSignature pks = new PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256);
                IExternalDigest digest = new BouncyCastleDigest();

                // Perform the signing (detached signature)
                signer.SignDetached(digest, pks, itextCertChain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
            }

            Console.WriteLine($"PDF digitally signed successfully: {outputPdf}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error signing PDF: {ex.Message}");
        }
    }
}
Imports System.Security.Cryptography.X509Certificates
Imports iText.Kernel.Pdf
Imports iText.Signatures
Imports iText.Bouncycastle.Crypto
Imports iText.Commons.Bouncycastle.Cert
Imports iText.Commons.Bouncycastle.Crypto
Imports Org.BouncyCastle.Pkcs
Imports Org.BouncyCastle.Crypto
Imports iText.Bouncycastle.X509
Imports iText.Kernel.Crypto

Partial Public Class Program
	Shared Sub Main(ByVal args() As String)
		Dim inputPdf As String = "input.pdf" ' PDF to be signed
		Dim outputPdf As String = "signed_output.pdf" ' Signed PDF output
		Dim pfxFile As String = "IronSoftware.pfx" ' Path to your PFX certificate
		Dim password As String = "Passw0rd" ' Password for PFX file

		Try
			' Load your certificate
			Dim ks As Pkcs12Store = (New Pkcs12StoreBuilder()).Build()
			Using fs As New FileStream(pfxFile, FileMode.Open, FileAccess.Read)
				ks.Load(fs, password.ToCharArray())
			End Using

'INSTANT VB WARNING: Nullable reference types have no equivalent in VB:
'ORIGINAL LINE: string? alias = null;
			Dim [alias] As String = Nothing
			For Each al As String In ks.Aliases
				If ks.IsKeyEntry(al) Then
					[alias] = al
					Exit For
				End If
			Next al

			If [alias] Is Nothing Then
				Throw New Exception("Alias not found in the PFX file.")
			End If

			Dim pk As ICipherParameters = ks.GetKey([alias]).Key
			Dim chain() As X509CertificateEntry = ks.GetCertificateChain([alias])
			Dim cert As New X509Certificate2(chain(0).Certificate.GetEncoded())

			' Convert BouncyCastle certificate to iText certificate
			Dim itextCertChain = New IX509Certificate(chain.Length - 1){}
			For i As Integer = 0 To chain.Length - 1
				itextCertChain(i) = New X509CertificateBC(chain(i).Certificate)
			Next i

			' Create output PDF with signed content
			Using reader As New PdfReader(inputPdf)
			Using os As New FileStream(outputPdf, FileMode.Create, FileAccess.Write)
				Dim signer As New PdfSigner(reader, os, (New StampingProperties()).UseAppendMode())

				' Set up the external signature (private key + digest algorithm)
				Dim iTextPrivateKey As IPrivateKey = New PrivateKeyBC(pk)
				Dim pks As IExternalSignature = New PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256)
				Dim digest As IExternalDigest = New BouncyCastleDigest()

				' Perform the signing (detached signature)
				signer.SignDetached(digest, pks, itextCertChain, Nothing, Nothing, Nothing, 0, PdfSigner.CryptoStandard.CMS)
			End Using
			End Using

			Console.WriteLine($"PDF digitally signed successfully: {outputPdf}")
		Catch ex As Exception
			Console.WriteLine($"Error signing PDF: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

PDF de sortie

Itextsharp 8 related to Signatures PDF :

Sortie de signature numérique iText7

Comme vous pouvez le voir, bien qu'iText7 soit capable de signer numériquement des documents PDF, le processus a tendance à être beaucoup plus complexe qu'avec IronPDF. Ce code charge un certificat PFX et l'utilise pour signer numériquement un PDF. Il extrait la clé privée et le certificat, configure le signataire et ajoute une signature détachée au PDF, puis enregistre le document signé.

Analyse concurrentielle

Performance et convivialité

Avantages clés d'IronPDF :

IronPDF est réputé pour sa facilité d'utilisation et son optimisation pour des performances élevées, offrant une API plus simple qui simplifie les tâches courantes telles que la conversion de HTML en PDF. Il offre des méthodes de haut niveau qui abstraient les tâches complexes de traitement des PDF, permettant aux développeurs de générer, modifier et manipuler des PDF avec un minimum de code. Pour le traitement de documents à grande échelle ou multi-thread, IronPDF prend en charge l'exécution parallèle.

  • API facile à utiliser – Des méthodes de haut niveau simplifient les tâches courantes telles que la conversion de HTML en PDF.
  • Configuration minimale requise – S'intègre facilement dans les projets .NET.
  • Exécution parallèle intégrée – Optimisée pour gérer la génération et la conversion en masse de PDF.
  • API simplifiée – Nécessite moins de lignes de code pour obtenir des résultats.

iText 7 - Puissant mais complexe

iText 7, en revanche, offre un niveau de contrôle plus détaillé et plus granulaire, ce qui peut être avantageux pour les développeurs qui nécessitent une personnalisation approfondie. Il fournit une API robuste pour travailler avec des opérations PDF de bas niveau. Cependant, en raison de sa complexité, iText 7 nécessite souvent plus de code pour obtenir des résultats similaires par rapport à IronPDF.

  • Contrôle granulaire des PDF – Idéal pour les applications d'entreprise nécessitant une conformité stricte(par exemple, PDF/A, PDF/UA, signatures numériques).
  • Hautement personnalisable – Offre des manipulations PDF de bas niveau pour des cas d'utilisation avancés.
  • Courbe d'apprentissage plus raide – Nécessite plus de configuration et de réglages par rapport à IronPDF.
  • Plus intensif en code – Les tâches courantes nécessitent souvent des implémentations plus longues.

Licences et coûts

Lors du choix d'une bibliothèque PDF pour un projet .NET, les considérations de licence et de coût sont essentielles. Tant IronPDF que iText 7 suivent des modèles de licence différents, et le choix du bon dépend des exigences de votre projet, de votre budget et de vos besoins en conformité.

Licences et coût d'IronPDF

IronPDF suit un modèle de licence commerciale, ce qui signifie que bien qu'il offre un essai gratuit pour la licence commerciale et soit gratuit pour le développement et l'évaluation, une licence payante est nécessaire pour une utilisation en production complète. La tarification est transparente et dépend de facteurs tels que l'échelle d'utilisation, le nombre de développeurs et le type de projet.

🔹 Licences IronPDF :

  • Modèle de licence commerciale(Aucune restriction open source).
  • Tarification claire basée sur les licences développeur ou d'équipe.
  • Pas de coût supplémentaire pour la conversion HTML en PDF, la sécurité PDF ou d'autres fonctionnalités principales.
  • Idéal pour les entreprises qui ont besoin d'une solution PDF simple et économique.

    📌 En résumé : IronPDF inclut toutes les fonctionnalités principales dans une licence unique, ce qui en fait un choix économique pour les équipes et les entreprises.

Licence et coût d'iText7

iText7 fonctionne sous un modèle de double licence, qui comprend :

  1. AGPL(Licence Publique Générale Affero GNU)** – Gratuit pour les projets open-source, mais nécessite que l'ensemble du projet utilisant iText7 soit open-source et conforme à l'AGPL. Cela signifie que toute modification ou ajout apporté au projet doit également être partagé publiquement.

  2. Licence Commerciale – Requise pour tout logiciel propriétaire ou application commerciale qui ne souhaite pas divulguer son code source. La structure tarifaire varie en fonction de l'utilisation, du niveau de support et de l'échelle de déploiement.

    Pour les entreprises qui souhaitent intégrer iText 7 dans des logiciels propriétaires, une licence commerciale est obligatoire. Le coût peut être significatif, surtout pour les solutions de niveau entreprise, car il est tarifé par développeur, mais il offre un accès au support professionnel et garantit la conformité légale.

    🔹 Pourquoi iText 7 peut être plus cher :

    • Tarification par développeur – Chaque développeur a besoin d'une licence distincte, augmentant les coûts totaux pour les équipes.
    • Les fonctionnalités essentielles nécessitent des modules complémentaires coûteux

    • pdfHTML(Payé)– Requis pour la conversion de HTML en PDF.

    • pdfOCR(Payé) – Nécessaire pour la reconnaissance de texte à partir d'images.
    • pdfCalligraph(Payé)Améliore le rendu du texte et la prise en charge des polices.
    • pdfRender(Payé)– Ajoute la conversion de PDF en image.
    • pdf2Data(Payé)– Extrait des données structurées à partir de PDF.
    • Les coûts d'entreprise peuvent rapidement augmenter lorsqu'il faut de multiples fonctionnalités et développeurs.

    📌 En résumé : Si votre équipe nécessite plusieurs développeurs et des fonctionnalités clés telles que HTML-to-PDF et OCR, iText 7 peut être considérablement plus coûteux qu'IronPDF, qui offre ces fonctionnalités sans frais supplémentaires.

Scénarios d'utilisation

Petits projets vs. projets d'entreprise

Pour les projets de petite à moyenne envergure nécessitant une mise en œuvre rapide des fonctionnalités PDF avec une configuration minimale, IronPDF est un choix convaincant grâce à son API conviviale et sa vaste gamme de fonctionnalités. Les projets de niveau entreprise qui nécessitent une personnalisation poussée et le respect de normes PDF spécifiques peuvent bénéficier des capacités avancées d'iText7, cependant, IronPDF s'avère également être un candidat solide pour ce niveau de travail grâce à ses hautes performances, ses options de licence et sa convivialité.

Usage académique et commercial

Dans les milieux académiques ou les projets open-source, la licence AGPL d'iText 7 permet une utilisation gratuite, à condition que la licence du projet soit compatible. Pour les applications commerciales, IronPDF et iText 7 nécessitent tous deux l'achat d'une licence commerciale. Il est conseillé de revoir les conditions de licence de chaque bibliothèque pour garantir la conformité avec les objectifs de votre projet.

Conclusion

Choisir la bonne bibliothèque PDF pour votre projet .NET est une décision cruciale qui dépend de facteurs tels que la facilité d'utilisation, l'ensemble des fonctionnalités et les besoins en matière de licence. IronPDF et iText 7 offrent tous deux de puissantes fonctionnalités PDF, mais ils répondent à des exigences différentes. Au-delà de ces deux bibliothèques, des concurrents tels qu'Aspose, Syncfusion et PDFSharp proposent tous des bibliothèques PDF .NET concurrentielles. Cependant, IronPDF est constamment en tête de l'industrie des PDF grâce à son API facile à utiliser, son ensemble complet de fonctionnalités et son efficacité économique.

Ci-dessous, nous avons résumé un argument convaincant expliquant pourquoi IronPDF est un excellent choix pour tous vos besoins en bibliothèque PDF .NET.

Vue d'ensemble de la comparaison IronPDF vs iText7

Résumé de la comparaison IronPDF vs iText7

Avantages d'IronPDF

  • Facilité d'utilisation : IronPDF est conçu avec un accent sur la simplicité, ce qui en fait un choix idéal pour les développeurs qui ont besoin d'intégrer rapidement des fonctionnalités PDF dans leurs applications .NET. Son API intuitive réduit la courbe d'apprentissage et accélère le temps de développement.
  • Documentation complète et support : IronPDF propose une documentation détaillée et un support client réactif, garantissant que les développeurs peuvent progresser rapidement et résoudre efficacement les problèmes.
  • Conversion HTML en PDF transparente : IronPDF excelle dans la conversion de l'HTML, y compris le CSS et JavaScript, en PDF de haute qualité. C'est particulièrement bénéfique pour les projets qui doivent générer des PDF de manière dynamique à partir de contenus web.
  • Licence commerciale : Pour les applications commerciales, IronPDF propose des options de licence flexibles, garantissant la conformité sans les restrictions pouvant accompagner les licences open source.

Limitations d'iText

  • Complexité : Bien que iText 7 propose des fonctionnalités avancées et une personnalisation poussée, son API peut être complexe pour les développeurs novices en manipulation de PDF. Cela peut entraîner des temps de développement plus longs pour les tâches courantes par rapport à l'approche plus simple d'IronPDF.
  • Coûts de licence pour une utilisation commerciale : L'AGPL d'iText 7 exige que toutes les œuvres dérivées soient open-source à moins que vous n'achetiez une licence commerciale. Cela pourrait être une limitation pour les applications propriétaires qui ne peuvent pas se conformer aux termes de l'AGPL.
  • Fonctionnalités Centriques sur Java : Bien qu'iText 7 soit disponible pour .NET, ses origines dans l'écosystème Java peuvent parfois le faire paraître moins natif pour les développeurs C#, notamment lorsqu'il s'agit de gérer des problèmes multiplateformes ou une intégration avec des outils basés sur Java.

Pensées finales

Si votre projet nécessite une génération rapide de PDF, surtout à partir de contenu web, et que vous recherchez une solution facile à utiliser,IronPDFest probablement le meilleur choix. Cependant, si votre application nécessite une manipulation PDF avancée ou une conformité stricte aux normes PDF et que vous avez besoin de la flexibilité pour personnaliser largement,iText7pourrait être plus approprié. Considérez les exigences spécifiques de votre projet et les contraintes de licence pour déterminer la meilleure bibliothèque pour vos besoins.

🎯 Essayez IronPDF dès aujourd'hui : Téléchargez leessai gratuitpour commencer à explorer par vous-même les puissantes fonctionnalités d'IronPDF!

Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Jordi Bardia
Ingénieur logiciel
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT
IronPDF et EvoPdf : Une comparaison
SUIVANT >
Comparaison de Syncfusion PDF Viewer pour la conversion de HTML en PDF