Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de SelectPdf à IronPDF en C#

Migrer de SelectPdfà IronPdf : Guide de migration complet 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. La traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement. 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
Fenêtres 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 complète
Déploiement dans les environnements cloud Non pris en charge Entièrement pris en charge
CSS Grid Limité Prise en charge complète
Flexbox Limité Prise en charge complète
Variables CSS Non pris en charge Prise en charge complète
Docker NON SUPPORTÉ Images officielles
Fonctions Azure NON SUPPORTÉ Prise en charge complète
AWS Lambda NON SUPPORTÉ Prise en charge complète

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

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9/10+
  2. Accès NuGet : Capacité à installer des paquets NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur ironpdf.com

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
SHELL

Configuration de la licence

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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
{numéro de page} {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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple illustre les principales différences entre les API. SelectPdfutilise HtmlToPdfcomme classe de conversion, appelant ConvertHtmlString() pour créer un PdfDocument, puis Save() et Close() pour persister et nettoyer.

IronPDF utilise ChromePdfRendereravec RenderHtmlAsPdf(), renvoyant un PdfDocument qui est sauvegardé 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le modèle de configuration des pages est presque identique, avec des changements simples de noms de propriétés :

  • converter.Options.PdfPageSizerenderer.RenderingOptions.PaperSize
  • converter.Options.PdfPageOrientationrenderer.RenderingOptions.PaperOrientation
  • PdfPageSize.A4PdfPaperSize.A4
  • PdfPageOrientation.PortraitPdfPaperOrientation.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

En dépit de toutes les affirmations marketing, SelectPdfne prend explicitement pas en charge :

  • Linux (toute distribution)
  • macOS
  • Conteneurs Docker
  • Fonctions Azure
  • AWS Lambda
  • Google Cloud Functions
  • 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Liste de contrôle de la migration

Pré-migration

  • [Audit de toutes les utilisations de SelectPdfdans la base de code
  • [Documenter les options de conversion actuelles pour le mappage
  • [Identifier les implémentations de l'en-tête et du pied de page
  • [Vérifier la syntaxe de l'espace réservé au numéro de page ({numéro_de_page}{page})
  • [Les modèles de gestion des URL de la base de notes
  • [Vérifier les plateformes de déploiement cibles
  • [ ] Obtenir la clé de licenceIronPDFà partir de ironpdf.com

Mises à jour du code

  • supprimer le package NuGet Select.HtmlToPdf [ ]
  • [Installer le paquet IronPdf NuGet
  • [Mise à jour des importations d'espaces de noms (utilisant SelectPdf;utilisant IronPdf;)
  • [Remplacer HtmlToPdfpar ChromePdfRenderer
  • [Remplacer ConvertHtmlString() par RenderHtmlAsPdf()
  • [Remplacer ConvertUrl() par RenderUrlAsPdf()
  • [Mise à jour des noms des propriétés des options (Options.PdfPageSizeRenderingOptions.PaperSize)
  • [Convertir PdfPageSize en PdfPaperSize
  • [Convertissez PdfPageOrientation en PdfPaperOrientation
  • [Remplacer doc.Save() par pdf.SaveAs()
  • [Supprimer tous les appels à doc.Close()
  • [Fixer les caractères de remplacement du numéro de page ({numéro de page}{page}, {total_pages}{total_pages})
  • [Ajouter l'initialisation de la licence au démarrage de l'application

Post-Migration

  • [Exécuter tous les tests unitaires
  • [Vérifier le rendu CSS (en particulier Grid/Flexbox)
  • [Tester l'exécution de JavaScript
  • [Vérifier les numéros de page d'en-tête et de pied de page
  • [Test sur les plateformes cibles (Linux, Docker, etc.)
  • [Test de performance
  • [Comparer la qualité de sortie d'un PDF
  • [Mise à jour des pipelines CI/CD
  • [Test des déploiements dans le nuage (le cas échéant)

Conclusion

Bien que SelectPdfsoit une puissante bibliothèque de conversion HTML-PDF dotée d'une API simple, ses limites en termes de flexibilité de plateforme et de prise en charge de standards web obsolètes peuvent dissuader les développeurs. La bibliothèque se présente faussement comme multiplateforme mais ne prend explicitement pas en charge Linux, macOS, Docker ou Azure Functions, ce qui la rend inadaptée aux déploiements modernes dans le nuage. La version gratuite est sévèrement limitée à 5 pagesavant qu'un filigrane agressif ne se mette en place, et sa fourche Chromium dépassée a du mal à gérer les fonctionnalités CSS modernes telles que la grille et les mises en page Flexbox avancées.

Les principaux changements apportés à cette migration sont les suivants :

  1. Support de plateforme : Windows uniquement → multiplateforme complète (10+ distros Linux, Docker, cloud)
  2. <Moteur de rendu : Blink/WebKit obsolète → Chromium stable le plus récent
  3. Support CSS : Grid/Flexbox limité → Prise en charge CSS3 complète
  4. <Prise en charge de .NET : Pas de .NET 10 → Prise en charge complète de .NET 10
  5. Classe de conversion : HtmlToPdfChromePdfRenderer
  6. Conversion HTML : ConvertHtmlString()RenderHtmlAsPdf()
  7. Conversion d'URL : ConvertUrl()RenderUrlAsPdf()
  8. Méthode d'enregistrement : doc.Save()pdf.SaveAs()
  9. Cleanup : doc.Close()requis → Non requis (automatique)
  10. Taille de la page : PdfPageSize.A4PdfPaperSize.A4
  11. Orientation : PdfPageOrientationPdfPaperOrientation
  12. Numéros de page : {numéro de page}{page}, {total_pages}{total-pages}

Les développeurs à la recherche de solutions robustes, modernes et multiplateformes se tourneront probablement vers IronPDF, notamment en raison de sa prise en charge étendue des normes web et des environnements de déploiement contemporains.

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration vers SelectPdf.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite