Comment migrer d'iText vers IronPDF en C#
La migration d'iText versIronPDFtransforme votre flux de travail PDF .NET d'une API programmatique nécessitant la construction manuelle d'objets Paragraph, Table et Cell en une approche moderne HTML-first avec une prise en charge complète de CSS3 et JavaScript. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les problèmes de licence AGPL et le besoin de modules complémentaires pdfHTML distincts pour les développeurs .NET professionnels.
Pourquoi migrer d'iText à IronPDF
Le piège de la licence AGPL
iText présente de sérieux risques juridiques et commerciaux pour les applications commerciales, que de nombreuses équipes de développement découvrent trop tard :
-
Licence virale AGPL : Si vous utilisez iText dans une application Web, l'AGPL vous oblige à publier en open source l'INTÉGRALITÉ de votre application — pas seulement le code PDF, mais l'intégralité de votre base de code. La plupart des logiciels commerciaux ne sont pas concernés.
-
Pas de licence perpétuelle : iText a supprimé les licences perpétuelles, ce qui impose des renouvellements d'abonnement annuels et augmente le coût total de possession.
-
Coût du module complémentaire pdfHTML : La fonctionnalité HTML vers PDF nécessite le module complémentaire pdfHTML, vendu séparément à un coût supplémentaire en plus de la licence de base.
-
Audits de licences complexes : Les déploiements en Enterprise sont confrontés à une complexité des licences et à un risque d'audit qui peuvent retarder les projets et créer des risques juridiques.
-
API uniquement programmatique : iText nécessite une construction PDF manuelle de bas niveau avec des objets
Paragraph,Table,Cell— fastidieux et sujet aux erreurs pour les mises en page complexes. - Rendu Web moderne limité : même avec pdfHTML, le contenu CSS et JavaScriptcomplexe nécessite un effort supplémentaire important.
Comparaison entreIronPDFet iText
| Fonction | iText 7 / iTextSharp | IronPDF |
|---|---|---|
| Licence | AGPL (virale) ou abonnement onéreux | Option commerciale, perpétuelle |
| HTML vers PDF | Module complémentaire pdfHTML séparé | Rendu Chromium intégré |
| Support CSS | CSS de base | CSS3 complet, Flexbox, Grille |
| JavaScript | Aucun | Exécution complète |
| Paradigme API | Programmatique (paragraphe, tableau, cellule) | HTML d'abord avec CSS |
| Courbe d'apprentissage | Steep (système de coordonnées PDF) | Convivialité pour les développeurs web |
| Risque lié à l'Open Source | Doit utiliser des applications web open-source | Aucune exigence virale |
| Modèle de tarification | Abonnement uniquement | Perpétuel ou abonnement |
Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base à l'épreuve du temps grâce à son approche HTML-first qui tire parti des compétences en développement web que votre équipe possède déjà.
Évaluation de la complexité de la migration
Estimation de l'effort par fonctionnalité
| Fonction | Complexité de la migration |
|---|---|
| HTML vers PDF | Très faible |
| Fusionner des PDF | Faible |
| Texte et images | Faible |
| Tableaux | Moyen |
| En-têtes/Pieds de page | Moyen |
| Sécurité/Cryptage | Faible |
Changement de paradigme
Le Shift fondamental de cette migration iText réside dans le passage de la construction de PDF par programmation à un rendu privilégiant le HTML :
iText : PdfWriter → PdfDocument → Document → Add(Paragraph) → Add(Table)
IronPDF : ChromePdfRenderer → RenderHtmlAsPdf(htmlString) → SaveAs()
Ce changement de paradigme est libérateur : au lieu d'apprendre le modèle d'objet d'iText, vous utilisez les compétences HTML et CSS que les développeurs web possèdent déjà.
Avant de commencer
Prérequis
- Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Accès à NuGet : possibilité d'installer des packages NuGet
- Licence IronPDF : Obtenez votre clé de licence sur IronPDF
Modifications du paquet NuGet
# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp
# Install IronPDF
dotnet add package IronPdf
# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp
# Install IronPDF
dotnet add package IronPdf
Configuration de la licence
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Identifier l'utilisation d'iText
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
Référence API complète
Mappages de classes
| classe iText 7 | classe iTextSharp | Équivalent d'IronPDF |
|---|---|---|
PdfWriter |
PdfWriter |
ChromePdfRenderer |
PdfDocument |
Document |
PdfDocument |
Document |
Document |
ChromePdfRenderer.RenderHtmlAsPdf() |
Paragraph |
Paragraph |
HTML <p>, <h1>, etc. |
Table |
PdfPTable |
HTML <table> |
Cell |
PdfPCell |
HTML <td>, <th> |
Image |
Image |
HTML <img> |
PdfReader |
PdfReader |
PdfDocument.FromFile() |
PdfMerger |
N/A | PdfDocument.Merge() |
Mappages d'espaces de noms
| espace de noms iText 7 | Équivalent d'IronPDF |
|---|---|
iText.Kernel.Pdf |
IronPdf |
iText.Layout |
IronPdf |
iText.Layout.Element |
Utiliser des éléments HTML |
iText.Html2Pdf |
IronPdf (intégré) |
iText.IO.Image |
Utilisez HTML <img> |
iText.Kernel.Utils |
IronPdf |
Exemples de migration de code
Exemple 1 : Conversion HTML vers PDF
Avant (iText 7):
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}
Imports iText.Html2pdf
Imports System.IO
Class Program
Shared Sub Main()
Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
Dim outputPath As String = "output.pdf"
Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
HtmlConverter.ConvertToPdf(html, fs)
End Using
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
L'approche iText nécessite le package séparé iText.Html2pdf (module complémentaire pdfHTML, vendu séparément), créant un FileStream, et enveloppe le tout dans des instructions using pour une élimination correcte. La méthode HtmlConverter.ConvertToPdf() écrit directement dans le flux.
L'approche d'IronPDF est plus propre : créez un ChromePdfRenderer, appelez RenderHtmlAsPdf() avec votre chaîne HTML, et appelez SaveAs() sur le PdfDocument résultant. Il n'y a pas de paquets séparés, pas de gestion de flux, et le moteur de rendu Chromium fournit un support CSS3 et JavaScriptsupérieur. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires.
Exemple 2 : fusionner plusieurs PDF
Avant (iText 7):
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Utils
Imports System.IO
Class Program
Shared Sub Main()
Dim outputPath As String = "merged.pdf"
Dim inputFiles As String() = {"document1.pdf", "document2.pdf", "document3.pdf"}
Using writer As New PdfWriter(outputPath)
Using pdfDoc As New PdfDocument(writer)
Dim merger As New PdfMerger(pdfDoc)
For Each file As String In inputFiles
Using sourcePdf As New PdfDocument(New PdfReader(file))
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
End Using
Next
End Using
End Using
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim pdfDocuments As New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
}
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
End Sub
End Class
L'opération de fusion iText nécessite un important code répétitif : création d'un PdfWriter pour la sortie, encapsulation dans un PdfDocument, création d'un PdfMerger, puis itération sur les fichiers sources avec des instructions imbriquées using pour chaque PdfDocument et PdfReader. Vous devez également spécifier les plages de pages avec merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages()).
IronPDF réduit cela à trois étapes : charger les documents avec PdfDocument.FromFile(), appeler la méthode statique PdfDocument.Merge() avec la liste et enregistrer. L'ensemble de l'opération de fusion devient lisible et facile à maintenir. En savoir plus sur la fusion et la division de PDF.
Exemple 3 : Créer un PDF avec du texte et des images
Avant (iText 7):
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.IO.Image
Class Program
Shared Sub Main()
Dim outputPath As String = "document.pdf"
Using writer As New PdfWriter(outputPath),
pdf As New PdfDocument(writer),
document As New Document(pdf)
document.Add(New Paragraph("Sample PDF Document"))
document.Add(New Paragraph("This document contains text and an image."))
Dim img As New Image(ImageDataFactory.Create("image.jpg"))
img.SetWidth(200)
document.Add(img)
End Using
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("document.pdf")
End Sub
End Class
Cet exemple illustre parfaitement le changement de paradigme. iText nécessite :
- Instructions triplement imbriquées
using(PdfWriter,PdfDocument,Document) - Création d'objets
Paragraphpour chaque élément de texte avecnew Paragraph() - Utilisation de
ImageDataFactory.Create()pour charger les images - Création d'un objet
Imageet appel séparé deSetWidth() - Appel de
document.Add()pour chaque élément
IronPDF utilise le HTML standard : <h1> pour les titres, <p> pour les paragraphes et <img> pour les images avec un attribut width. Les développeurs web peuvent immédiatement tirer parti de leurs compétences existantes et les concepteurs peuvent styliser les documents à l'aide des feuilles de style CSS qu'ils connaissent déjà.
Notes de migration essentielles
Changement de paradigme : De la programmation à l'HTML d'abord
Le changement le plus important dans cette migration iText est d'ordre conceptuel. iText crée des PDF par programmation :
// iText approach
document.Add(new Paragraph("Title")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(24)
.SetBold());
var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
// iText approach
document.Add(new Paragraph("Title")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(24)
.SetBold());
var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
' iText approach
document.Add(New Paragraph("Title") _
.SetTextAlignment(TextAlignment.CENTER) _
.SetFontSize(24) _
.SetBold())
Dim table = New Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth()
table.AddHeaderCell(New Cell().Add(New Paragraph("ID")))
table.AddHeaderCell(New Cell().Add(New Paragraph("Name")))
' ... many more lines
IronPDF utilise HTML et CSS :
//IronPDFapproach
string html = @"
<style>
h1 { text-align: center; font-size: 24px; font-weight: bold; }
table { width: 100%; border-collapse: collapse; }
th { background-color: #4CAF50; color: white; padding: 8px; }
</style>
<h1>Title</h1>
<table>
<tr><th>ID</th><th>Name</th></tr>
</table>";
var pdf = renderer.RenderHtmlAsPdf(html);
//IronPDFapproach
string html = @"
<style>
h1 { text-align: center; font-size: 24px; font-weight: bold; }
table { width: 100%; border-collapse: collapse; }
th { background-color: #4CAF50; color: white; padding: 8px; }
</style>
<h1>Title</h1>
<table>
<tr><th>ID</th><th>Name</th></tr>
</table>";
var pdf = renderer.RenderHtmlAsPdf(html);
'IronPDFapproach
Dim html As String = "
<style>
h1 { text-align: center; font-size: 24px; font-weight: bold; }
table { width: 100%; border-collapse: collapse; }
th { background-color: #4CAF50; color: white; padding: 8px; }
</style>
<h1>Title</h1>
<table>
<tr><th>ID</th><th>Name</th></tr>
</table>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
La licence AGPL a été éliminée
la licence AGPL d'iText nécessite la mise en open source de l'ensemble de votre application web ou l'achat d'une licence commerciale onéreuse. La licence commerciale d'IronPDF permet un déploiement dans des logiciels propriétaires sans exigence de licence virale.
Aucun complément pdfHTML requis
iText nécessite le module complémentaire pdfHTML pour la conversion HTML-PDF, vendu à un prix supplémentaire.IronPDFinclut le rendu HTML complet basé sur Chromium dans le package de base.
Method Replacement Patterns (Modèles de remplacement de méthodes)
| modèle iText | Remplacement d'IronPDF |
|---|---|
SetTextAlignment(TextAlignment.CENTER) |
CSS text-align: center |
SetFontSize(24) |
CSS font-size: 24px |
SetBold() |
CSS font-weight: bold |
new Table(3) |
HTML <table> |
AddHeaderCell(new Cell().Add(new Paragraph())) |
HTML <th> |
AddCell(new Cell().Add(new Paragraph())) |
HTML <td> |
Dépannage
Édition 1 : PdfWriter/Document Pattern (en anglais)
Problème : Le code utilise le modèle d'imbrication PdfWriter → PdfDocument → Document.
Solution : Remplacer par ChromePdfRenderer :
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))
// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))
// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
Édition 2 : HtmlConverter introuvable
Problème : Le code utilise iText.Html2pdf.HtmlConverter qui nécessite le module complémentaire pdfHTML.
Solution : Utilisez le rendu HTML intégré d'IronPDF :
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);
//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);
//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
' iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream)
' IronPDF(built-in)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
Édition 3 : Complexité de PdfMerger
Problème : iText PdfMerger nécessite des lecteurs imbriqués et une spécification de plage de pages.
Solution : Utilisez la méthode de fusion statique d'IronPDF :
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
// PdfMerger merger = new PdfMerger(pdfDoc);
// foreach (string file in inputFiles)
// {
// using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
// {
// merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
// }
// }
// }
//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
// PdfMerger merger = new PdfMerger(pdfDoc);
// foreach (string file in inputFiles)
// {
// using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
// {
// merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
// }
// }
// }
//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
Imports System.Collections.Generic
' iText merger pattern (delete this)
' Using pdfDoc As New PdfDocument(writer)
' Dim merger As New PdfMerger(pdfDoc)
' For Each file As String In inputFiles
' Using sourcePdf As New PdfDocument(New PdfReader(file))
' merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
' End Using
' Next
' End Using
' IronPDF(simple)
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
Liste de contrôle de la migration
Pré-migration
- Inventorier tous les appels à l'API iText dans le code source
- Identifier les modèles de construction de PDF programmatiques (Paragraphe, Tableau, Cellule)
- Utilisation de Document HtmlConverter (module complémentaire pdfHTML)
- Évaluer le risque de conformité à l'AGPL
- Obtenir une clé de licence IronPDF
Migration de code
- Supprimer les packages NuGet iText :
dotnet remove package itext7 - Installez le package NuGet IronPDF :
dotnet add package IronPdf - Mise à jour des importations d'espace de noms (
using iText.*→using IronPdf) - Remplacez le modèle
DocumentparChromePdfRenderer - Convertir
Cellen éléments HTML - Remplacez
HtmlConverter.ConvertToPdf()parRenderHtmlAsPdf() - Mise à jour des opérations de fusion vers
PdfDocument.Merge() - Ajouter l'initialisation de la clé de licence au démarrage
Essai
- Tester tous les chemins de génération de PDF
- Vérifier que le rendu visuel correspond aux attentes
- Test avec du contenu HTML/CSS complexe
- Performances de référence
Après la migration
- Supprimer les fichiers de licence et les références iText
- Mise à jour de la documentation
- Annuler l'abonnement iText (le cas échéant)
- Archiver le code iText hérité

