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
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
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
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
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
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
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
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
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
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
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 appelleSaveAs() - 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.