フッターコンテンツにスキップ
移行ガイド

C#でEO.PdfからIronPDFに移行する方法

EO.PdfからIronPDFへの移行:完全なC#マイグレーションガイド

EO.Pdfは、HTMLからPDFへの変換にChromiumベースのレンダリングを活用する、商用.NET PDFライブラリです。 EO.PdfはW3Cに準拠したレンダリングを提供しますが、そのアーキテクチャには大きな課題があります。Dockerイメージを膨張させ、デプロイを遅くする126MBの巨大なパッケージサイズ、元のInternet Explorerベースのエンジンの遺産、マルチテナント・アプリケーションのスレッドセーフでない静的グローバルオプション、クロスプラットフォームの主張にもかかわらずWindows中心の設計などです。 この包括的なガイドは、最適化されたChromiumパッケージング、インスタンスベースのスレッドセーフコンフィギュレーション、真のクロスプラットフォームサポートを備えた最新の.NET PDFライブラリであるEO.PdfからIronPDFへの移行パスをステップバイステップで提供します。

なぜEO.PdfからIronPDFに移行するのですか? EO.Pdfには、開発チームを代替案の評価に駆り立てるような、アーキテクチャ上の課題がいくつかあります。 これらの問題を理解することは、移行戦略を計画する上で不可欠です。 ### EO.Pdfの問題について 1.**126MBの巨大なパッケージサイズ**: EO.Pdfは独自のChromiumエンジンをバンドルしているため、デプロイ時のフットプリントは126MBになります。 これはDockerイメージを膨らませ、CI/CDパイプラインを遅くし、インフラコストを増加させます。 2.**Legacy Architecture Baggage**: EO.Pdfは、Chromiumに移行する前は、もともとInternet Explorerのレンダリングエンジンで構築されていました。 このレガシーには、IE時代からの互換性の問題、API設計の技術的負債、バージョン間の一貫性のない動作などがあります。 3.**Windows中心のデザイン**:クロスプラットフォーム"を売りにしていますが、EO.PdfのLinuxとmacOSのサポートは限定的です。 多くの開発者が、Windows 以外のデプロイメントに関する問題を報告しています。 4.**静的なグローバルオプション**: EO.Pdfは、静的な`HtmlToPdf.Options`を設定に使用しますが、これはスレッドセーフではなく、マルチテナントWebアプリケーションでは問題があります。 5.**1ライセンスあたり799ドル**:1ライセンス799ドルのEO.Pdfは、同等またはそれ以上の機能を提供する代替ツールと比較すると高価です。 ### アーキテクチャの比較 |アスペクト| EO.Pdf |IronPDF| |--------|--------|---------| |**パッケージサイズ** |126MB|最適化 (~50MB)| |**レガシーな問題**|IEの移行荷物|クリーンでモダンなコードベース| | **プラットフォームサポート** |Windowsに特化|真のクロスプラットフォーム| |**コンフィギュレーション**。|静的/グローバル(スレッドセーフではない)|インスタンスベース、スレッドセーフ| |**APIデザイン**。|混合(HtmlToPdf + ACM)|統一された一貫性のある| |**ドキュメント** | 制限的 |包括的なチュートリアル| |**モダン.NET**|.NET 標準|.NET 6/7/8/9+ ネイティブ| |**非同期サポート**について| 制限的 |完全なasync/await| ### 主な移行のメリット 1.**50%小さいフットプリント**: IronPDFの最適化されたChromiumパッケージング 2.**真のクロスプラットフォーム**:Windows、Linux、macOS、Docker上で同じように動作します。 3.**スレッドセーフ構成**: インスタンスベースのレンダラー オプション 4.**モダンなAPI**:一貫性のある直感的なメソッド名 5.**より良いドキュメント**:広範なチュートリアルと例題 ## 移行前の準備 ### 前提条件 あなたの環境がこれらの要件を満たしていることを確認してください: - .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9 - Visual Studio 2019+またはC#拡張機能付きVS Code - NuGetパッケージマネージャへのアクセス - IronPDFライセンスキー ([ironpdf.com](https://ironpdf.com/licensing/) にて無料トライアル可能) ### EO.Pdfの使用法を監査する

ソリューションディレクトリで以下のコマンドを実行し、すべてのEO.Pdf参照を特定します: ```bash # Find all EO.Pdf references grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "EO.Pdf" ``` 一般的なEO.Pdfの名前空間 - EO.Pdf - コアHTMLからPDFへ - EO.Pdf.Acm - アドバンストコンテンツモデル(ACM) - `EO.Pdf.Contents` - 低レベルのコンテンツ操作 - EO.Pdf.Drawing - グラフィックス操作 ### コアパターンの変更を理解する

EO.PdfとIronPDFの最も重要なアーキテクチャの違いはコンフィギュレーションスコープです。 EO.Pdfは、すべての変換に影響するグローバルオプションを持つ静的メソッドを使用しています。これは、ウェブアプリケーションでスレッドセーフの問題を引き起こすパターンです。 IronPDFはローカルオプションを持つインスタンスベースのレンダラーを使用し、各変換が分離されていることを保証します。 ## ステップごとの移行プロセス ### ステップ 1: NuGet パッケージを更新する。 EO.Pdfを削除し、IronPdfをインストールしてください: ```bash # Remove EO.Pdf dotnet remove package EO.Pdf # Install IronPDF dotnet add package IronPdf ``` ### ステップ 2: 名前空間参照の更新 EO.Pdf名前空間をIronPDF.Pdfに置き換えてください: ```csharp // Remove these using EO.Pdf; using EO.Pdf.Acm; // Add this using IronPdf; ``` ### ステップ 3: ライセンスの設定 ```csharp // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; ``` ## 完全な API 移行のリファレンス ### コア クラス マッピング |EO.Pdfクラス|IronPDF 同等物|ノート| |-------------|-------------------|-------| |<コード>HtmlToPdfChromePdfRendererPdfDocumentPdfDocumentHtmlToPdfOptionsChromePdfRenderOptionsAcmRenderAcmText`、`

`。| | |<コード>AcmBlock

HtmlToPdf.ConvertHtml(html, path)|`renderer.RenderHtmlAsPdf(html)` then `SaveAs(path)`.|IronPDFの2ステップ| |<コード>HtmlToPdf.ConvertUrl(url, path)|`renderer.RenderUrlAsPdf(url)` then `SaveAs(path)`.| | |`PdfDocument.Save(パス)`。|`pdf.SaveAs(path)`のようにします。| | |`new PdfDocument(path)`.|`PdfDocument.FromFile(パス)`。|静的ファクトリ| |`doc.Append(other)`を追加します。|`PdfDocument.Merge(doc1, doc2)`.|静的マージ方式| ### オプション マッピング |EO.Pdfオプション|IronPDF レンダリングオプション|ノート| |--------------|-------------------------|-------| |`Options.PageSize = PdfPageSizes.A4`.|`PaperSize = PdfPaperSize.A4`.| | |Options.OutputArea (RectangleF)|`MarginTop`、`MarginBottom`など。|mmの個々のプロパティ| ## コード移行の例 ### HTMLからPDFへの変換 基本的なHTMLからPDFへの変換は、静的メソッドからインスタンスベースのレンダリングへの移行を示しています。 **EO.Pdfの実装:** ```csharp // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { string html = "

Hello World

This is a PDF generated from HTML.

"; HtmlToPdf.ConvertHtml(html, "output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` **IronPDFの実装:**。 ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "

Hello World

This is a PDF generated from HTML.

"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` IronPDFの2段階パターン(レンダリングしてから保存)は、保存する前に`PdfDocument`オブジェクトにアクセスして追加操作を行うことができます。 その他のオプションについては、[HTML to PDF documentation](https://ironpdf.com/how-to/html-file-to-pdf/)を参照してください。 ### URLからPDFへの変換 **EO.Pdfの実装:** ```csharp // 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!"); } } ``` **IronPDFの実装:**。 ```csharp // 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!"); } } ``` IronPdfの`RenderUrlAsPdf`は完全なJavaScript実行とモダンなCSSサポートを提供します。 その他のオプションについては、[URL to PDF documentation](https://ironpdf.com/how-to/url-to-pdf/)を参照してください。 ### カスタム設定の HTML ファイル この例では、EO.Pdfの`OutputArea`がインチであるのに対して、IronPDFの各マージンプロパティはミリメートルであるという設定パターンの決定的な違いを示しています。 **EO.Pdfの実装:** ```csharp // 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."); } } ``` **IronPDFの実装:**。 ```csharp // 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."); } } ``` 単位変換に注意してください:EO.Pdfは`OutputArea`でインチを使っていますが、IronPdfはミリを使っています。 変換にはinches × 25.4 = mm. その他のオプションについては、[rendering options documentation](https://ironpdf.com/tutorials/)を参照してください。 ### 複数のPDFをマージする

PDFのマージはEO.Pdfの`Append`ループパターンとIronPDFの静的な`Merge`メソッドの違いを示しています。 **EO.Pdfの実装:** ```csharp // 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!"); } } ``` **IronPDFの実装:**。 ```csharp // 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 { pdf1, pdf2 }); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } ``` IronPdfの静的な`Merge`メソッドはドキュメントのコレクションを受け入れ、複数のドキュメントのマージを簡素化します。 コンストラクタ (`new PdfDocument(path)`) から静的ファクトリ (`PdfDocument.FromFile(path)`) への変更に注意してください。 その他のオプションについては、[PDFマージドキュメント](https://ironpdf.com/how-to/merge-split-pdfs/)を参照してください。 ## 重要な移行に関する注意事項 ### マージン単位の変換 EO.Pdfは`OutputArea`でインチを使用しています。 IronPDFはミリメートルを使用しています。 変換にはinches × 25.4 = mm を使用して変換します。 ```csharp // 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; ``` ### 静的な構成からインスタンスベースの構成へ

すべての`HtmlToPdf.Options.X`を`renderer.RenderingOptions.X`に置き換えてください: ```csharp // 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; ``` ### ACMからHTMLへの移行 EO.Pdfのアドバンスト・コンテンツ・モデル(`AcmRender`、`AcmText`、`AcmBlock`)を使用している場合は、標準のHTML/CSSに移行してください: ```csharp // EO.Pdf ACM approach var acmContent = new AcmContent(); acmContent.Add(new AcmText("Sample Text")); //IronPDFHTML approach var html = "
Sample Text
"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); ``` ### 2段階保存パターン EO.Pdfは`ConvertHtml()`で直接保存します。 IronPDFは`PdfDocument`オブジェクトを返し、`SaveAs()`を呼び出します: ```csharp // 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"); ``` ### コンストラクタから静的ファクトリへ

`new PdfDocument(path)` を`PdfDocument.FromFile(パス)`。に置き換えてください: ```csharp // EO.Pdf var doc = new PdfDocument("file.pdf"); // IronPDF var doc = PdfDocument.FromFile("file.pdf"); ``` ## 移行後のチェックリスト コードの移行が完了したら、以下を確認してください: - [生成されたPDFのビジュアル比較 - [ヘッダー/フッターが正しくレンダリングされることを確認してください。 - [セキュリティ/暗号化設定のテスト - [マージの検証 - [パフォーマンスベンチマーク - [クロスプラットフォームテスト(Windows、Linux、macOS) - [ ] EO.Pdfライセンスファイルの削除 - [ドキュメントの更新 ## PDFインフラストラクチャの将来性を確保する

.NET 10が目前に迫り、C# 14では新しい言語機能が導入されるため、最新の.NETネイティブサポートを備えたPDFライブラリを選択することで、長期的な互換性を確保できます。 IronPdfのインスタンスベースのスレッドセーフアーキテクチャは現代のウェブアプリケーションのパターンに合致しており、特にEO.Pdfの静的グローバルオプションが並行性の問題を引き起こすマルチテナントのSaaSアプリケーションにとって重要です。 ## その他のリソース - [IronPDFドキュメント](https://ironpdf.com/docs/). - [HTMLからPDFへのチュートリアル](https://ironpdf.com/tutorials/)。 - [APIリファレンス](https://ironpdf.com/object-reference/api/). - [NuGetパッケージ](https://www.nuget.org/packages/IronPdf/)。 - [ライセンスオプション](https://ironpdf.com/licensing/)。 --- EO.PdfからIronPdfに移行することで、126MBのパッケージの肥大化、IE時代のお荷物、静的グローバルオプションによるスレッドセーフの懸念がなくなります。 インスタンスベースの構成に移行することで、PDF生成コードがマルチスレッドのWebアプリケーションで確実に動作することを保証すると同時に、真のクロスプラットフォーム・デプロイメントをサポートします。
カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。