比較

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

EO.Pdf vs IronPdf:.NET開発者のための技術比較

.NET開発者がPDF生成ライブラリを評価する際、Chromiumベースのレンダリング機能を持つ商用オプションとしてEO.Pdfが浮上します。 しかし、126MBという巨大なパッケージサイズ、レガシーなInternet Explorerへの移行の手荷物、静的なグローバル設定というアプローチから、多くのチームが代替案を検討しています。 IronPdfはインスタンスベースのスレッドセーフなコンフィギュレーションと真のクロスプラットフォームサポートで最適化されたChromium実装を提供します。

この比較では、プロの開発者やアーキテクトが.NET PDFの要件について十分な情報を得た上で決定できるように、技術的に関連する次元で両ライブラリを検証します。

EO.Pdfを理解する

EO.Pdfは、開発者ライセンスあたり799ドルで提供される商用PDFライブラリで、高品質のPDF生成のためのChromiumベースのレンダリングを特徴としています。 このライブラリは、独自のInternet Explorerレンダリング基盤からChromiumベースのシステムに移行したカスタムエンジン上に構築されたアーキテクチャを誇っています。

このような近代化にもかかわらず、EO.PdfのChromiumへの移行は、Internet Explorer時代のレガシーに起因する互換性の問題をもたらしました。 このライブラリは、独自のChromiumエンジンをバンドルしているため、126MBという大きなデプロイメントフットプリントが発生し、Dockerイメージが膨張し、CI/CDパイプラインが遅くなり、インフラコストが増加します。

また、EO.Pdfはクロスプラットフォームツールとして位置づけられていますが、そのパフォーマンスと使いやすさは主にWindows中心であり、Linuxのサポートは後回しにされがちです。 このライブラリは、静的なHtmlToPdf.Optionsを設定に使用しているため、マルチテナントWebアプリケーションではスレッドセーフの問題が発生します。

IronPDFの理解

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

IronPDFはChromePdfRendererオブジェクトを通してインスタンスベースのコンフィギュレーションを使用し、同時実行シナリオでのスレッドセーフな動作を保証します。 各レンダラー インスタンスは独自の RenderingOptions<//code> を維持し、他の操作から設定を分離します。

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

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

アスペクトEO.PdfIronPDF
パッケージサイズ126MB~50MB(最適化済み)
レガシーな問題IEの移行荷物クリーンでモダンなコードベース
プラットフォームサポートWindowsに特化真のクロスプラットフォーム
コンフィギュレーション静的/グローバルインスタンスベース、スレッドセーフ
価格799ドル/開発者競争力のある価格設定
APIデザイン混合(HtmlToPdf + ACM)統一された一貫性のある
ドキュメント制限的包括的なチュートリアル
モダン.NET.NET 標準.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!");
    }
}
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は、ファイルパスに直接保存する静的な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!");
    }
}
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

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!");
    }
}
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はコンストラクタ(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.");
    }
}
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はHtmlToPdfOptionsを使用し、OutputAreaはインチ単位のRectangleFとして指定されます。 IronPDFはRenderingOptionsオブジェクトで個々のマージンプロパティ(MarginTop, MarginBottom, MarginLeft, MarginRight)をミリメートル単位で使用します。 単位の違いは変換が必要です:inches × 25.4 = millimeters.

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

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

コア オペレーション

EO.PdfIronPDFノート
<コード>HtmlToPdf.ConvertHtml(html, path)renderer.RenderHtmlAsPdf(html) then SaveAs().IronPDFの2ステップ
<コード>HtmlToPdf.ConvertUrl(url, path)renderer.RenderUrlAsPdf(url) then SaveAs().
<コード>HtmlToPdf.Options.PageSize</コードrenderer.RenderingOptions.PaperSize静的ではなくインスタンス
<コード>HtmlToPdf.Options.OutputArea</コード<コード>マージントップ/ボトム/レフト/ライト</コード個々のプロパティ (mm)
new PdfDocument(path).PdfDocument.FromFile(パス)静的ファクトリ
doc.Append(other)を追加します。PdfDocument.Merge(doc1, doc2).静的マージ方式
doc.Save(パス)を実行します。pdf.SaveAs(path)のようにします。

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

EO.PdfオプションIronPDF レンダリングオプションノート
Options.PageSize = PdfPageSizes.A4.PaperSize = PdfPaperSize.A4.
Options.PageSize = PdfPageSizes.Letter.PaperSize = PdfPaperSize.Letter.
Options.OutputArea<//code> (RectangleF)MarginTopMarginBottomなど。個々のプロパティ
<コード>Options.BaseUrl</コード<コード>ベースURL</コード同じコンセプト

クラスマッピング

EO.PdfクラスIronPDF 同等物ノート
<コード>HtmlToPdf</コード<コード>ChromePdfRenderer</コードインスタンスベース
<コード>PdfDocument</コード<コード>PdfDocument</コードさまざまな方法
<コード>HtmlToPdfOptions</コード<コード>ChromePdfRenderOptions</コードRenderingOptions経由
<コード>AcmRender</コード不要代わりにHTML/CSSを使用してください
<コード>AcmText</コードHTML <span><p>
<コード>AcmBlock</コードHTML <コード>
</コード

機能比較の概要

フィーチャー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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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のクリーンでモダンなコードベースはこのような技術的負債を回避します。

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

ACMへの移行: EO.Pdfのアドバンストコンテンツモデル(AcmRender, AcmTextAcmBlock)を使用しているチームは、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の評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。