比較

EO.Pdf vs IronPDF:技術比較ガイド

.NET開発者がPDF生成ライブラリに注目するとき、EO.PdfはChromiumベースのレンダリング機能を備えた商用オプションとして際立っています。 しかし、126MBという大きなパッケージサイズ、レガシーなInternet Explorerへの移行の問題、静的なグローバル設定のアプローチにより、多くのチームが代替案を検討しています。 IronPdfはインスタンスベースのスレッドセーフな設定と真のクロスプラットフォーム対応で洗練されたChromium実装を提供します。

この比較では、プロの開発者やアーキテクトが.NET PDFのニーズに対して十分な情報を得た上で決断できるように、技術的に関連する側面から両ライブラリをレビューします。

EO.Pdfを理解する

EO.Pdfは商用PDFライブラリで、価格は開発者ライセンスあたり799ドル。 ライブラリはカスタムエンジン上に構築されており、元のInternet Explorerレンダリング基盤からChromiumベースのシステムに移行しています。

この更新にもかかわらず、EO.PdfのChromiumへの移行は、Internet Explorer時代のレガシーなお荷物のために互換性の問題を引き起こしている。 このライブラリには独自のChromiumエンジンが含まれているため、126MBのデプロイフットプリントが発生し、Dockerイメージのサイズが大きくなり、CI/CDパイプラインが遅くなり、インフラコストが上昇します。

また、EO.Pdfはクロスプラットフォームツールとして販売されていますが、そのパフォーマンスと使いやすさは主にWindowsに特化しており、Linuxのサポートは二の次とされています。 ライブラリは構成に静的な HtmlToPdf.Options を使用するため、マルチテナント Web アプリケーションではスレッドの安全性に関する懸念が生じます。

IronPDFの理解

IronPDFは最新 for .NET環境のために設計された.NET PDFライブラリで、最適化されたChromiumパッケージングアプローチによりフットプリントが小さくなっています(約50MB)。 このライブラリは、Windowsを優遇するのではなく、すべてのプラットフォームを同等にサポートしているため、多様な環境で展開されるアプリケーションに適しています。

IronPDF は、ChromePdfRenderer オブジェクトを通じてインスタンスベースの構成を使用し、同時シナリオでスレッドセーフな操作を保証します。 各レンダラー インスタンスは独自の RenderingOptions を維持し、構成を他の操作から分離します。

アーキテクチャと構成の比較

これら for .NET PDFライブラリの基本的なアーキテクチャの違いは、構成アプローチとデプロイメント特性にあります。

アスペクトEO.PdfIronPDF
パッケージサイズ126MB~50MB(最適化済み)
レガシーな問題IEの移行荷物クリーンでモダンなコードベース
プラットフォームサポートWindowsに特化真のクロスプラットフォーム
コンフィギュレーション静的/グローバルインスタンスベース、スレッドセーフ
価格799ドル/開発者競争力のある価格設定
APIデザイン混合(HtmlToPdf + ACM)統一された一貫性のある
ドキュメント制限的徹底したチュートリアル
モダン.NET.NET Standard.NET 6/7/8/9+ ネイティブ
非同期サポートについて制限的完全なasync/await

構成モデルは、重要な違いを表しています。 EO.Pdf の静的な HtmlToPdf.Options はすべての変換にグローバルに影響し、マルチスレッド アプリケーションで競合状態を引き起こします。 IronPdfのインスタンスベースのアプローチにより、レンダラーごとに分離されたコンフィギュレーションが保証されます。

コードの比較:一般的なPDF操作

HTMLからPDFへの変換

HTMLコンテンツをPDFに変換すると、基本的な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!");
    }
}
$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!");
    }
}
$vbLabelText   $csharpLabel

EO.Pdf は、ファイル パスに直接保存する静的な HtmlToPdf.ConvertHtml() メソッドを使用します。IronPDFは2 段階のアプローチを使用します: RenderHtmlAsPdf() は、SaveAs() を呼び出す前にさらに操作できる PdfDocument オブジェクトを返します。 この2ステップのパターンは、マージ、透かしの追加、セキュリティ設定の適用などの後処理操作の柔軟性を高めます。

高度なHTMLレンダリングオプションについては、HTMLからPDFへの変換ガイドをご覧ください。

URLからPDFへの変換

ウェブページをPDF文書としてキャプチャすると、同様のAPIパターンが示されます。

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!");
    }
}
$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!");
    }
}
$vbLabelText   $csharpLabel

どちらのライブラリも URL から PDF への機能を提供しますが、EO.Pdf は静的な ConvertUrl() を使用し、IronPDFはインスタンスベースの RenderUrlAsPdf() を使用します。 同じスレッドセーフティーの区別が適用されます。

URL レンダリングの詳細については、URL to PDF documentationを参照してください。

PDFマージ操作

複数のPDFドキュメントを組み合わせることで、さまざまなオブジェクトモデルのアプローチを示します。

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!");
    }
}
$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!");
    }
}
$vbLabelText   $csharpLabel

EO.Pdf はコンストラクター (new PdfDocument(path)) を介してドキュメントを読み込み、Append() を使用して空のコンテナーにドキュメントを追加します。IronPDFは、静的ファクトリ メソッド (PdfDocument.FromFile()) と、コレクションを受け入れてマージされた結果を返す静的 PdfDocument.Merge() メソッドを使用します。

その他のマージ操作については、PDFマージドキュメントを参照してください。

カスタムページ設定

ページサイズと余白の設定は、設定モデルの違いを示しています。

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.");
    }
}
$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.");
    }
}
$vbLabelText   $csharpLabel

EO.Pdf は、インチ単位の RectangleF として指定された OutputArea とともに HtmlToPdfOptions を使用します。IronPDFは、RenderingOptions オブジェクトに対して、個別の余白プロパティ (MarginRight) をミリメートル単位で使用します。 単位の違いにより変換が必要です: inches × 25.4 = millimeters

メソッド マッピング リファレンス

EO.Pdfの移行を評価したり、機能を比較したりする開発者のために、このマッピングは同等の操作を示しています:

コア オペレーション

EO.PdfIronPDF
HtmlToPdf.ConvertHtml(html, path)renderer.RenderHtmlAsPdf(html) 次に SaveAs()
HtmlToPdf.ConvertUrl(url, path)renderer.RenderUrlAsPdf(url) 次に SaveAs()
HtmlToPdf.Options.PageSizerenderer.RenderingOptions.PaperSize
HtmlToPdf.Options.OutputAreaMarginTop/Bottom/Left/Right
new PdfDocument(path)PdfDocument.FromFile(path)
doc.Append(other)PdfDocument.Merge(doc1, doc2)
doc.Save(path)pdf.SaveAs(path)

コンフィギュレーション マッピング

EO.PdfオプションIronPDF レンダリングオプション
Options.PageSize = PdfPageSizes.A4PaperSize = PdfPaperSize.A4
Options.PageSize = PdfPageSizes.LetterPaperSize = PdfPaperSize.Letter
Options.OutputArea (長方形F)MarginBottom など
Options.BaseUrlBaseUrl

クラスマッピング

EO.PdfクラスIronPDF 同等物
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfOptionsChromePdfRenderOptions
AcmRender不要
AcmTextHTML <p>
AcmBlockHTML <div>

機能比較の概要

フィーチャーEO.PdfIronPDF
HTMLからPDFへ
URLからPDFへ
PDFマージ
ページ操作
ヘッダー/フッター✅ (HTMLベース)
セキュリティ/暗号化
フォームフィールド
透かし
ACMレンダリングHTML/CSS (ACMなし)
スレッドセーフ設定❌ (静的)✅ (インスタンス)
クロスプラットフォーム制限的サポート対象

スレッド安全性の問題

EO.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");
// 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");
$vbLabelText   $csharpLabel

複数の同時リクエストを処理するWebアプリケーションでは、1つのリクエストの設定が他のすべてのリクエストに影響します。 このため、予期しない設定でPDFが生成される可能性があるレース状態が発生します。

IronPdfのインスタンスベースのアプローチはこの問題を解決します:

//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");
$vbLabelText   $csharpLabel

ChromePdfRenderer インスタンスは独自の構成を維持し、同時シナリオでの分離を保証します。

チームがEO.PdfからIronPDFへの移行を検討するとき

開発チームがEO.PdfからIronPdfへの移行を評価する理由はいくつかあります:

パッケージサイズの最適化: EO.Pdfの126MBのパッケージサイズは、Dockerイメージを膨張させ、CI/CDパイプラインを遅くし、インフラストラクチャのコストを増加させます。 IronPDFの最適化されたパッケージング(~50MB)はデプロイの効率を大幅に改善します。

スレッドセーフ要件:マルチテナント Web アプリケーションでは、リクエストごとに分離された構成が必要です。EO.Pdf の静的 HtmlToPdf.Options は競合状態を引き起こしますが、IronPDF のインスタンスベースのアプローチによってこれを排除できます。

クロスプラットフォーム展開:LinuxやmacOS環境をターゲットにしたアプリケーションでは、EO.PdfのWindows中心の設計では限界があります。 IronPdfは一貫した動作で真のクロスプラットフォームをサポートします。

Legacy Baggage Avoidance:EO.PdfがInternet ExplorerからChromiumに移行したことで、互換性の問題が発生しました。 IronPdfのクリーンでモダンなコードベースはこのような技術的負債を回避します。

最新 for .NETサポート: .NET 6/7/8/9+をターゲットとするアプリケーションは、EO.Pdf for .NET Standardをターゲットとするアプリケーションに対して、IronPDFのネイティブサポートから恩恵を受けます。

ACM 移行: EO.Pdf の高度なコンテンツ モデル (AcmBlock) を使用しているチームは、IronPDF の HTML/CSS アプローチがよりシンプルで保守しやすいと感じています。

長所と考慮点

EO.Pdfの強み

  • クロムレンダリング: 高品質のW3C準拠出力
  • 確立されたライブラリ: 実稼働環境で実績がある。 -シングルステップ変換: ConvertHtml() 経由の直接ファイル出力

EO.Pdfについての考察

  • 巨大なパッケージサイズ: 126MBの展開フットプリント
  • レガシーIEのお荷物:移行による互換性の問題
  • 静的構成: マルチテナントアプリにおけるスレッドセーフの問題
  • Windows中心: Linux/macOSのサポートは限定的です。
  • 価格: 開発者ライセンスあたり799ドル
  • 限定的なドキュメント: チュートリアルや例が少ない。

IronPDFの強み

  • 最適化されたフットプリント: ~50MBのパッケージサイズ(50%縮小)
  • 真のクロスプラットフォーム: Windows、Linux、macOS、Docker
  • スレッドセーフ構成: インスタンスベースのレンダラー オプション
  • モダンAPI: 一貫した直感的なメソッド名
  • 積極的な開発: 定期的なアップデートとセキュリティパッチ
  • 包括的なリソース: 豊富なチュートリアルドキュメント

IronPDFについての考察

  • 2 段階の保存:レンダリングは PdfDocument を返し、次に SaveAs() を呼び出します。
  • 単位の違い:余白にミリメートルを使用(対EO.Pdfインチ)。

結論

EO.PdfとIronPDFはどちらも.NET開発者のためにChromiumベースのPDF生成を提供しますが、アーキテクチャのアプローチが異なります。 EO.Pdfは確立された機能を提供しますが、126MBのパッケージサイズ、レガシーなInternet Explorerへの移行、スレッドセーフでない静的設定などの問題があります。

IronPdfは最適化されたパッケージング、真のクロスプラットフォームサポート、インスタンスベースのスレッドセーフコンフィギュレーションを備えた最新の選択肢を提供します。 デプロイの効率性、同時操作の安全性、クロスプラットフォームのターゲティングを必要とするチームにとって、IronPDFはこれらの特定の要件に対応します。

組織が.NET 10、C# 14、2026年までのアプリケーション開発を計画する中で、その選択は特定の優先順位によって決まります。 シングルスレッドのWindows環境でEO.Pdfを実装しているチームは、引き続きその価値を見いだせるかもしれません。 最新のマルチテナント・アプリケーション、コンテナ化されたデプロイメント、クロスプラットフォームの要件には、IronPdfがより適切なアプローチを提供します。

無料トライアルでIronPDFの評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。