Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de Syncfusion PDF vers IronPDF en C#

La migration de Syncfusion PDFFramework versIronPDFtransforme votre flux de production de PDF, passant d'une API graphique basée sur les coordonnées et intégrée à une grande suite à une bibliothèque autonome, HTML/CSS d'abord, avec un rendu moderne de Chromium. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les licences pour les suites uniquement, les exigences de déploiement complexes et le positionnement basé sur les coordonnées.

Pourquoi migrer de Syncfusion PDFà IronPDF

Comprendre Syncfusion PDFFramework

Le Syncfusion PDFFramework est une bibliothèque complète qui offre un large éventail de fonctionnalités pour la création, l'édition et la sécurisation de documents PDF à l'aide de C#. Ce logiciel fait partie de Essential Studio de Syncfusion, qui comprend plus d'un millier de composants pour de multiples plateformes.

Cependant, l'un de ses principaux inconvénients est qu'il ne peut pas être acheté en tant que produit autonome ; les développeurs doivent acheter l'ensemble des composants Syncfusion. Cette exigence peut s'avérer contraignante pour les équipes qui ne s'intéressent qu'aux fonctionnalités des PDF, d'autant plus que cette offre groupée peut inclure des outils inutiles pour leurs projets.

Le problème des licences d'offres groupées

Le modèle de licence de Syncfusion crée des défis importants pour les équipes qui n'ont besoin que de la fonctionnalité PDF :

  1. Achat de la suite uniquement : la bibliothèque PDF ne peut pas être achetée séparément ; l'achat de la suite Essential Studio complète est requis.
  2. Restrictions de la licence communautaire : La version gratuite nécessite à la fois un chiffre d'affaires inférieur à 1 million de dollars et moins de 5 développeurs.
  3. Licences de déploiement complexes : différentes licences pour les déploiements web, de bureau et serveur
  4. Renouvellement annuel requis : Modèle d'abonnement avec frais annuels
  5. Tarification par développeur : les coûts augmentent proportionnellement à la taille de l'équipe
  6. Suite logicielle surchargée : Inclut plus de 1 000 composants dont vous n'aurez peut-être pas besoin.

Comparaison de Syncfusion PDFet IronPDF

Aspect Syncfusion PDF IronPDF
Modèle d'achat Offre groupée uniquement Autonome
Licence Niveaux complexes Simple par développeur
Limite de la communauté <1M$ ET <5 devs Essai gratuit, puis licence
Déploiement Plusieurs types de licences Une licence couvre l'ensemble des
Style API Graphiques basés sur les coordonnées HTML/CSS d'abord
Support HTML Requiert BlinkBinaries Chrome natif
Support CSS Limité CSS3 complet/flexbox/grid
Dépendances Plusieurs paquets NuGet simple
Exigences de la suite Oui (suite complète) Non
Focus sur le PDF Large ; partie d'une suite plus large Étroite ; Axé sur le PDF

IronPDF propose une approche plus ciblée en offrant ses fonctionnalités PDF en tant que produit autonome. Cette différence a un impact significatif sur les coûts et la facilité d'intégration.

Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026, la licence autonome d'IronPDF et l'approche HTML/CSS d'abordoffrent une flexibilité sans dépendance vis-à-vis de la suite.


Avant de commencer

Prérequis

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

Modifications du paquet NuGet

# Remove Syncfusion packages
dotnet remove package Syncfusion.Pdf.Net.Core
dotnet remove package Syncfusion.HtmlToPdfConverter.Net.Windows
dotnet remove package Syncfusion.Licensing

# Install IronPDF
dotnet add package IronPdf
# Remove Syncfusion packages
dotnet remove package Syncfusion.Pdf.Net.Core
dotnet remove package Syncfusion.HtmlToPdfConverter.Net.Windows
dotnet remove package Syncfusion.Licensing

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

Syncfusion :

// Must register before any Syncfusion calls
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY");
// Must register before any Syncfusion calls
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY");
$vbLabelText   $csharpLabel

IronPDF :

// One-time at startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-KEY";
// One-time at startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-KEY";
$vbLabelText   $csharpLabel

Référence API complète

Modifications de l'espace de nommage

// Before: Syncfusion PDF
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Parsing;
using Syncfusion.HtmlConverter;
using Syncfusion.Drawing;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: Syncfusion PDF
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Parsing;
using Syncfusion.HtmlConverter;
using Syncfusion.Drawing;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
$vbLabelText   $csharpLabel

Mappages de l'API de base

Syncfusion IronPDF Notes
Document PDF ChromePdfRenderer Créer des PDF
PdfLoadedDocument PdfDocument.FromFile() Charger les PDF
HtmlToPdfConverter ChromePdfRenderer Conversion HTML
graphics.DrawString() Éléments de texte HTML <p>, <h1>
graphics.DrawImage() <img> balise Images HTML
PdfGrid HTML <table> Tableaux
PdfStandardFont CSS font-family Polices de caractères
PdfBrushes.Black CSS color : black Couleurs
document.Security pdf.SecuritySettings Sécurité
PdfTextExtractor pdf.ExtractAllText() Extraction de texte
ImportPageRange() PdfDocument.Merge() Fusion
document.Save(stream) pdf.SaveAs(path) Sauvegarde
document.Close(true) Pas nécessaire Nettoyage automatique

Exemples de migration de code

Exemple 1 : Conversion HTML/URL vers PDF

Avant (Syncfusion PDF):

// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        // Initialize HTML to PDF converter
        HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();

        // Convert URL to PDF
        PdfDocument document = htmlConverter.Convert("https://www.example.com");

        // Save the document
        FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
        document.Save(fileStream);
        document.Close(true);
        fileStream.Close();
    }
}
// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        // Initialize HTML to PDF converter
        HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();

        // Convert URL to PDF
        PdfDocument document = htmlConverter.Convert("https://www.example.com");

        // Save the document
        FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
        document.Save(fileStream);
        document.Close(true);
        fileStream.Close();
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a PDF from a URL
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        // Save the PDF
        pdf.SaveAs("Output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a PDF from a URL
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        // Save the PDF
        pdf.SaveAs("Output.pdf");
    }
}
$vbLabelText   $csharpLabel

Cet exemple illustre les différences fondamentales entre les API. Syncfusion PDFnécessite une instance HtmlToPdfConverter, appelant Convert() qui renvoie un PdfDocument, puis créant manuellement un FileStream, sauvegardant et fermant à la fois le document et le flux.

IronPDF utilise un ChromePdfRendereravec RenderUrlAsPdf() en seulement trois lignes de code. Pas de gestion de FileStream, pas d'appels à Close()-IIronPDFgère le nettoyage automatiquement. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Création d'un PDF à partir d'un texte

Avant (Syncfusion PDF):

// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();

        // Add a page
        PdfPage page = document.Pages.Add();

        // Create a font
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);

        // Draw text
        page.Graphics.DrawString("Hello, World!", font, PdfBrushes.Black, new PointF(10, 10));

        // Save the document
        FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
        document.Save(fileStream);
        document.Close(true);
        fileStream.Close();
    }
}
// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();

        // Add a page
        PdfPage page = document.Pages.Add();

        // Create a font
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);

        // Draw text
        page.Graphics.DrawString("Hello, World!", font, PdfBrushes.Black, new PointF(10, 10));

        // Save the document
        FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
        document.Save(fileStream);
        document.Close(true);
        fileStream.Close();
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");

        // Save the document
        pdf.SaveAs("Output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");

        // Save the document
        pdf.SaveAs("Output.pdf");
    }
}
$vbLabelText   $csharpLabel

Syncfusion PDF utilise un modèle graphique basé sur les coordonnées. Vous créez un PdfDocument, ajoutez une PdfPage, créez une PdfFont avec PdfFontFamily.Helvetica, puis appelez page.Graphics.DrawString() avec des coordonnées explicites (new PointF(10, 10)), une police et un pinceau (PdfBrushes.Black). Enfin, vous gérez la création et l'élimination des FileStream.

IronPDF utilise une approche HTML/CSS d'abord. Instead of coordinates, you write <h1>Hello, World!</h1> and let CSS handle positioning, fonts, and colors. Cette approche est plus simple, plus facile à maintenir et tire parti des compétences que les développeurs possèdent déjà. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : Fusionner des documents PDF

Avant (Syncfusion PDF):

// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using System.IO;

class Program
{
    static void Main()
    {
        // Load the first PDF document
        FileStream stream1 = new FileStream("Document1.pdf", FileMode.Open, FileAccess.Read);
        PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument(stream1);

        // Load the second PDF document
        FileStream stream2 = new FileStream("Document2.pdf", FileMode.Open, FileAccess.Read);
        PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument(stream2);

        // Merge the documents
        PdfDocument finalDocument = new PdfDocument();
        finalDocument.ImportPageRange(loadedDocument1, 0, loadedDocument1.Pages.Count - 1);
        finalDocument.ImportPageRange(loadedDocument2, 0, loadedDocument2.Pages.Count - 1);

        // Save the merged document
        FileStream outputStream = new FileStream("Merged.pdf", FileMode.Create);
        finalDocument.Save(outputStream);

        // Close all documents
        finalDocument.Close(true);
        loadedDocument1.Close(true);
        loadedDocument2.Close(true);
        stream1.Close();
        stream2.Close();
        outputStream.Close();
    }
}
// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using System.IO;

class Program
{
    static void Main()
    {
        // Load the first PDF document
        FileStream stream1 = new FileStream("Document1.pdf", FileMode.Open, FileAccess.Read);
        PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument(stream1);

        // Load the second PDF document
        FileStream stream2 = new FileStream("Document2.pdf", FileMode.Open, FileAccess.Read);
        PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument(stream2);

        // Merge the documents
        PdfDocument finalDocument = new PdfDocument();
        finalDocument.ImportPageRange(loadedDocument1, 0, loadedDocument1.Pages.Count - 1);
        finalDocument.ImportPageRange(loadedDocument2, 0, loadedDocument2.Pages.Count - 1);

        // Save the merged document
        FileStream outputStream = new FileStream("Merged.pdf", FileMode.Create);
        finalDocument.Save(outputStream);

        // Close all documents
        finalDocument.Close(true);
        loadedDocument1.Close(true);
        loadedDocument2.Close(true);
        stream1.Close();
        stream2.Close();
        outputStream.Close();
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Load PDF documents
        var pdf1 = PdfDocument.FromFile("Document1.pdf");
        var pdf2 = PdfDocument.FromFile("Document2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });

        // Save the merged document
        merged.SaveAs("Merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Load PDF documents
        var pdf1 = PdfDocument.FromFile("Document1.pdf");
        var pdf2 = PdfDocument.FromFile("Document2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });

        // Save the merged document
        merged.SaveAs("Merged.pdf");
    }
}
$vbLabelText   $csharpLabel

Le contraste dans la fusion des PDF est spectaculaire. Syncfusion PDFnécessite la création d'objets FileStream pour chaque document d'entrée, leur chargement en tant que PdfLoadedDocument, la création d'un nouveau PdfDocument, l'appel à ImportPageRange()avec des indices de début et de fin pour chaque source, créer un FileStream de sortie, puis fermer six objets séparés (finalDocument, loadedDocument1, loadedDocument2, stream1, stream2, outputStream).

IronPDF utilise PdfDocument.FromFile()pour charger chaque PDF et une méthode statique PdfDocument.Merge()qui accepte une liste de documents. Pas de gestion de flux, pas de calcul manuel de l'intervalle de pages, pas d'à-peu-près.


Différences clés dans la philosophie des API

Coordonnées vs HTML/CSS d'abord

Syncfusion PDF utilise un modèle graphique basé sur les coordonnées, hérité des bibliothèques PDF traditionnelles :

// Syncfusion: Manuel positioning
page.Graphics.DrawString("Text", font, PdfBrushes.Black, new PointF(100, 200));
page.Graphics.DrawRectangle(brush, new RectangleF(50, 50, 200, 100));
// Syncfusion: Manuel positioning
page.Graphics.DrawString("Text", font, PdfBrushes.Black, new PointF(100, 200));
page.Graphics.DrawRectangle(brush, new RectangleF(50, 50, 200, 100));
$vbLabelText   $csharpLabel

IronPDF utilise HTML/CSS pour la mise en page :

// IronPDF: CSS-based positioning
var html = @"
<div style='margin: 50px; padding: 20px; border: 1px solid black;'>
    <p style='color: black;'>Text</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: CSS-based positioning
var html = @"
<div style='margin: 50px; padding: 20px; border: 1px solid black;'>
    <p style='color: black;'>Text</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
$vbLabelText   $csharpLabel

L'approche HTML/CSS est plus intuitive pour les développeurs web, plus facile à maintenir et produit des résultats cohérents sur différentes tailles de pages.

Gestion des flux de données et nettoyage automatique

Syncfusion PDF nécessite un flux explicite et l'élimination des documents :

// Syncfusion: Manuel cleanup
FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
document.Save(fileStream);
document.Close(true);
fileStream.Close();
// Syncfusion: Manuel cleanup
FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
document.Save(fileStream);
document.Close(true);
fileStream.Close();
$vbLabelText   $csharpLabel

IronPDF se charge automatiquement du nettoyage :

// IronPDF: Automatiquecleanup
pdf.SaveAs("Output.pdf");
// IronPDF: Automatiquecleanup
pdf.SaveAs("Output.pdf");
$vbLabelText   $csharpLabel

Comparaison des fonctionnalités

Fonction Syncfusion PDF IronPDF
Achat de Standalone Non (suite uniquement) Oui
Licence Commercial avec des restrictions communautaires Commercial simplifié
HTML à PDF Requiert BlinkBinaries Chrome natif
Support CSS3 Limité Plein (flexbox, grille)
Style API Graphiques basés sur les coordonnées HTML/CSS d'abord
Gestion des flux Manuel Automatique
Dépendances Plusieurs paquets NuGet simple
Complexité du déploiement Potentiellement complexe Simplicité

Liste de contrôle de la migration

Pré-migration

  • Recenser toutes les utilisations de Syncfusion PDFdans le code source
  • Coûts de licence des documents et exigences de déploiement
  • Identifier les utilisations PdfGrid, PdfGraphics et HtmlToPdfConverter
  • Obtenez votre clé de licenceIronPDFsur ironpdf.com

Mises à jour du code

  • Supprimez les packages Syncfusion ( Syncfusion.Pdf.Net.Core , Syncfusion.HtmlToPdfConverter.Net.Windows , Syncfusion.Licensing )
  • Installez le package NuGet IronPdf
  • Mise à jour des importations d'espace de noms ( using Syncfusion.Pdf;using IronPdf; )
  • Remplacez Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense() par IronPdf.License.LicenseKey = &quot;...&quot;
  • Remplacez HtmlToPdfConverter.Convert() par ChromePdfRenderer.RenderUrlAsPdf() ou RenderHtmlAsPdf()
  • Remplacez Document PDF+ Pages.Add() + Graphics.DrawString() par ChromePdfRenderer.RenderHtmlAsPdf()
  • Remplacez PdfLoadedDocumentpar PdfDocument.FromFile()
  • Remplacez ImportPageRange()par PdfDocument.Merge()
  • Remplacez document.Save(stream)par pdf.SaveAs(path)
  • Supprimez tous les appels document.Close(true)et stream.Close()
  • Remplacer PdfGridpar HTML<table> éléments
  • Remplacez PdfStandardFontpar font-family CSS.
  • Remplacer PdfBrushes par des propriétés color CSS

Essai

  • Comparaison visuelle des fichiers PDF générés
  • Vérifier les améliorations du rendu CSS (flexbox et grid fonctionnent désormais)
  • Extraction de texte de test
  • Fusion et division des tests
  • Comparaison des performances

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