Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de EO.Pdf vers IronPDF en C#

Migrer de EO.Pdf àIronPDF: Guide de migration complet en C

EO.Pdf est une bibliothèque PDF .NET commerciale qui exploite le rendu basé sur Chromium pour la conversion de HTML en PDF. Bien qu'EO.Pdf offre un rendu conforme aux normes du W3C, son architecture présente des défis importants : une taille de paquet de 126 Mo qui gonfle les images Docker et ralentit les déploiements, le bagage hérité de son moteur original basé sur Internet Explorer, des options globales statiques qui ne sont pas sûres pour les applications multi-tenant, et une conception centrée sur Windows malgré les prétentions multiplateformes. Ce guide complet fournit un chemin de migration étape par étape d'EO.Pdf versIronPDF- une bibliothèque PDF .NET moderne avec un packaging Chromium optimisé, une configuration thread-safe basée sur l'instance et une véritable prise en charge multiplateforme.

Pourquoi migrer d'EO.Pdf vers IronPDF?

EO.Pdf présente plusieurs défis architecturaux qui poussent les équipes de développement à évaluer des alternatives. Il est essentiel de comprendre ces questions pour planifier votre stratégie de migration.

Les problèmes d'EO.Pdf

  1. <Taille massive du paquet de 126 Mo : EO.Pdf intègre son propre moteur Chromium, ce qui se traduit par une empreinte de déploiement de 126 Mo. Cela gonfle les images Docker, ralentit les pipelines CI/CD et augmente les coûts d'infrastructure.

  2. Bagages architecturaux : EO.Pdf a été construit à l'origine sur le moteur de rendu d'Internet Explorer avant de migrer vers Chromium. Cet héritage introduit des problèmes de compatibilité avec l'ère IE, une dette technique dans la conception de l'API et un comportement incohérent entre les versions.

  3. Conception centrée sur Windows : Bien qu'il soit commercialisé comme étant "multiplateforme", le support Linux et macOS d'EO.Pdf est limité. De nombreux développeurs signalent des problèmes liés aux déploiements hors Windows.

  4. Options globales statiques : EO.Pdf utilise des HtmlToPdf.Options statiques pour la configuration, ce qui n'est pas sûr pour les threads et pose des problèmes dans les applications web multi-tenant.

  5. <799 $ par licence : À 799 $ par licence de développeur, EO.Pdf est cher par rapport à d'autres solutions offrant des fonctionnalités similaires ou supérieures.

Comparaison des architectures

Aspect EO.Pdf IronPDF
Taille du paquet 126MB Optimisé (~50MB)
Questions de légalité Bagage de migration IE Base de code propre et moderne
Support de la plateforme Axé sur Windows Véritablement multiplateforme
Configuration Statique/global (non thread-safe) Basé sur l'instance, sûr pour les threads
Conception d'API Mixte (HtmlToPdf + ACM) Unification et cohérence
Documentation Limité Tutoriels complets
Moderne .NET .NET Standard .NET 6/7/8/9+ natif
Support asynchrone Limité Async/await complet

Avantages principaux de la migration

  1. 50% de réduction de l'encombrement : l'emballage optimisé d'IronPDF dans Chromium
  2. <Véritablement multiplateforme : Fonctionne à l'identique sur Windows, Linux, macOS, Docker
  3. Configuration sécurisée : options de rendu basées sur l'instance
  4. Une API moderne : Noms de méthodes cohérents et intuitifs
  5. Meilleure documentation : tutoriels et exemples détaillés

Préparation de la migration

Prérequis

Assurez-vous que votre environnement répond à ces exigences :

  • .NET Framework 4.6.2+ ou .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ ou VS Code avec l'extension C#
  • Accès au gestionnaire de paquets NuGet
  • Clé de licenceIronPDF(essai gratuit disponible sur ironpdf.com)

Vérifier l'utilisation d'EO.Pdf

Exécutez ces commandes dans le répertoire de votre solution pour identifier toutes les références EO.Pdf :

# Find all EO.Pdf references
grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "EO.Pdf"
# Find all EO.Pdf references
grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "EO.Pdf"
SHELL

Espaces de noms EO.Pdf courants à rechercher :

  • EO.Pdf - Core HTML to PDF
  • EO.Pdf.Acm - Modèle de contenu avancé (ACM)
  • EO.Pdf.Contents - Manipulation de contenu de bas niveau
  • EO.Pdf.Drawing - Opérations graphiques

Comprendre le changement de modèle de base

La différence architecturale la plus importante entre EO.Pdf etIronPDFest l'étendue de la configuration. EO.Pdf utilise des méthodes statiques avec des options globales qui affectent toutes les conversions, un modèle qui pose des problèmes de sécurité des threads dans les applications web.IronPDFutilise des moteurs de rendu basés sur des instances avec des options locales, ce qui garantit que chaque conversion est isolée.

Processus de migration étape par étape

Étape 1 : Mise à jour des paquets NuGet

Supprimez EO.Pdf et installezIronPDF:

# Remove EO.Pdf
dotnet remove package EO.Pdf

# Install IronPDF
dotnet add package IronPdf
# Remove EO.Pdf
dotnet remove package EO.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Étape 2 : Mise à jour des références aux espaces de noms

Remplacer les espaces de noms EO.Pdf parIronPDF:

// Remove these
using EO.Pdf;
using EO.Pdf.Acm;

// Add this
using IronPdf;
// Remove these
using EO.Pdf;
using EO.Pdf.Acm;

// Add this
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

Référence complète de migration des API

Mappage des classes de base

Classe EO.Pdf Équivalent d'IronPDF Notes
HtmlToPdf ChromePdfRenderer Basé sur l'instance
Document PDF Document PDF Des méthodes similaires mais différentes
HtmlToPdfOptions ChromePdfRenderOptions Via RenderingOptions
AcmRender Pas nécessaire Utiliser HTML/CSS à la place
AcmText HTML <span>, <p>
AcmBlock HTML <div>

Mise en correspondance des méthodes

Méthode EO.Pdf Méthode IronPDF Notes
HtmlToPdf.ConvertHtml(html, path) renderer.RenderHtmlAsPdf(html) then SaveAs(path) Deux étapes dans IronPDF
HtmlToPdf.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url) then SaveAs(path)
PdfDocument.Save(path) pdf.SaveAs(path)
new PdfDocument(path) PdfDocument.FromFile(path) Usine statique
doc.Append(other) PdfDocument.Merge(doc1, doc2) Méthode de fusion statique

Cartographie des options

Option EO.Pdf Options de rendu IronPDF Notes
Options.PageSize = PdfPageSizes.A4 PaperSize = PdfPaperSize.A4
Options.OutputArea (RectangleF) MarginTop, MarginBottom, etc. Propriétés individuelles en mm

Exemples de migration de code

Conversion HTML en PDF

La conversion fondamentale de HTML en PDF démontre le passage de méthodes statiques à un rendu basé sur des instances.

Mise en œuvre d'EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        HtmlToPdf.ConvertHtml(html, "output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        HtmlToPdf.ConvertHtml(html, "output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le modèle en deux étapes d'IronPDF (rendre, puis enregistrer) permet d'accéder à l'objet Document PDFpour des manipulations supplémentaires avant l'enregistrement. Pour plus d'options, consultez la documentation HTML vers PDF.

Conversion d'URL en PDF

Mise en œuvre d'EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        HtmlToPdf.ConvertUrl(url, "webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        HtmlToPdf.ConvertUrl(url, "webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le RenderUrlAsPdf d'IronPDF offre une exécution JavaScript complète et une prise en charge CSS moderne. Pour plus d'options, consultez l'URL vers la documentation PDF.

Fichier HTML avec paramètres personnalisés

Cet exemple démontre la différence critique dans les modèles de configuration : le OutputArea d'EO.Pdf avec des pouces contre les propriétés de marge individuelles d'IronPDF en millimètres.

Mise en œuvre d'EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Notez la conversion des unités : EO.Pdf utilise les pouces dans OutputArea, tandis qu'IronPDF utilise les millimètres. Convertir en utilisant : pouces × 25,4 = mm. Pour plus d'options, consultez la documentation sur les options de rendu.

Fusionner plusieurs fichiers PDF

La fusion de PDF démontre la différence entre le modèle de boucle Append d'EO.Pdf et la méthode statique Merge d'IronPDF.

Mise en œuvre d'EO.Pdf:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

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

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La méthode statique Merge d'IronPDF accepte une collection de documents, ce qui simplifie la fusion de plusieurs documents. Notez le changement de constructeur (new PdfDocument(path)) en fabrique statique (PdfDocument.FromFile(path)). Pour plus d'options, consultez la documentation sur la fusion des PDF.

Notesde migration essentielles

Conversion de l'unité de marge

EO.Pdf utilise les pouces dans OutputArea.IronPDFutilise des millimètres. Convertir en utilisant : pouces × 25,4 = mm

// EO.Pdf - 0.5 inch margins
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

//IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
// EO.Pdf - 0.5 inch margins
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

//IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Configuration statique à la configuration basée sur les instances

Remplacez toutes les HtmlToPdf.Options.X par renderer.RenderingOptions.X :

// EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;

//IronPDF- instance options (thread-safe)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;

//IronPDF- instance options (thread-safe)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Migration d'ACM vers HTML

Si vous utilisez le modèle de contenu avancé d'EO.Pdf (AcmRender, AcmText, AcmBlock), migrez vers le HTML/CSS standard :

// EO.Pdf ACM approach
var acmContent = new AcmContent();
acmContent.Add(new AcmText("Sample Text"));

//IronPDFHTML approach
var html = "<div>Sample Text</div>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// EO.Pdf ACM approach
var acmContent = new AcmContent();
acmContent.Add(new AcmText("Sample Text"));

//IronPDFHTML approach
var html = "<div>Sample Text</div>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Modèle de sauvegarde en deux étapes

EO.Pdf s'enregistre directement dans ConvertHtml().IronPDFrenvoie un objet PdfDocument, puis vous appelez SaveAs() :

// EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf");

//IronPDF- two steps (enables manipulation before save)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf");

//IronPDF- two steps (enables manipulation before save)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Constructeur à usine statique

Remplacez new PdfDocument(path)par PdfDocument.FromFile(path):

// EO.Pdf
var doc = new PdfDocument("file.pdf");

// IronPDF
var doc = PdfDocument.FromFile("file.pdf");
// EO.Pdf
var doc = new PdfDocument("file.pdf");

// IronPDF
var doc = PdfDocument.FromFile("file.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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 que les en-têtes/pieds de page s'affichent correctement
  • [Tester les paramètres de sécurité/chiffrement
  • [Valider les opérations de fusion
  • [ ] Analyse comparative des performances
  • [Test multiplateforme (Windows, Linux, macOS)
  • [Supprimer les fichiers de licence EO.Pdf
  • [Mise à jour de la documentation

Protéger l'avenir de votre infrastructure PDF

Avec .NET 10 à l'horizon et C# 14 introduisant de nouvelles fonctionnalités de langage, le choix d'une bibliothèque PDF avec une prise en charge native moderne de .NET garantit une compatibilité à long terme. L'architecture d'IronPDF, basée sur des instances et à l'abri des threads, s'aligne sur les modèles d'applications web contemporains - ce qui est particulièrement important pour les applications SaaS multi-tenant où les options globales statiques d'EO.Pdf créent des problèmes de concurrence.

Ressources supplémentaires


La migration d'EO.Pdf versIronPDFélimine le gonflement des paquets de 126 Mo, le bagage hérité de l'ère IE et les problèmes de sécurité des threads liés aux options globales statiques. Le passage à une configuration basée sur les instances garantit que votre code de génération de PDF fonctionne de manière fiable dans les applications web multithreads tout en offrant un véritable support de déploiement multiplateforme.

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