Comment migrer de SelectPdf à IronPDF en C#
La migration de SelectPdfversIronPDFtransforme votre flux de production de PDF d'une solution exclusivement Windows avec un moteur de rendu obsolète à une bibliothèque moderne et multiplateforme avec un support CSS3 et JavaScript complet. Ce guide fournit un chemin de migration complet, étape par étape, qui permet le déploiement vers Linux, Docker, Azure Functions, et d'autres plateformes cloud que SelectPdfne peut pas prendre en charge.
Pourquoi migrer de SelectPdfà IronPDF
Comprendre SelectPdf
SelectPdf est une bibliothèque commerciale conçue pour convertir du contenu HTML en PDF à l'aide de C#. La bibliothèque est conçue pour les développeurs qui ont besoin d'une intégration transparente de la fonctionnalité de génération de PDF dans leurs applications. La force de SelectPdfréside dans la simplicité de son API, ce qui en fait une option attrayante pour les novices en matière de génération de PDF.
Toutefois, les utilisateurs potentiels doivent être conscients de ses limites critiques. Bien qu'il annonce une capacité multiplateforme, SelectPdfne fonctionne que sur les environnements Windows. En outre, sa version gratuite est considérablement limitée, puisqu'elle n'autorise que cinq pages avant d'appliquer un filigrane agressif. SelectPdfexploite un fork Blink obsolète et une architecture basée sur WebKit, ce qui entraîne des problèmes de compatibilité avec les technologies web modernes telles que Grille CSSet flexbox avancé.
Limites critiques de SelectPdf
| Problème | Impact | Solution IronPDF |
|---|---|---|
| Windows uniquement | Impossible de déployer vers Linux, Docker, Azure Functions | Prise en charge multiplateforme complète |
| Moteur de rendu obsolète | Les CSS modernes échouent, les mises en page se cassent | Chromium à jour |
| Limite de 5 pagespour la version gratuite | Filigrane agressif après 5 pages | Essai généreux |
| Pas de prise en charge de .NET 10 | Problèmes de pérennité | Prise en charge complète de .NET 10 |
| Déploiement en nuage bloqué | Ne peut pas utiliser AWS Lambda, Azure Functions | Cloud-native |
Comparaison SelectPdfvs IronPDF
| Fonction | SelectPdf | IronPDF |
|---|---|---|
| Support de la plateforme | Windows uniquement | Multiplateforme complète, 10+ distros |
| Support des normes Web modernes | Limité (Clignotant périmé) | CSS3 complet, Chromium moderne |
| Limite maximale de pages de la version gratuite | 5 pages | Flexible, pas de limite stricte |
| Tarification | À partir de 499 | Tarification transparente et flexible |
| Prise en charge de .NET 10 | Aucun | Prise en charge |
| Déploiement dans les environnements cloud | Non pris en charge | Entièrement pris en charge |
| CSS Grid | Limité | Prise en charge |
| Flexbox | Limité | Prise en charge |
| Variables CSS | Non pris en charge | Prise en charge |
| Docker | NON SUPPORTÉ | Images officielles |
| Fonctions Azure | NON SUPPORTÉ | Prise en charge |
| AWS Lambda | NON SUPPORTÉ | Prise en charge |
Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026, SelectPdfne prend explicitement pas en charge .NET 10, ce qui crée des problèmes de pérennité.IronPDFassure une prise en charge complète de toutes les versions modernes de .NET.
Avant de commencer
Prérequis
- Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9/10+
- Accès à NuGet : possibilité d'installer des packages NuGet
- Licence IronPDF : Obtenez votre clé de licence sur IronPDF
Modifications du paquet NuGet
# Remove SelectPdf
dotnet remove package Select.HtmlToPdf
# Install IronPDF
dotnet add package IronPdf
# Remove SelectPdf
dotnet remove package Select.HtmlToPdf
# Install IronPDF
dotnet add package IronPdf
Configuration de la licence
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Référence API complète
Modifications de l'espace de nommage
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
' Before: SelectPdf
Imports SelectPdf
' After: IronPDF
Imports IronPdf
Imports IronPdf.Engines.Chrome
Mappages de l'API de base
| SelectPdf | IronPDF | Notes |
|---|---|---|
HtmlToPdf |
ChromePdfRenderer |
Classe de convertisseur de base |
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
Conversion de chaînes HTML |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
Conversion d'URL |
doc.Save(path) |
pdf.SaveAs(path) |
Enregistrer dans un fichier |
doc.Close() |
Pas nécessaire | IronPDFs'occupe du nettoyage |
converter.Options.PdfPageSize |
renderer.RenderingOptions.PaperSize |
Taille du papier |
converter.Options.PdfPageOrientation |
renderer.RenderingOptions.PaperOrientation |
Orientation |
converter.Options.MarginTop |
renderer.RenderingOptions.MarginTop |
Marge supérieure |
converter.Options.MarginBottom |
renderer.RenderingOptions.MarginBottom |
Marge inférieure |
converter.Options.MarginLeft |
renderer.RenderingOptions.MarginLeft |
Marge gauche |
converter.Options.MarginRight |
renderer.RenderingOptions.MarginRight |
Marge droite |
PdfPageSize.A4 |
PdfPaperSize.A4 |
Format A4 enum |
PdfPageOrientation.Portrait |
PdfPaperOrientation.Portrait |
Portrait enum |
PdfPageOrientation.Landscape |
PdfPaperOrientation.Landscape |
Paysage enum |
{page_number} |
{page} |
Espace réservé au numéro de page |
{total_pages} |
{total-pages} |
Nombre total de pages |
Exemples de migration de code
Exemple 1 : Conversion d'une chaîne HTML en fichier PDF
Avant (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertHtmlString(htmlContent)
doc.Save("document.pdf")
doc.Close()
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document.pdf")
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
Cet exemple illustre les principales différences entre les API. SelectPdfutilise HtmlToPdf comme classe de conversion, appelant ConvertHtmlString() pour créer un PdfDocument, puis Save() et Close() pour persister et nettoyer.
IronPDF utilise ChromePdfRenderer avec RenderHtmlAsPdf(), renvoyant un PdfDocument qui est enregistré avec SaveAs(). L'appel Close() est éliminé —IronPDFgère automatiquement la gestion des ressources. Consultez la documentation HTML vers PDF pour des exemples complets.
Exemple 2 : Conversion d'une URL en PDF
Avant (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertUrl("https://www.example.com")
doc.Save("output.pdf")
doc.Close()
Console.WriteLine("PDF created successfully")
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
La méthode ConvertUrl() de SelectPdfcorrespond directement à la méthode RenderUrlAsPdf() d'IronPDF. La différence essentielle réside dans le moteur de rendu : SelectPdfutilise un fork Blink/WebKit obsolète qui a des difficultés avec les CSS modernes, tandis qu'IronPDF utilise la dernière version stable de Chromium pour une prise en charge complète des CSS3 et du JavaScript. Pour en savoir plus, consultez nos tutoriels.
Exemple 3 : Paramètres et marges de page personnalisés
Avant (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
Imports SelectPdf
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdf()
converter.Options.PdfPageSize = PdfPageSize.A4
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait
converter.Options.MarginTop = 20
converter.Options.MarginBottom = 20
converter.Options.MarginLeft = 20
converter.Options.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim doc As PdfDocument = converter.ConvertHtmlString(html)
doc.Save("custom-settings.pdf")
doc.Close()
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom-settings.pdf")
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
Le modèle de configuration des pages est presque identique, avec des changements simples de noms de propriétés :
converter.Options.PdfPageSize→renderer.RenderingOptions.PaperSizeconverter.Options.PdfPageOrientation→renderer.RenderingOptions.PaperOrientationPdfPageSize.A4→PdfPaperSize.A4PdfPageOrientation.Portrait→PdfPaperOrientation.Portrait
Les propriétés des marges conservent les mêmes noms et les mêmes unités.
Le problème de Windows uniquement
Limitation de la plateforme SelectPdf
Malgré toutes les affirmations marketing, SelectPdfne prend explicitement pas en charge :
- Linux (toute distribution)
- macOS
- Conteneurs Docker
- Fonctions Azure
- AWS Lambda
- Fonctions Google Cloud
- Tous les systèmes basés sur ARM
Il s'agit d'une limitation architecturale fondamentale - SelectPdfdépend de bibliothèques spécifiques à Windows et ne peut pas être porté.
Comparaison de la prise en charge des plates-formes
| Plateforme| SelectPdf|IronPDF| | ---------- | :---: | :---: || Windows Server 2019+| ✅ | ✅ || Windows 10/11| ✅ | ✅ || Ubuntu 20.04+| ❌ | ✅ || Debian 10+| ❌ | ✅ || CentOS 7+| ❌ | ✅ || Alpine Linux| ❌ | ✅ || Amazon Linux 2| ❌ | ✅ || macOS 10.15+| ❌ | ✅ || Azure App Service (Linux)| ❌ | ✅ || Fonctions Azure| ❌ | ✅ || AWS Lambda| ❌ | ✅ || Docker (Linux)| ❌ | ✅ || Kubernetes| ❌ | ✅ |
Le moteur de rendu dépassé
Comparaison de la prise en charge des fonctionnalités CSS
SelectPdf utilise une version obsolète de Blink/WebKit qui n'a pas suivi le rythme des normes web modernes :
| Fonctionnalité CSS | SelectPdf | IronPDF |
|---|---|---|
| Grille CSS | ⚠️ Partiel/cassé | ✅Complet |
| Flexbox (de base) | ✅ | ✅ |
| Flexbox (propriété de l'espace) | ❌ | ✅ |
| Variables CSS | ❌ | ✅ |
| CSS calc() | ⚠️ Limited | ✅ |
| @media print | ⚠️ Limited | ✅ |
| @font-face | ⚠️ Limited | ✅ |
| Polices de caractères Web | ⚠️ Limited | ✅ |
| SVG | ⚠️ Basic | ✅Complet |
| Transformations CSS | ⚠️ Limited | ✅ |
| Animations CSS | ❌ | ✅ |
Nouvelles capacités après la migration
Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que SelectPdfne peut pas vous offrir :
Déploiement multiplateforme
// ✅IronPDF- Works everywhere
using IronPdf;
// Azure App Service (Linux)- WORKS
// Docker container - WORKS
// AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
// ✅IronPDF- Works everywhere
using IronPdf;
// Azure App Service (Linux)- WORKS
// Docker container - WORKS
// AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
' Azure App Service (Linux)- WORKS
' Docker container - WORKS
' AWS Lambda- WORKS
' GitHub Actions on ubuntu-latest - WORKS
' macOS development - WORKS
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>")
pdf.SaveAs("output.pdf")
Support CSS moderne
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
Imports IronPdf
' ✅IronPDF- Uses latest stable Chromium
Dim renderer As New ChromePdfRenderer()
Dim html As String = "
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
Pas de Close() nécessaire
IronPDF s'occupe automatiquement de la gestion des ressources :
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
' Option 1: Let garbage collection handle it
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' No Close() needed
' Option 2: Explicit disposal
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Using
Liste de contrôle de la migration
Pré-migration
- Auditer toutes les utilisations de SelectPdfdans le code source
- Documenter les options de convertisseur de courant pour la cartographie
- Identifier les implémentations d'en-tête/pied de page
- Vérifier la syntaxe des espaces réservés aux numéros de page (
{page_number}→{page}) - Notez les modèles de gestion des URL de base
- Vérifier les plateformes de déploiement cibles
- Obtenez votre clé de licenceIronPDFsur IronPDF
Mises à jour du code
- Supprimer le package NuGet
Select.HtmlToPdf - Installer le package NuGet
IronPdf - Mise à jour des importations d'espace de noms (
using SelectPdf;→using IronPdf;) - Remplacez
HtmlToPdfparChromePdfRenderer - Remplacez
ConvertHtmlString()parRenderHtmlAsPdf() - Remplacez
ConvertUrl()parRenderUrlAsPdf() - Mettre à jour les noms des propriétés d'option (
Options.PdfPageSize→RenderingOptions.PaperSize) - Convertir
PdfPageSizeenPdfPaperSize - Convertir
PdfPageOrientationenPdfPaperOrientation - Remplacez
doc.Save()parpdf.SaveAs() - Supprimer tous les appels
doc.Close() - Corriger les espaces réservés pour les numéros de page (
{page_number}→{page},{total_pages}→{total-pages}) - Ajouter l'initialisation de la licence au démarrage de l'application
Après la migration
- Exécuter tous les tests unitaires
- Vérifier le rendu CSS (en particulier Grid/Flexbox)
- Test d'exécution JavaScript
- Vérifier les numéros de page d'en-tête/de pied de page
- Tester sur les plateformes cibles (Linux, Docker, etc.)
- Test de performance
- Comparer la qualité de sortie des PDF
- Mise à jour des pipelines CI/CD
- Tester les déploiements cloud (le cas échéant)

