移行ガイド ActivePDFからIronPDFへの移行:(.NET ガイド) カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る ActivePDF は、.NET 開発者にとって信頼できる PDF ツールキットです。 しかし、Foxit が買収して以来、多くの開発チームはプラットフォームの将来、ライセンス条件、進行中の開発について不確実性を感じています。 このガイドでは、ActivePDF からIronPDF(.NET Framework 4.6.2 から .NET 9 以降をサポートする、最新のアクティブにメンテナンスされている .NET PDF ライブラリ) への移行パスをステップごとに詳しく説明します。 アクティブPDFからの移行を検討する理由は何ですか? Foxit によるアクティブPDFの買収により、.NET アプリケーションで PDF 生成および操作ソリューションを開発する開発者にはいくつかの課題が生じました。 不確かな製品の将来 ActivePDF が Foxit の所有権下に移行したことで、ツールキットの長期的な開発経路について疑問が生じています。アクティブPDFに依存している開発者は、サポートの減少や開発の停滞によりライブラリが古くなる潜在的なリスクに直面しています。 2025年や2026年まで続くプロジェクトを計画しているチームにとって、この不確実性は大きな技術的リスクとなります。 ライセンスの複雑さ この買収により、ライセンスの不確実性が導入され、導入が複雑化する可能性があります。 ActivePDFの伝統的なマシンロック型のライセンスモデルは、アプリケーションがインフラ全体で動的に拡張される最新のクラウドやコンテナ化された環境では摩擦を生みます。 レガシーアーキテクチャパターン ActivePDFのアーキテクチャは、ステートフルツールキットのパターンを中心とした古い設計思想を反映しています。 OpenOutputFile/CloseOutputFileワークフローでは、明示的なファイルハンドル管理が必要ですが、これは最新のC#の規約と一致しておらず、慎重に扱わないとリソース管理の問題を引き起こす可能性があります。 インストールと設定のオーバーヘッド 現代のNuGetベースのパッケージ管理とは異なり、ActivePDFではツールキットをインスタンス化する際に、DLLの参照や明示的なパス設定を手動で行う必要があります。 ActivePDFとIronPDFの比較:主な違い 移行プロセスを開始する前に、ActivePDF とIronPDFの基本的な違いを理解しておくと、必要なコード変更に対する期待を設定するのに役立ちます。 アスペクト アクティブPDF IronPDF 会社ステータス Foxit に買収される(将来は不透明) 独立した明確な開発ロードマップ インストール。 マニュアルDLLリファレンス シンプルなNuGetパッケージ。 APIパターン ステートフル (OpenOutputFile/CloseOutputFile) 流暢で機能的なAPI ライセンスモデル マシンロック コードベースのキー .NETサポート レガシー.NET Frameworkフォーカス .NET Framework 4.6.2 から .NET 9+ へ エラー処理。 整数のリターンコード 最新の例外ベース 非同期サポートについて 不可 完全なasync/awaitのサポート 移行前の準備 コードベースの監査 移行を開始する前に、ソリューション全体にわたるすべてのActivePDFの使用状況を確認してください。 ソリューションディレクトリで以下のコマンドを実行してください: grep -r "using ActivePDF" --include="*.cs" . grep -r "using APToolkitNET" --include="*.cs" . grep -r "APToolkitNET" --include="*.csproj" . grep -r "using ActivePDF" --include="*.cs" . grep -r "using APToolkitNET" --include="*.cs" . grep -r "APToolkitNET" --include="*.csproj" . SHELL ドキュメントの変更 基本的なAPIの違いを理解することは、移行戦略の立案に役立ちます: カテゴリ ActivePDF の動作 IronPDF の動作 移行作業 オブジェクトモデル 単一の ツールキット オブジェクト ChromePdfRenderer</code> + <code>PdfDocument 懸念事項 ファイル操作 OpenOutputFile()/CloseOutputFile()。 直接 SaveAs() open/closeコールの削除 ページ作成 NewPage()メソッド HTMLからの自動翻訳 ページ作成コールの削除 戻り値 整数エラーコード 例外 try/catchの実装 ページサイズ単位 ポイント (612x792 = 文字) 列挙型またはミリメートル 測定値の更新 前提条件 あなたの環境がこれらの要件を満たしていることを確認してください: .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9 Visual Studio 2019+またはJetBrains Rider NuGetパッケージマネージャへのアクセス IronPDFライセンスキー (ironpdf.com にて無料トライアル可能) ステップごとの移行プロセス ステップ 1: NuGet パッケージを更新する ActivePDFパッケージを削除し、IronPDFをインストールしてください: # RemoveアクティブPDFpackage dotnet remove package APToolkitNET # Install IronPDF dotnet add package IronPdf # RemoveアクティブPDFpackage dotnet remove package APToolkitNET # Install IronPDF dotnet add package IronPdf SHELL または、Visual Studioパッケージマネージャーコンソールを使用してください: Uninstall-Package APToolkitNET Install-Package IronPdf 手動のDLL参照があるプロジェクトでは、.csprojファイルから参照を削除してください: <Reference Include="APToolkitNET"> <HintPath>path\to\APToolkitNET.dll</HintPath> </Reference> <Reference Include="APToolkitNET"> <HintPath>path\to\APToolkitNET.dll</HintPath> </Reference> XML ステップ 2: ライセンス キーの設定 IronPDFライセンスキーはアプリケーション起動時、PDF操作の前に追加してください: // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Verify license status bool isLicensed = IronPdf.License.IsLicensed; // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Verify license status bool isLicensed = IronPdf.License.IsLicensed; $vbLabelText $csharpLabel ステップ 3: 名前空間参照の更新 ソリューション全体でグローバルな検索と置換を実行してください: 検索 置換対象 ActivePDF.Toolkitを使用しています。|IronPdf;`を使用しています。 APToolkitNETを使用しています。 IronPdf;を使用しています。 APToolkitNET.PDFObjectsを使用しています。 IronPdf;を使用しています。 APToolkitNET.Common;を使用しています。 IronPdf;を使用しています。 完全な API 移行のリファレンス ドキュメント作成方法 ActivePDFメソッド IronPDF 同等物 ノート new Toolkit(). new ChromePdfRenderer(). レンダラでPDFを作成 toolkit.OpenOutputFile(パス)。 同等のものは不要 最後にSaveAs()を呼び出すだけです。 toolkit.CloseOutputFile()。 同等のものは不要 自動クリーンアップ toolkit.AddHTML(html)を使用してください。 renderer.RenderHtmlAsPdf(html). PdfDocument を返します。 toolkit.AddURL(url)|renderer.RenderUrlAsPdf(url)`のようにします。 URLからPDFへの変換。 toolkit.SaveAs(パス)。 pdf.SaveAs(path)のようにします。 ファイルに保存 ファイル操作 ActivePDFメソッド IronPDF 同等物 ノート toolkit.OpenInputFile(path)を実行します。 PdfDocument.FromFile(パス)。 既存のPDFを読み込む. toolkit.AddPDF(パス)。 PdfDocument.Merge()を使用してください。 マージ作業 toolkit.GetPageCount()。 pdf.PageCount プロパティアクセス toolkit.GetText() pdf.ExtractAllText()を使用してください。 テキスト抽出。 ページ構成 ActivePDFメソッド IronPDF 同等物 toolkit.SetPageSize(612,792)を使用してください。 RenderingOptions.PaperSize=PdfPaperSize.Letter。 toolkit.SetOrientation("Landscape"). RenderingOptions.PaperOrientation=PdfPaperOrientation.Landscape。 toolkit.SetMargins(t、b、l、r)。 RenderingOptions.MarginTop/Bottom/Left/Right。 セキュリティ手法 ActivePDFメソッド IronPDF 同等物 toolkit.Encrypt(password)。 pdf.SecuritySettings.OwnerPassword。 toolkit.SetUserPassword(pwd)を使用してください。 pdf.SecuritySettings.UserPassword。 toolkit.SetPermissions(flags). pdf.SecuritySettings.AllowUserXxx。 toolkit.AddWatermark(text). pdf.ApplyWatermark(html). コード移行の例 HTMLからPDFへの変換 HTML文字列をPDF文書に変換することは、最も一般的なPDF生成シナリオの1つです。 以下は、移行中にコードがどのように変化するかです。 ActivePDFの実装:。 // NuGet: Install-Package APToolkitNET using ActivePDF.Toolkit; using System; class Program { static void Main() { Toolkit toolkit = new Toolkit(); string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; if (toolkit.OpenOutputFile("output.pdf") == 0) { toolkit.AddHTML(htmlContent); toolkit.CloseOutputFile(); Console.WriteLine("PDF created successfully"); } } } // NuGet: Install-Package APToolkitNET using ActivePDF.Toolkit; using System; class Program { static void Main() { Toolkit toolkit = new Toolkit(); string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; if (toolkit.OpenOutputFile("output.pdf") == 0) { toolkit.AddHTML(htmlContent); toolkit.CloseOutputFile(); Console.WriteLine("PDF created successfully"); } } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } $vbLabelText $csharpLabel IronPDFのアプローチは、よりクリーンで読みやすいコードを提供しながら、明示的なファイルハンドル管理を排除します。 高度なHTML to PDFシナリオのために、IronPDFのChromePdfRendererはピクセルパーフェクトなCSSとJavaScriptサポートのためにChromiumベースのレンダリングエンジンを使用しています。 URLからPDFへの変換 Web ページを PDF ドキュメントとしてキャプチャする場合も、同様の近代化パターンに従います。 ActivePDFの実装:。 using ActivePDF.Toolkit; using System; class Program { static void Main() { Toolkit toolkit = new Toolkit(); string url = "https://www.example.com"; if (toolkit.OpenOutputFile("webpage.pdf") == 0) { toolkit.AddURL(url); toolkit.CloseOutputFile(); Console.WriteLine("PDF from URL created successfully"); } } } using ActivePDF.Toolkit; using System; class Program { static void Main() { Toolkit toolkit = new Toolkit(); string url = "https://www.example.com"; if (toolkit.OpenOutputFile("webpage.pdf") == 0) { toolkit.AddURL(url); toolkit.CloseOutputFile(); Console.WriteLine("PDF from URL created successfully"); } } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string url = "https://www.example.com"; var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully"); } } using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string url = "https://www.example.com"; var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully"); } } $vbLabelText $csharpLabel 複数のPDFをマージする 複数のPDFドキュメントを1つのファイルに結合することで、IronPDFのドキュメント操作に対する機能的なアプローチを示しています。 ActivePDFの実装:。 using ActivePDF.Toolkit; using System; class Program { static void Main() { Toolkit toolkit = new Toolkit(); if (toolkit.OpenOutputFile("merged.pdf") == 0) { toolkit.AddPDF("document1.pdf"); toolkit.AddPDF("document2.pdf"); toolkit.CloseOutputFile(); Console.WriteLine("PDFs merged successfully"); } } } using ActivePDF.Toolkit; using System; class Program { static void Main() { Toolkit toolkit = new Toolkit(); if (toolkit.OpenOutputFile("merged.pdf") == 0) { toolkit.AddPDF("document1.pdf"); toolkit.AddPDF("document2.pdf"); toolkit.CloseOutputFile(); Console.WriteLine("PDFs merged successfully"); } } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } $vbLabelText $csharpLabel 選択的なページ抽出を含む、より高度なマージシナリオについては、PDFマージドキュメントを参照してください。 ヘッダーとフッターの追加 ActivePDFの実装:。 using ActivePDF.Toolkit; public void CreatePdfWithHeaderFooter(string html, string outputPath) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenOutputFile(outputPath) == 0) { toolkit.SetHeader("My Document", 12, "Arial"); toolkit.SetFooter("Page %p of %P", 10, "Arial"); toolkit.AddHTML(html); toolkit.CloseOutputFile(); } } using ActivePDF.Toolkit; public void CreatePdfWithHeaderFooter(string html, string outputPath) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenOutputFile(outputPath) == 0) { toolkit.SetHeader("My Document", 12, "Arial"); toolkit.SetFooter("Page %p of %P", 10, "Arial"); toolkit.AddHTML(html); toolkit.CloseOutputFile(); } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; public void CreatePdfWithHeaderFooter(string html, string outputPath) { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader = new TextHeaderFooter { CenterText = "My Document", FontSize = 12, FontFamily = "Arial" }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}", FontSize = 10, FontFamily = "Arial" }; using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(outputPath); } using IronPdf; public void CreatePdfWithHeaderFooter(string html, string outputPath) { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader = new TextHeaderFooter { CenterText = "My Document", FontSize = 12, FontFamily = "Arial" }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}", FontSize = 10, FontFamily = "Arial" }; using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel IronPdfはテキストベースとHTMLヘッダーとフッターの両方をサポートし、柔軟なデザインを提供します。 パスワード保護とセキュリティ ActivePDFの実装:。 using ActivePDF.Toolkit; public void ProtectPdf(string inputPath, string outputPath, string password) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenInputFile(inputPath) == 0) { toolkit.Encrypt(password); toolkit.SetUserPassword(password); toolkit.SetPermissions(4); // Print only toolkit.SaveAs(outputPath); toolkit.CloseInputFile(); } } using ActivePDF.Toolkit; public void ProtectPdf(string inputPath, string outputPath, string password) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenInputFile(inputPath) == 0) { toolkit.Encrypt(password); toolkit.SetUserPassword(password); toolkit.SetPermissions(4); // Print only toolkit.SaveAs(outputPath); toolkit.CloseInputFile(); } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; public void ProtectPdf(string inputPath, string outputPath, string password) { using var pdf = PdfDocument.FromFile(inputPath); pdf.SecuritySettings.OwnerPassword = password; pdf.SecuritySettings.UserPassword = password; pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs(outputPath); } using IronPdf; public void ProtectPdf(string inputPath, string outputPath, string password) { using var pdf = PdfDocument.FromFile(inputPath); pdf.SecuritySettings.OwnerPassword = password; pdf.SecuritySettings.UserPassword = password; pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel IronPdfのセキュリティ設定APIは、整数フラグの代わりに強く型付けされた列挙型を使って、ドキュメントのパーミッションをきめ細かく制御します。 テキスト抽出 ActivePDFの実装:。 using ActivePDF.Toolkit; public string ExtractText(string pdfPath) { Toolkit toolkit = new Toolkit(); string text = ""; if (toolkit.OpenInputFile(pdfPath) == 0) { int pageCount = toolkit.GetPageCount(); for (int i = 1; i <= pageCount; i++) { text += toolkit.GetTextFromPage(i) + "\n"; } toolkit.CloseInputFile(); } return text; } using ActivePDF.Toolkit; public string ExtractText(string pdfPath) { Toolkit toolkit = new Toolkit(); string text = ""; if (toolkit.OpenInputFile(pdfPath) == 0) { int pageCount = toolkit.GetPageCount(); for (int i = 1; i <= pageCount; i++) { text += toolkit.GetTextFromPage(i) + "\n"; } toolkit.CloseInputFile(); } return text; } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; public string ExtractText(string pdfPath) { using var pdf = PdfDocument.FromFile(pdfPath); return pdf.ExtractAllText(); } using IronPdf; public string ExtractText(string pdfPath) { using var pdf = PdfDocument.FromFile(pdfPath); return pdf.ExtractAllText(); } $vbLabelText $csharpLabel IronPDFの実装は、複数行のテキスト抽出を単一のメソッド呼び出しに削減します。 透かしの追加 ActivePDFの実装:。 using ActivePDF.Toolkit; public void AddWatermark(string inputPath, string outputPath, string watermarkText) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenInputFile(inputPath) == 0) { int pageCount = toolkit.GetPageCount(); for (int i = 1; i <= pageCount; i++) { toolkit.SetPage(i); toolkit.AddWatermark(watermarkText, 45, 0.5f); } toolkit.SaveAs(outputPath); toolkit.CloseInputFile(); } } using ActivePDF.Toolkit; public void AddWatermark(string inputPath, string outputPath, string watermarkText) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenInputFile(inputPath) == 0) { int pageCount = toolkit.GetPageCount(); for (int i = 1; i <= pageCount; i++) { toolkit.SetPage(i); toolkit.AddWatermark(watermarkText, 45, 0.5f); } toolkit.SaveAs(outputPath); toolkit.CloseInputFile(); } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; public void AddWatermark(string inputPath, string outputPath, string watermarkText) { using var pdf = PdfDocument.FromFile(inputPath); pdf.ApplyWatermark( $"<h1 style='color:lightgray;font-size:72px;'>{watermarkText}</h1>", rotation: 45, opacity: 50); pdf.SaveAs(outputPath); } using IronPdf; public void AddWatermark(string inputPath, string outputPath, string watermarkText) { using var pdf = PdfDocument.FromFile(inputPath); pdf.ApplyWatermark( $"<h1 style='color:lightgray;font-size:72px;'>{watermarkText}</h1>", rotation: 45, opacity: 50); pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel IronPDFのHTMLベースの透かしはCSSスタイリングを可能にし、ページごとの反復作業なしにデザインを完全にコントロールします。 .NETコアの統合 最新のウェブアプリケーションはIronPDFのすっきりとした統合パターンから大きな恩恵を受けています。 ActivePDFパターン: [HttpPost] public IActionResult GeneratePdf([FromBody] ReportRequest request) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenOutputFile("temp.pdf") == 0) { toolkit.AddHTML(request.Html); toolkit.CloseOutputFile(); byte[] bytes = System.IO.File.ReadAllBytes("temp.pdf"); return File(bytes, "application/pdf", "report.pdf"); } return BadRequest("PDF generation failed"); } [HttpPost] public IActionResult GeneratePdf([FromBody] ReportRequest request) { Toolkit toolkit = new Toolkit(); if (toolkit.OpenOutputFile("temp.pdf") == 0) { toolkit.AddHTML(request.Html); toolkit.CloseOutputFile(); byte[] bytes = System.IO.File.ReadAllBytes("temp.pdf"); return File(bytes, "application/pdf", "report.pdf"); } return BadRequest("PDF generation failed"); } $vbLabelText $csharpLabel IronPDFパターン: [HttpPost] public IActionResult GeneratePdf([FromBody] ReportRequest request) { var renderer = new ChromePdfRenderer(); using var pdf = renderer.RenderHtmlAsPdf(request.Html); return File(pdf.BinaryData, "application/pdf", "report.pdf"); } [HttpPost] public IActionResult GeneratePdf([FromBody] ReportRequest request) { var renderer = new ChromePdfRenderer(); using var pdf = renderer.RenderHtmlAsPdf(request.Html); return File(pdf.BinaryData, "application/pdf", "report.pdf"); } $vbLabelText $csharpLabel IronPDFは一時ファイルの必要性をなくし、PDFバイナリデータをメモリから直接返します。 ウェブ アプリケーションの非同期サポート ActivePDFはネイティブの非同期サポートがありません。 IronPdfはスケーラブルなWebアプリケーションに不可欠な完全な非同期/待機機能を提供します: using IronPdf; public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); using var pdf = await renderer.RenderHtmlAsPdfAsync(html); return pdf.BinaryData; } using IronPdf; public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); using var pdf = await renderer.RenderHtmlAsPdfAsync(html); return pdf.BinaryData; } $vbLabelText $csharpLabel 依存性注入の構成 .NET 6+アプリケーションでは、IronPDFサービスをDIコンテナに登録してください: // Program.cs (.NET 6+) builder.Services.AddSingleton<ChromePdfRenderer>(); // Service wrapper public interface IPdfService { Task<byte[]> GeneratePdfAsync(string html); Task<byte[]> GeneratePdfFromUrlAsync(string url); } public class IronPdfService : IPdfService { private readonly ChromePdfRenderer _renderer; public IronPdfService() { _renderer = new ChromePdfRenderer(); _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; } public async Task<byte[]> GeneratePdfAsync(string html) { using var pdf = await _renderer.RenderHtmlAsPdfAsync(html); return pdf.BinaryData; } public async Task<byte[]> GeneratePdfFromUrlAsync(string url) { using var pdf = await _renderer.RenderUrlAsPdfAsync(url); return pdf.BinaryData; } } // Program.cs (.NET 6+) builder.Services.AddSingleton<ChromePdfRenderer>(); // Service wrapper public interface IPdfService { Task<byte[]> GeneratePdfAsync(string html); Task<byte[]> GeneratePdfFromUrlAsync(string url); } public class IronPdfService : IPdfService { private readonly ChromePdfRenderer _renderer; public IronPdfService() { _renderer = new ChromePdfRenderer(); _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; } public async Task<byte[]> GeneratePdfAsync(string html) { using var pdf = await _renderer.RenderHtmlAsPdfAsync(html); return pdf.BinaryData; } public async Task<byte[]> GeneratePdfFromUrlAsync(string url) { using var pdf = await _renderer.RenderUrlAsPdfAsync(url); return pdf.BinaryData; } } $vbLabelText $csharpLabel エラー処理の移行 ActivePDFは、ルックアップテーブルを必要とする整数のリターンコードを使用します。 IronPDFは最新の例外処理を使用します: ActivePDFのエラー処理 Toolkit toolkit = new Toolkit(); int result = toolkit.OpenOutputFile(path); if (result != 0) { // Error - need to look up error code Console.WriteLine($"Error code: {result}"); } Toolkit toolkit = new Toolkit(); int result = toolkit.OpenOutputFile(path); if (result != 0) { // Error - need to look up error code Console.WriteLine($"Error code: {result}"); } $vbLabelText $csharpLabel IronPDFのエラーハンドリング:。 try { var renderer = new ChromePdfRenderer(); using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(path); } catch (IronPdf.Exceptions.IronPdfProductException ex) { Console.WriteLine($"IronPDF Error: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"General Error: {ex.Message}"); } try { var renderer = new ChromePdfRenderer(); using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(path); } catch (IronPdf.Exceptions.IronPdfProductException ex) { Console.WriteLine($"IronPDF Error: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"General Error: {ex.Message}"); } $vbLabelText $csharpLabel パフォーマンス最適化のヒント レンダラー インスタンスの再利用 新しいChromePdfRendererを作成するには、初期化のオーバーヘッドがあります。 バッチ処理では、単一のインスタンスを再利用します: var renderer = new ChromePdfRenderer(); foreach (var html in htmlList) { using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs($"output_{i}.pdf"); } var renderer = new ChromePdfRenderer(); foreach (var html in htmlList) { using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs($"output_{i}.pdf"); } $vbLabelText $csharpLabel Webアプリケーションで非同期を使用する .NET Coreアプリケーションでは、非同期PDF生成によりスループットが向上します: public async Task<IActionResult> GenerateReport() { var renderer = new ChromePdfRenderer(); using var pdf = await renderer.RenderHtmlAsPdfAsync(html); return File(pdf.BinaryData, "application/pdf"); } public async Task<IActionResult> GenerateReport() { var renderer = new ChromePdfRenderer(); using var pdf = await renderer.RenderHtmlAsPdfAsync(html); return File(pdf.BinaryData, "application/pdf"); } $vbLabelText $csharpLabel 適切なリソースの処分 適切なクリーンアップを確実にするために、常にusing文を使用してください: using var pdf = renderer.RenderHtmlAsPdf(html); return pdf.BinaryData; using var pdf = renderer.RenderHtmlAsPdf(html); return pdf.BinaryData; $vbLabelText $csharpLabel 画像圧縮 画像圧縮で出力ファイルサイズを削減する: using var pdf = renderer.RenderHtmlAsPdf(html); pdf.CompressImages(85); // 85% quality pdf.SaveAs("compressed.pdf"); using var pdf = renderer.RenderHtmlAsPdf(html); pdf.CompressImages(85); // 85% quality pdf.SaveAs("compressed.pdf"); $vbLabelText $csharpLabel よくある移行の問題のトラブルシューティング 課題ページサイズの違い ActivePDFはポイント(612x792 = Letter)を使用し、IronPdfは列挙またはミリメートルを使用します: // ActivePDF: Points toolkit.SetPageSize(612, 792); // IronPDF: Use enum renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter; // Or custom in mm: renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4); // ActivePDF: Points toolkit.SetPageSize(612, 792); // IronPDF: Use enum renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter; // Or custom in mm: renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4); $vbLabelText $csharpLabel 問題CloseOutputFile と同等のものがありません IronPDFは明示的なファイルハンドル管理のない最新のパラダイムを使用しています: // ActivePDF toolkit.OpenOutputFile(path); toolkit.AddHTML(html); toolkit.CloseOutputFile(); // Required! //IronPDF- no open/close needed using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(path); // 'using' handles cleanup // ActivePDF toolkit.OpenOutputFile(path); toolkit.AddHTML(html); toolkit.CloseOutputFile(); // Required! //IronPDF- no open/close needed using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(path); // 'using' handles cleanup $vbLabelText $csharpLabel 問題です:PDFが真っ白にレンダリングされる JavaScriptに依存するコンテンツが空白でレンダリングされる場合は、レンダリング遅延を設定してください: var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Or wait for element: renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded"); var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Or wait for element: renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded"); $vbLabelText $csharpLabel 課題CSS/画像が読み込まれない 相対パス解決用にベースURLを設定します: renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/"); renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/"); $vbLabelText $csharpLabel 移行後のチェックリスト コードの移行が完了したら、以下を確認してください: 既存のユニットテストと統合テストをすべて実行する PDF出力を以前のバージョンと視覚的に比較する ステージング環境ですべてのPDFワークフローをテストする ライセンスが正しく機能していることを確認します ( IronPdf.License.IsLicensed ) 以前の実装と比較したパフォーマンスのベンチマーク 古いActivePDFインストールファイルとDLL参照を削除します CI/CDパイプラインの依存関係を更新する 開発チーム向けにIronPDFパターンを文書化する PDFソリューションの将来性 .NET 10が目前に迫り、C# 14が新しい言語機能を導入する中、開発が活発な.NET PDFライブラリを選択することで、アプリケーションが進化するランタイム機能と互換性を保つことができます。 IronPDFは最新の.NETバージョンをサポートすることに専念しており、プロジェクトが2025年、2026年に拡張されたとしても、移行への投資は報われます。 その他のリソース IronPDFドキュメント. HTMLからPDFへのチュートリアル。 APIリファレンス. NuGetパッケージ。 ライセンスオプション。 ActivePDFからIronPDFへの移行は、よりクリーンなAPI、より優れた.NET統合、積極的な長期サポートによってPDF生成インフラを近代化します。 移行への投資は、コードの保守性の向上、非同期機能、そしてPDFライブラリの継続的な開発への信頼という形で報われます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む 公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む 公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む Haukcode.DinkToPdfからIronPdfへの移行Foxit PDF SDKからIronPdfへの移...
公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む
公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む
公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む