COMPARAISON

EO.Pdf vs IronPDF : Guide de comparaison technique

EO.Pdf vsIronPDF: Une comparaison technique pour les développeurs .NET

Lorsque les développeurs .NET évaluent les bibliothèques de génération de PDF, EO.Pdf apparaît comme une option commerciale avec des capacités de rendu basées sur Chromium. Cependant, la taille imposante du paquet de 126 Mo, le bagage de migration de l'ancien Internet Explorer et l'approche de configuration globale statique conduisent de nombreuses équipes à évaluer d'autres solutions.IronPDFoffre une mise en œuvre optimisée de Chromium avec une configuration basée sur les instances et à l'abri des threads, ainsi qu'une véritable prise en charge multiplateforme.

Cette comparaison examine les deux bibliothèques à travers des dimensions techniquement pertinentes afin d'aider les développeurs professionnels et les architectes à prendre des décisions éclairées pour leurs besoins en .NET PDF.

Comprendre EO.Pdf

EO.Pdf est une bibliothèque PDF commerciale proposée à 799 dollars par licence de développeur, avec un rendu basé sur Chromium pour une génération de PDF de haute qualité. La bibliothèque possède une architecture construite sur un moteur personnalisé, ayant migré de sa base de rendu Internet Explorer vers un système basé sur Chromium.

Malgré cette modernisation, la migration d'EO.Pdf vers Chromium a introduit des problèmes de compatibilité attribués à son héritage de l'ère Internet Explorer. La bibliothèque intègre son propre moteur Chromium, ce qui entraîne une empreinte de déploiement importante de 126 Mo qui gonfle les images Docker, ralentit les pipelines CI/CD et augmente les coûts d'infrastructure.

En outre, bien qu'EO.Pdf se présente comme un outil multiplateforme, ses performances et sa facilité d'utilisation sont principalement axées sur Windows, la prise en charge de Linux étant souvent décrite comme un pis-aller. La bibliothèque utilise des HtmlToPdf.Options statiques pour la configuration, ce qui pose des problèmes de sécurité des threads dans les applications web multi-tenant.

Comprendre IronPDF

IronPDF est une bibliothèque PDF .NET conçue pour les environnements .NET modernes avec une approche d'emballage Chromium optimisée, ce qui se traduit par un encombrement réduit (environ 50 Mo). La bibliothèque prend en charge toutes les plateformes de la même manière et ne privilégie pas Windows, ce qui la rend adaptée aux applications déployées dans divers environnements.

IronPDF utilise une configuration basée sur les instances par le biais d'objets ChromePdfRenderer, ce qui garantit un fonctionnement à l'abri des threads dans les scénarios concurrents. Chaque instance de moteur de rendu conserve ses propres RenderingOptions, ce qui permet d'isoler la configuration des autres opérations.

Comparaison de l'architecture et de la configuration

La différence architecturale fondamentale entre ces bibliothèques PDF .NET réside dans leur approche de configuration et leurs caractéristiques de déploiement.

Aspect EO.Pdf IronPDF
Taille du paquet 126MB ~50MB (optimisé)
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 Basé sur l'instance, sûr pour les threads
Prix 799 $/développeur Prix compétitifs
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

Le modèle de configuration représente une distinction essentielle. Le HtmlToPdf.Options statique d'EO.Pdf affecte toutes les conversions globalement, créant des conditions de course dans les applications multithread. L'approche basée sur les instances d'IronPDF garantit une configuration isolée par moteur de rendu.

Code Comparaison : Opérations PDF courantes

Conversion HTML en PDF

La conversion du contenu HTML en PDF montre les différences fondamentales entre les API.

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

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

EO.Pdf utilise une méthode statique HtmlToPdf.ConvertHtml() qui enregistre directement dans un chemin de fichier.IronPDFutilise une approche en deux étapes : RenderHtmlAsPdf() renvoie un objet Document PDFqui peut être manipulé avant d'appeler SaveAs(). Ce modèle en deux étapes offre plus de souplesse pour les opérations de post-traitement telles que la fusion, l'ajout de filigranes ou l'application de paramètres de sécurité.

Pour des options de rendu HTML avancées, explorez le guide de conversion du HTML en PDF.

Conversion d'URL en PDF

La capture de pages web en tant que documents PDF présente des schémas d'API similaires.

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

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

Les deux bibliothèques offrent une capacité de conversion d'URL en PDF, EO.Pdf utilisant un ConvertUrl() statique etIronPDFutilisant un RenderUrlAsPdf() basé sur l'instance. La même distinction s'applique en matière de sécurité des threads.

Pour en savoir plus sur le rendu des URL, consultez la documentation sur les URL au format PDF.

Opérations de fusion de fichiers PDF

La combinaison de plusieurs documents PDF démontre différentes approches de modèles d'objets.

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

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

EO.Pdf charge les documents via des constructeurs (new PdfDocument(path)) et utilise Append() pour ajouter des documents à un conteneur vide.IronPDFutilise des méthodes d'usine statiques (PdfDocument.FromFile()) et une méthode statique PdfDocument.Merge() qui accepte une collection et renvoie le résultat fusionné.

Explorez d'autres opérations de fusion dans la documentation sur la fusion de fichiers PDF.

Paramètres de page personnalisés

La configuration de la taille des pages et des marges illustre les différences entre les modèles de configuration.

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

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

EO.Pdf utilise HtmlToPdfOptionsavec OutputArea spécifié comme un RectangleF en pouces.IronPDFutilise des propriétés de marge individuelles (MarginTop, MarginBottom, MarginLeft, MarginRight) en millimètres sur l'objet RenderingOptions. La différence d'unité nécessite une conversion : pouces × 25,4 = millimètres.

Référence pour le mappage de méthodes

Pour les développeurs qui évaluent la migration EO.Pdf ou qui comparent les capacités, cette correspondance montre les opérations équivalentes :

Opérations de base

EO.Pdf IronPDF Notes
HtmlToPdf.ConvertHtml(html, path) renderer.RenderHtmlAsPdf(html) then SaveAs() Deux étapes dans IronPDF
HtmlToPdf.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url) then SaveAs()
HtmlToPdf.Options.PageSize renderer.RenderingOptions.PaperSize Instance, pas statique
HtmlToPdf.Options.OutputArea MarginTop/Bottom/Left/Right Propriétés individuelles (mm)
new PdfDocument(path) PdfDocument.FromFile(path) Usine statique
doc.Append(other) PdfDocument.Merge(doc1, doc2) Méthode de fusion statique
doc.Save(path) pdf.SaveAs(path)

Cartographie de configuration

Option EO.Pdf Options de rendu IronPDF Notes
Options.PageSize = PdfPageSizes.A4 PaperSize = PdfPaperSize.A4
Options.PageSize = PdfPageSizes.Letter PaperSize = PdfPaperSize.Letter
Options.OutputArea (RectangleF) MarginTop, MarginBottom, etc. Propriétés individuelles
Options.BaseUrl BaseUrl Même concept

Mise en correspondance des classes

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

Résumé de la comparaison des fonctionnalités

Fonction EO.Pdf IronPDF
HTML vers PDF
URL vers PDF
Fusion de PDF
Manipulation des pages
En-têtes/pieds de page ✅(basé sur HTML)
Sécurité/cryptage
Champs de formulaire
Filigranes
Rendu ACM HTML/CSS (pas d'ACM)
Configuration à sécurité intrinsèque ❌ (statique) ✅(instance)
Multiplateforme Limité Prise en charge complète

Le problème de la sécurité des threads

La configuration statique d'EO.Pdf crée un problème fondamental dans les applications multithread :

// EO.Pdf - DANGER: Static options affect ALL threads!
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;
HtmlToPdf.Options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
HtmlToPdf.ConvertHtml(html, "output.pdf");
// EO.Pdf - DANGER: Static options affect ALL threads!
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;
HtmlToPdf.Options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
HtmlToPdf.ConvertHtml(html, "output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dans une application web traitant plusieurs requêtes simultanées, la configuration d'une requête affecte toutes les autres requêtes. Cela crée des conditions de course où les PDF peuvent être générés avec des paramètres inattendus.

L'approche basée sur les instances d'IronPDF élimine ce problème :

//IronPDF- Thread-safe, isolated options per renderer instance
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 12.7;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
//IronPDF- Thread-safe, isolated options per renderer instance
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 12.7;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Chaque instance de ChromePdfRendererconserve sa propre configuration, ce qui garantit l'isolement dans les scénarios concurrents.

Quand les équipes envisagent de passer d'EO.Pdf à IronPDF

Les équipes de développement évaluent le passage d'EO.Pdf àIronPDFpour plusieurs raisons :

Optimisation de la taille des paquets : la taille de 126 Mo des paquets d'EO.Pdf gonfle les images Docker, ralentit les pipelines CI/CD et augmente les coûts d'infrastructure. Le conditionnement optimisé d'IronPDF (~50MB) permet d'améliorer considérablement l'efficacité du déploiement.

Exigences en matière de sécurité des threads : Les applications web multi-locataires nécessitent une configuration isolée par requête. Le HtmlToPdf.Options statique d'EO.Pdf crée des conditions de course que l'approche basée sur les instances d'IronPDF élimine.

<Déploiement multiplateforme : Les applications ciblant les environnements Linux ou macOS se heurtent aux limites de la conception d'EO.Pdf centrée sur Windows.IronPDFoffre une véritable prise en charge multiplateforme avec un comportement cohérent.

Eviter le bagage de l'héritage : La migration d'EO.Pdf d'Internet Explorer vers Chromium a introduit des problèmes de compatibilité. La base de code propre et moderne d'IronPDF permet d'éviter cette dette technique.

<Prise en charge moderne de .NET : Les applications ciblant .NET 6/7/8/9+ bénéficient de la prise en charge native d'IronPDF par rapport au ciblage .NET Standardd'EO.Pdf.

ACM Migration : Les équipes qui utilisent le modèle de contenu avancé d'EO.Pdf (AcmRender, AcmText, AcmBlock) trouvent l'approche HTML/CSS d'IronPDF plus simple et plus facile à maintenir.

Forces et considérations

EO.Pdf Points forts

  • Chromium Rendering : résultat de haute qualité conforme aux normes du W3C
  • Bibliothèque établie : Éprouvée dans des environnements de production
  • Conversion en une seule étape : Sortie directe du fichier via ConvertHtml()

Considérations EO.Pdf

  • Taille du paquet massif : 126MBd'empreinte de déploiement
  • Legacy IE Baggage : Problèmes de compatibilité liés à la migration
  • Configuration statique : Problèmes de sécurité des threads dans les applications multi-tenant
  • Centré sur Windows : Prise en charge limitée de Linux/macOS
  • Prix : 799 $ par licence de développeur
  • Documentation limitée : Moins de tutoriels et d'exemples

Les points forts d'IronPDF

  • Emploi optimisé : Taille du paquet ~50MB (50% plus petit)
  • <Véritablement multiplateforme : Windows, Linux, macOS, Docker
  • Configuration sécurisée : options de rendu basées sur l'instance
  • Une API moderne : Noms de méthodes cohérents et intuitifs
  • Développement actif : Mises à jour régulières et correctifs de sécurité
  • Ressources complètes : tutoriels et documentation exhaustifs

Considérations relatives à IronPDF

  • Sauvegarde en deux étapes : Le rendu renvoie un PdfDocument, puis appelle SaveAs()
  • Différences d'unités : Utilise des millimètres pour les marges (vs EO.Pdf pouces)

Conclusion

EO.Pdf etIronPDFfournissent tous deux une génération de PDF basée sur Chromium pour les développeurs .NET, mais ils représentent des approches architecturales différentes. EO.Pdf offre des fonctionnalités reconnues, mais il a une taille de 126 Mo, une migration vers l'ancien Internet Explorer et une configuration statique non sécurisée.

IronPDF offre une alternative moderne avec un packaging optimisé, une véritable prise en charge multiplateforme et une configuration à sécurité thread basée sur les instances. Pour les équipes qui ont besoin d'efficacité en matière de déploiement, de sécurité des opérations simultanées ou de ciblage multiplateforme,IronPDFrépond à ces exigences spécifiques.

Alors que les organisations planifient .NET 10, C# 14 et le développement d'applications jusqu'en 2026, le choix dépend de priorités spécifiques. Les équipes qui ont déjà mis en œuvre EO.Pdf dans des environnements Windows à un seul fil peuvent continuer à y trouver de la valeur. Pour les applications multi-tenant modernes, les déploiements conteneurisés ou les exigences multiplateformes,IronPDFconstitue une approche plus adaptée.

Commencez à évaluerIronPDFavec un essai gratuit et explorez la documentation complète pour évaluer l'adéquation à vos besoins spécifiques.