using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
iTextSharp C# HTML to PDF Alternative pour .NET Core
Chaknith Bin
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 offre une comparaison détaillée entre deux bibliothèques PDF C# de premier plan : IronPDF et iText 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 PDFs 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 ?
✅ Support pour HTML-to-PDF – Permet-il une conversion facile du contenu web ?
✅ Licences 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 est la rapidité de génération ou de traitement des fichiers PDF ?
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 :
Support intégré de conversion HTML en PDF – Convertissez des pages web, HTML, CSS et JavaScript en PDF sans modules complémentaires supplémentaires.
Sécurité PDF – Chiffrez les PDFs, définissez une protection par mot de passe, et gérez les autorisations pour la visualisation, l'impression ou l'édition.
Filigranes et annotations - Appliquez facilement des filigranes texte et image, des tampons ou des commentaires aux documents.
Remplissage de formulaires et extraction de données – Renseignez les formulaires PDF interactifs par programmation et extrayez les données des formulaires.
📌 Idéal pour : Les développeurs à la recherche d'une solution simple et tout-en-un sans les tracas d'extensions 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é sur la structure du PDF, les métadonnées et le rendu.
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'extension payante pdfHTML permet la conversion de contenu HTML en fichiers PDF.
Support Java et .NET : Principalement conçu pour Java, avec prise en charge de 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'entrer dans les fonctionnalités et leurs exemples de code correspondants, jetons d'abord un coup d'œil à l'une des plus grandes différences fonctionnelles entre IronPDF et iText 7, la conversion HTML en PDF.
IronPDF prend en charge nativement le rendu de HTML, CSS, et JavaScript sans nécessiter de composants supplémentaires.
iText 7, quant à lui, 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.
Diagramme de flux de comparaison HTML en PDF
📌 Conclusion : Si vous avez besoin de conversion HTML en PDF, IronPDF est la solution la plus rentable car elle inclut cette fonctionnalité par défaut.
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 :
Convertissez le contenu HTML en documents PDF de haute qualité avec le moteur de rendu puissant d'IronPDF. Le moteur de rendu d'IronPDF ne se contente pas de convertir le contenu HTML, il vous permet également de conserver tous les styles CSS et l'interactivité JavaScript originaux.
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
Contenu HTML d'entrée
Sortie PDF
Conversion HTML en PDF avec IronPDF
Dans cet exemple de code, nous avons d'abord créé une nouvelle instance de ChromePdfRenderer, ce qui nous donne accès au puissant moteur de rendu qu'IronPDF utilise pour convertir du HTML en PDF. Ensuite, nous passons un fichier HTML à la méthode RenderHtmlFileAsPdf(), 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 parfaits au pixel près en utilisant le moteur de rendu ChromePdfRenderer, qui conservera tous les styles et mises en page originaux lors du rendu de l'URL en PDF. Pour cet exemple, nous utiliserons cette URL, pour démontrer comment IronPDF peut gérer un style CSS plus complexe.
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 :
Sortie PDF depuis une URL à l'aide de IronPDF
Tout comme dans notre exemple de conversion HTML en PDF, la première étape pour convertir n'importe quelle URL en PDF avec 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 sauvegarde le PDF résultant dans un nouvel objet PdfDocument, avant que nous n'utilisions la méthode SaveAs pour enregistrer le PDF.
Signatures PDF :
Assurez l'authenticité de votre document PDF en appliquant une signature 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
Sortie PDF
Sortie de signature numérique à l'aide de IronPDF
Pour cet exemple, nous avons chargé notre objet de 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é la méthode SignPdfFile pour signer et enregistrer notre document PDF.
Si vous souhaitez explorer davantage les fonctionnalités qu'IronPDF propose, assurez-vous de consulter sa page des fonctionnalités informative ou les guides pratiques qui 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
Sortie PDF
Sortie HTML vers PDF d'iText7
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
Sortie PDF
iText7 URL 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
Sortie 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 comme 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é pour gérer la génération et la conversion de PDF en masse.
✅ 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 granulé 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 une manipulation PDF de bas niveau pour les cas d'utilisation avancés.
❌ Courbe d'apprentissage plus raide – Nécessite plus d'installation et de configuration 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 matière de 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 simple basée sur des licences développeur ou équipe.
✅ Aucun coût supplémentaire pour la conversion de 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.
📌 Conclusion : IronPDF inclut toutes les principales fonctionnalités dans une seule licence, 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 licence duale, qui inclut :
AGPL (GNU Affero General Public License) – Gratuit pour les projets open-source, mais exige que l'intégralité 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.
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, ce qui augmente les coûts totaux pour les équipes.
Les fonctionnalités essentielles nécessitent des modules complémentaires coûteux :
pdfHTML (Payant) – Requis pour la conversion HTML en PDF.
pdfOCR (Payant) – Nécessaire pour la reconnaissance de texte à partir d'images.
pdfCalligraph (Payant) – Améliore le rendu du texte et le support des polices.
pdfRender (Payant) – Ajoute la conversion PDF vers image.
pdf2Data (Payant) – Extrait des données structurées des PDF.
Les coûts d'entreprise peuvent rapidement s'accumuler lorsque de multiples fonctionnalités et développeurs sont nécessaires.
📌 En résumé : Si votre équipe nécessite plusieurs développeurs et des fonctionnalités clés comme la conversion HTML en PDF et l'OCR, iText 7 peut être nettement 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é.
Utilisation académique et commerciale
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.
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 rapidement se familiariser et résoudre efficacement les problèmes.
Conversion HTML en PDF transparente : IronPDF excelle dans la conversion de HTML, y compris 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.
Licences commerciales : 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 qu'iText 7 offre des fonctionnalités avancées et une grande personnalisation, 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 : La licence AGPL d'iText 7 exige que tout travail dérivé soit 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 centrées sur Java : Bien que iText 7 soit disponible pour .NET, ses origines dans l'écosystème Java peuvent parfois le rendre moins natif pour les développeurs C#, surtout lorsqu'il s'agit de problèmes multiplateformes ou d'intégration avec des outils basés sur Java.
Pensées finales
Si votre projet nécessite une génération rapide de PDF, en particulier à partir de contenu web, et que vous recherchez une solution facile à utiliser, IronPDF est probablement le meilleur choix. Cependant, si votre application exige une manipulation avancée de PDF ou un strict respect des normes PDF et que vous avez besoin de la flexibilité pour personnaliser de manière extensive, iText7 pourrait être plus adapté. 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 l'essai gratuit pour 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.
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.
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier