Comment utiliser Java Script avec HTML pour PDF en utilisant C#
Pourquoi migrer de DynamicPDFà IronPDF?
La fragmentation des produits de DynamicPDFest un moteur commun pour la migration. Comprendre le modèle de licence aide à évaluer le vrai coût de votre implémentation actuelle.
Le problème de la fragmentation des produits
DynamicPDF (ceTe Software) propose des fonctionnalités PDF en tant que packages sous licence séparément :
- DynamicPDF Core Suite (
ceTe.DynamicPDF.CoreSuite.NET, v12.43.0): Bundles Generator, Merger, and ReportWriter - DynamicPDF HTML Converter (
ceTe.DynamicPDF.HtmlConverter.NET, v3.3.0) : HTML vers PDF comme un module complémentaire séparé - DynamicPDF Converter (
ceTe.DynamicPDF.Converter.NET, v3.32.0) : Conversion de formats Office et 50+ autres - DynamicPDF PrintManager (
ceTe.DynamicPDF.Printing.NET) : Impression programmée - DynamicPDF Rasterizer (
ceTe.DynamicPDF.Rasterizer.NET): PDF-to-image - DynamicPDF Viewer (
ceTe.DynamicPDF.Viewer.NET) : Contrôle de visualisation WinForms/WPF
Generator, Merger et ReportWriter sont intégrés dans Core Suite, mais le rendu HTML, la rasterisation, l'impression et le visionnage nécessitent chacun un achat séparé.IronPDF regroupe ces capacités dans une seule bibliothèque et licence.
Comparaison des architectures
| Aspect | DynamicPDF | IronPDF |
|---|---|---|
| Modèle de produit | Fragmenté (5+ produits) | Bibliothèque tout-en-un |
| Licence | Plusieurs licences requises | Licence unique |
| HTML à PDF | Achat séparé d'un module complémentaire | Intégrée, basée sur Chromium |
| Support CSS | Limité (nécessite un module complémentaire) | CSS3 complet avec Flexbox/Grid |
| Style API | Positionnement par coordonnées | HTML/CSS + manipulation API |
| Courbe d'apprentissage | Steep (plusieurs API) | Doux (technologies web) |
| Moderne .NET | .NET Standard 2.0 / .NET 6 / .NET 8 / .NET Framework 4.6.2 | .NET 6/7/8/9+ natif |
Avantages principaux de la migration
- Un seul package : un package NuGet remplace 3 à 5 packages DynamicPDF
- Rendu moderne : moteur Chromium contre rendu traditionnel
- Technologies Web : Utilisez HTML/CSS au lieu du positionnement par coordonnées.
- API simplifiée : moins de code, plus lisible, maintenance facilitée
- Aucun achat supplémentaire : HTML, fusion et sécurité inclus.
Préparation de la migration
Prérequis
Assurez-vous que votre environnement répond à ces exigences :
- .NET Framework 4.6.2+ or .NET 6/7/8/9+
- Visual Studio 2019+ ou VS Code avec l'extension C#
- Accès au Package Manager NuGet
- Clé de licence IronPDF(essai gratuit disponible sur ironpdf.com)
Audit de l'utilisation de DynamicPDF
Exécutez ces commandes dans le répertoire de votre solution pour identifier toutes les références à DynamicPDF:
# Find all DynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .
# Check NuGet packages
dotnet list package | grep -i dynamic
# Find all DynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .
# Check NuGet packages
dotnet list package | grep -i dynamic
Paquets courants à rechercher :
ceTe.DynamicPDF.CoreSuite.NET(Generator + Merger + ReportWriter)ceTe.DynamicPDF.HtmlConverter.NET(module complémentaire HTML vers PDF)ceTe.DynamicPDF.Converter.NET(Office / multi-format to PDF)ceTe.DynamicPDF.Rasterizer.NET,ceTe.DynamicPDF.Printing.NET,ceTe.DynamicPDF.Viewer.NET
Comprendre le changement de paradigme
Le changement le plus important lors de la migration de DynamicPDFvers IronPDF est l'approche fondamentale de la création de documents. DynamicPDFutilise un positionnement basé sur les coordonnées où vous placez des éléments à des coordonnées X,Y spécifiques sur une page.IronPDF utilise le rendu HTML/CSS où vous concevez avec les technologies du web.
Ce changement de paradigme signifie convertir les éléments Label, TextArea, et Table2 en leurs équivalents HTML—un changement qui résulte généralement en un code plus lisible et maintenable.
Processus de migration étape par étape
Étape 1 : Mise à jour des paquets NuGet
Supprimez les packages DynamicPDFque vous avez installés et ajoutez IronPDF :
# Remove DynamicPDFpackages (only those you actually have)
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
dotnet remove package ceTe.DynamicPDF.Converter.NET
dotnet remove package ceTe.DynamicPDF.Rasterizer.NET
dotnet remove package ceTe.DynamicPDF.Printing.NET
# Install IronPDF
dotnet add package IronPdf
# Remove DynamicPDFpackages (only those you actually have)
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
dotnet remove package ceTe.DynamicPDF.Converter.NET
dotnet remove package ceTe.DynamicPDF.Rasterizer.NET
dotnet remove package ceTe.DynamicPDF.Printing.NET
# Install IronPDF
dotnet add package IronPdf
Étape 2 : Mise à jour des références aux espaces de noms
Remplacer les espaces de noms DynamicPDFpar IronPDF:
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;
// Add this
using IronPdf;
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;
// Add this
using IronPdf;
Imports IronPdf
Étape 3 : 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"
Référence complète de migration des API
Mappage des classes de base
| Classe DynamicPDF | Équivalent d'IronPDF |
|---|---|
Document |
ChromePdfRenderer |
Document |
PdfDocument |
Page |
HTML <div> avec saut de page |
MergeDocument |
PdfDocument.Merge() |
HtmlConverter |
ChromePdfRenderer |
Mappage des éléments de page en HTML
| DynamicPDFPageElement | Équivalent IronPDF/HTML |
|---|---|
Label |
<p>, <span>, <div> |
TextArea |
<div>, <p> avec CSS |
Image |
Balise <img> |
Table2 |
HTML <table> |
PageNumberingLabel |
{page} / {total-pages} espaces réservés |
Mappages API clés
| DynamicPDF | IronPDF |
|---|---|
Document + Page |
ChromePdfRenderer |
Label, TextArea |
HTML <p>, <div> |
Table2 |
HTML <table> |
MergeDocument |
PdfDocument.Merge() |
HtmlConverter |
ChromePdfRenderer |
document.Draw() |
pdf.SaveAs() / pdf.BinaryData |
PageNumberingLabel %%CP%% |
{page} espace réservé |
Exemples de migration de code
Conversion HTML en PDF
La conversion de HTML vers PDF démontre la nécessité d'un module complémentaire séparé HtmlConverter pour DynamicPDF, contrairement au rendu intégré par Chromium de IronPDF.
Mise en œuvre de DynamicPDF:
// NuGet: Install-Package ceTe.DynamicPDF.Converter.NET
// HTML-to-PDF is a separate add-on; CoreSuite alone does not include it.
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
HtmlConverter converter = new HtmlConverter(html);
converter.Convert("output.pdf");
}
}
// NuGet: Install-Package ceTe.DynamicPDF.Converter.NET
// HTML-to-PDF is a separate add-on; CoreSuite alone does not include it.
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
HtmlConverter converter = new HtmlConverter(html);
converter.Convert("output.pdf");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Conversion
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim converter As New HtmlConverter(html)
converter.Convert("output.pdf")
End Sub
End Class
Mise en œuvre d'IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
La ChromePdfRenderer de IronPDF offre un rendu basé sur Chromium avec un support intégral de CSS3, sans achat séparé de module complémentaire. Pour plus d'options, consultez la documentation HTML vers PDF.
Fusionner plusieurs fichiers PDF
La fusion de PDF démontre la différence entre la classe MergeDocument de DynamicPDF(nécessitant la licence produit Merger) et la méthode statique intégrée Merge de IronPDF.
Mise en œuvre de DynamicPDF:
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;
class Program
{
static void Main()
{
MergeDocument document = new MergeDocument("document1.pdf");
document.Append("document2.pdf");
document.Draw("merged.pdf");
}
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;
class Program
{
static void Main()
{
MergeDocument document = new MergeDocument("document1.pdf");
document.Append("document2.pdf");
document.Draw("merged.pdf");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Merger
Class Program
Shared Sub Main()
Dim document As New MergeDocument("document1.pdf")
document.Append("document2.pdf")
document.Draw("merged.pdf")
End Sub
End Class
Mise en œuvre d'IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
La méthode statique Merge de IronPDF accepte directement plusieurs objets PdfDocument. Pour plus d'options, consultez la documentation sur la fusion de fichiers PDF .
Ajouter du texte aux PDF
Le placement de texte démontre le changement de paradigme des éléments Label basés sur des coordonnées de DynamicPDFà ceux basés sur HTML de IronPDF.
Mise en œuvre de DynamicPDF:
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
class Program
{
static void Main()
{
Document document = new Document();
Page page = new Page(PageSize.Letter);
Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
page.Elements.Add(label);
document.Pages.Add(page);
document.Draw("output.pdf");
}
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
class Program
{
static void Main()
{
Document document = new Document();
Page page = new Page(PageSize.Letter);
Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
page.Elements.Add(label);
document.Pages.Add(page);
document.Draw("output.pdf");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Class Program
Shared Sub Main()
Dim document As New Document()
Dim page As New Page(PageSize.Letter)
Dim label As New Label("Hello from DynamicPDF!", 0, 0, 504, 100)
page.Elements.Add(label)
document.Pages.Add(page)
document.Draw("output.pdf")
End Sub
End Class
Mise en œuvre d'IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
var textStamper = new TextStamper()
{
Text = "Hello from IronPDF!",
FontSize = 20,
VerticalAlignment = VerticalAlignment.Top
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
var textStamper = new TextStamper()
{
Text = "Hello from IronPDF!",
FontSize = 20,
VerticalAlignment = VerticalAlignment.Top
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")
Dim textStamper As New TextStamper() With {
.Text = "Hello from IronPDF!",
.FontSize = 20,
.VerticalAlignment = VerticalAlignment.Top
}
pdf.ApplyStamp(textStamper)
pdf.SaveAs("output.pdf")
End Sub
End Class
La TextStamper de IronPDF offre un positionnement basé sur l'alignement plutôt qu'un placement basé sur des coordonnées, rendant les mises en page plus adaptables à différentes tailles de pages. Pour plus d'options, consultez la documentation sur les filigranes et l'estampillage.
Exemple complet de génération de document
Cet exemple complet montre la conversion d'un document DynamicPDFcomportant plusieurs éléments vers l'approche HTML d'IronPDF.
Mise en œuvre de DynamicPDF:
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);
Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");
// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);
Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");
// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Imports ceTe.DynamicPDF.Merger
' Generation (requires Generator license)
Dim document As New Document()
Dim page As New Page(PageSize.A4)
Dim title As New Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18)
title.Align = TextAlign.Center
page.Elements.Add(title)
Dim table As New Table2(40, 60, 515, 500)
' ... complex table setup with columns, rows, cells...
page.Elements.Add(table)
document.Pages.Add(page)
document.Draw("invoice.pdf")
' Merging (requires Merger license)
Dim mergeDoc As New MergeDocument("cover.pdf")
mergeDoc.Append("invoice.pdf")
mergeDoc.Draw("final.pdf")
Mise en œuvre d'IronPDF:
using IronPdf;
var renderer = new ChromePdfRenderer();
// All features in one library
var html = @"
<html>
<head>
<style>
body { font-family: Helvetica, sans-serif; padding: 40px; }
h1 { text-align: center; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
</style>
</head>
<body>
<h1>Invoice Report</h1>
<table>
<tr><th>Product</th><th>Qty</th><th>Price</th></tr>
<tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
</table>
</body>
</html>";
var invoice = renderer.RenderHtmlAsPdf(html);
// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// All features in one library
var html = @"
<html>
<head>
<style>
body { font-family: Helvetica, sans-serif; padding: 40px; }
h1 { text-align: center; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
</style>
</head>
<body>
<h1>Invoice Report</h1>
<table>
<tr><th>Product</th><th>Qty</th><th>Price</th></tr>
<tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
</table>
</body>
</html>";
var invoice = renderer.RenderHtmlAsPdf(html);
// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' All features in one library
Dim html As String = "
<html>
<head>
<style>
body { font-family: Helvetica, sans-serif; padding: 40px; }
h1 { text-align: center; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
</style>
</head>
<body>
<h1>Invoice Report</h1>
<table>
<tr><th>Product</th><th>Qty</th><th>Price</th></tr>
<tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
</table>
</body>
</html>"
Dim invoice As PdfDocument = renderer.RenderHtmlAsPdf(html)
' Merging included - no separate license
Dim cover As PdfDocument = PdfDocument.FromFile("cover.pdf")
Dim final As PdfDocument = PdfDocument.Merge(cover, invoice)
final.SaveAs("final.pdf")
Notes de migration essentielles
Positionnement basé sur les coordonnées vers HTML/CSS
Le changement de paradigme fondamental nécessite de convertir le positionnement par coordonnées X,Y en mises en page basées sur CSS :
// DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);
//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";
//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
// DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);
//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";
//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
' DynamicPDF- coordinate-based
Dim label = New Label("Hello World", 100, 200, 300, 50)
' IronPDF- CSS positioning (if absolute positioning needed)
Dim html As String = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>"
' IronPDF- preferred approach (flow-based)
html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>"
Syntaxe de numérotation des pages
DynamicPDF et IronPDF utilisent une syntaxe différente pour les numéros de page :
// DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"
//IronPDF placeholders
"Page {page} of {total-pages}"
// DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"
//IronPDF placeholders
"Page {page} of {total-pages}"
' DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"
' IronPDF placeholders
"Page {page} of {total-pages}"
En-têtes et pieds de page
Convertir les éléments Template de DynamicPDFen HtmlHeaderFooter de IronPDF:
//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
'IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Pour plus d'options d'en-tête/pied de page, consultez la documentation sur les en-têtes et pieds de page.
Paramètres de sécurité
//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
'IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.UserPassword = "userPassword"
Pour connaître toutes les options de sécurité, consultez la documentation sur le chiffrement .
Liste de contrôle post-migration
Après avoir effectué la migration du code, vérifiez les points suivants :
- Comparaison visuelle des PDF générés
- Vérifier le positionnement et la mise en page du texte
- Testez le rendu et le débordement des tableaux
- Vérifiez les en-têtes et pieds de page sur toutes les pages
- Tester la fonctionnalité de remplissage de formulaires
- Vérifier la sécurité/le chiffrement
- Évaluation comparative des performances
- Supprimer les fichiers de licence DynamicPDFinutilisés
- Mise à jour de la documentation
Ressources supplémentaires
La migration de DynamicPDFvers IronPDF regroupe plusieurs licences de produits en une seule bibliothèque et remplace le positionnement basé sur les coordonnées par un rendu HTML/CSS sur Chromium. Les équipes déjà à l'aise avec les technologies web trouvent souvent que le code résultant est plus facile à maintenir.

