移行ガイド Adobe PDF Library SDKからIronPdfへの移行方法 カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Datalogics から入手できるAdobe PDF Library SDKは、高レベルの機能を備えた本物の Adobe PDF エンジンを提供します。 しかし、ライセンスコストが高く、ネイティブ SDK の統合が複雑で、API 設計が低レベルであるため、多くの開発チームにとって現実的ではありません。 このガイドでは、Adobe PDF Library SDK からIronPDF(.NET Framework 4.6.2 から .NET 9 およびそれ以降のバージョンをサポートする最新のコスト効率の高い .NET PDF ライブラリ) への移行パスを段階的に説明します。 Adobe PDF Library SDKからの移行を検討する理由は何ですか? Adobe PDF Library SDK は純正の Adobe PDF エンジンを提供しますが、開発チームが PDF の生成と操作のニーズに対応する代替手段を検討する要因はいくつかあります。 高額なライセンス費用 Adobe PDF Library SDK は、通常、年間 10,000 ドルから 50,000 ドル以上のエンタープライズ価格レベルで運営されます。 このコスト構造により、中小企業、スタートアップ企業、個人開発者、および Adobe エンジンの完全な機能が必要ないプロジェクトにとって SDK は実用的ではありません。 複雑なネイティブ SDK の統合 Adobe PDF ライブラリ SDK は、プラットフォーム固有のバイナリを必要とするネイティブ C++ コード上に構築されています。 開発者は、メモリを慎重に管理し、明示的な初期化と終了のパターンを処理し、複雑なセットアップ手順を実行する必要があります。 このため、開発のオーバーヘッドが大きくなり、CI/CDパイプラインが複雑になります。 低レベル API デザイン Adobe PDF Library SDK を使用して PDF を作成するには、ページ、コンテンツ ストリーム、テキスト ラン、フォントをプログラムで構築する必要があります。 HTMLコンテンツのレンダリングのような単純な作業は、座標計算、フォントの埋め込み、手作業によるコンテンツ要素の管理などを含む多段階の作業になります。 ライブラリのライフサイクル管理オーバーヘッド すべての操作は、Library.Initialize()とLibrary.Terminate()ブロックでコードをラップし、COMオブジェクトを注意深く処理する必要があります。 クリーンアップの手順を忘れると、リソースリークやアプリケーションの不安定につながります。 典型的なプロジェクトのためのやりすぎ 主にHTMLからPDFへの変換、基本的な文書操作、レポート生成を必要とするアプリケーションでは、Adobe PDFエンジンのフルバージョンは、よりシンプルなソリューションで同等の結果が得られるにもかかわらず、かなり過剰なエンジニアリングを意味します。 Adobe PDF Library SDKとIronPDFの比較:主な違い これらのライブラリ間の基本的なアーキテクチャの違いを理解することは、効果的な移行戦略を計画するのに役立ちます。 アスペクト Adobe PDF Library SDK IronPDF 価格について 万ドル~5万ドル/年以上/企業 手頃な価格の開発者向けライセンス インストール。 ネイティブDLL、プラットフォーム固有 シンプルなNuGetパッケージ。 ドキュメント作成 低レベルのページ/コンテンツ構築 HTML/CSSレンダリング 初期化。 Library.Initialize()/Terminate()は必須です。 自動翻訳 座標システム ポストスクリプトポイント、左下原点 CSSベースのレイアウト フォントの扱い 手動での埋め込みが必要 自動翻訳 メモリ管理 COM オブジェクトの手動廃棄 標準IDisposableパターン 非同期サポートについて 不可 完全なasync/awaitのサポート 移行前の準備 前提条件 移行を開始する前に、お使いの環境がこれらの要件を満たしていることを確認してください: .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9 Visual Studio 2019+またはJetBrains Rider NuGetパッケージマネージャへのアクセス IronPDFライセンスキー (ironpdf.com にて無料トライアル可能) アドビ PDF ライブラリ SDK の使用状況を監査する ソ リ ュ ーシ ョ ンデ ィ レ ク ト リ 内で以下の コ マ ン ド を実行 し て、 すべてのAdobe PDF Library SDK参照を特定 し ます: grep -r "using Datalogics" --include="*.cs" . grep -r "Adobe.PDF.Library" --include="*.csproj" . grep -r "Library.Initialize\|Library.Terminate" --include="*.cs" . grep -r "using Datalogics" --include="*.cs" . grep -r "Adobe.PDF.Library" --include="*.csproj" . grep -r "Library.Initialize\|Library.Terminate" --include="*.cs" . SHELL 予想される画期的な変更 カテゴリ Adobe PDF Library SDK IronPDF 移行作業 初期設定 Library.Initialize() / Terminate(). 自動翻訳 ライフサイクルコードの削除 ドキュメントの作成 new Document() とページ構築 ChromePdfRenderer HTMLレンダリングを使用 座標系 ポストスクリプトポイント、左下原点 CSSベースのレイアウト HTML/CSSを使用 フォントの取り扱い 手動によるフォントの作成と埋め込み 自動翻訳 フォントコードの削除 メモリ管理 COM オブジェクトの手動廃棄 標準IDisposable usingステートメントを使用してください。 ページ構成 CreatePage()、AddContent()。 HTMLからの自動翻訳 大幅に簡素化 ステップごとの移行プロセス ステップ 1: NuGet パッケージを更新する Adobe PDF Library SDKパッケージを削除し、IronPDFをインストールしてください: # Remove Adobe PDF Library dotnet remove package Adobe.PDF.Library.LM.NET # Install IronPDF dotnet add package IronPdf # Remove Adobe PDF Library dotnet remove package Adobe.PDF.Library.LM.NET # Install IronPDF dotnet add package IronPdf SHELL ステップ 2: ライセンス キーの設定 AdobeのライセンスをIronPDFのコードベースのライセンスキーに置き換えてください: // Replace Adobe's Library.LicenseKey withIronPDFlicense // Add at application startup, before anyIronPDFoperations IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Verify license status bool isLicensed = IronPdf.License.IsLicensed; // Replace Adobe's Library.LicenseKey withIronPDFlicense // Add at application startup, before anyIronPDFoperations IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Verify license status bool isLicensed = IronPdf.License.IsLicensed; $vbLabelText $csharpLabel ステップ 3: 名前空間参照の更新 ソリューション全体でグローバルな検索と置換を実行してください: 検索 置換対象 Datalogics.PDFLを使用しています。|IronPdf;`を使用しています。 Datalogics.PDFL.Documentを使用しています。 IronPdf;を使用しています。 Datalogics.PDFL.Pageを使用しています。 IronPdf;を使用しています。 Datalogics.PDFL.Contentを使用しています。 IronPdf;を使用しています。 ステップ 4: ライブラリ ライフサイクル コードを削除する 最も重要な簡素化のひとつは、初期化パターンと終了パターンの削除です: //Adobe PDF Library SDK- REMOVE THIS PATTERN Library.Initialize(); try { // PDF operations } finally { Library.Terminate(); // Must always terminate } //IronPDF- Just use directly var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); //Adobe PDF Library SDK- REMOVE THIS PATTERN Library.Initialize(); try { // PDF operations } finally { Library.Terminate(); // Must always terminate } //IronPDF- Just use directly var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 完全な API 移行のリファレンス ライブラリのライフサイクルメソッド アドビ方式 IronPDF 同等物 ノート Library.Initialize()` 不要 自動初期化 Library.Terminate() 不要 自動クリーンアップ Library.LicenseKey = "KEY". IronPdf.License.LicenseKey = "KEY". 起動時に一度だけ設定 using (Library lib = new Library()). 不要 ラッパー不要 ドキュメント作成方法 アドビ方式 IronPDF メソッド ノート new Document(). new ChromePdfRenderer(). HTML用レンダラ new Document(path) とします。 PdfDocument.FromFile(パス)。 既存のPDFを読み込む. doc.CreatePage(index, rect). HTMLからの自動翻訳 自動作成されるページ doc.Save(SaveFlags.Full, path). pdf.SaveAs(path)のようにします。 ファイルに保存 doc.NumPages pdf.PageCount ページ数プロパティ doc.GetPage(インデックス) pdf.Pages[index] アクセスページ doc.InsertPages(...)を使用してください。 PdfDocument.Merge()を使用してください。 ドキュメントをマージする. コンテンツ作成(大きなパラダイムシフト) Adobe PDF Library SDKは、低レベルのコンテンツ構築を必要とします。 IronPDFはHTML/CSSを使用しています: アドビ方式 IronPDF メソッド ノート new Text(). HTMLの<p>、<h1>などを使用してください。 HTMLタグ text.AddRun(textRun)を実行します。 HTMLを使用 HTML経由のテキスト new TextRun(text, font, size, point). CSSスタイリング CSSによるスタイル new Font(名前, flags). CSS font-family CSSによるフォント new Image(path)</code>|HTML`タグ HTML経由の画像 content.AddElement(...)を追加します。 HTMLコンテンツ HTMLで構築 page.UpdateContent()を実行します。 不要 自動翻訳 電子透かしとセキュリティ手法 アドビ方式 IronPDF メソッド ノート new Watermark(doc, textParams, wmParams). pdf.ApplyWatermark(html). HTML透かし WatermarkParams.Opacity|CSS不透明度` CSSによる不透明度 new EncryptionHandler(user, owner, perms). pdf.SecuritySettings セキュリティ設定 PermissionFlags.PrintDoc AllowUserPrinting 印刷許可 テキスト抽出 アドビ方式 IronPDF メソッド ノート new WordFinder(doc, config). pdf.ExtractAllText()を使用してください。 簡単な抽出 wordFinder.GetWordList()。 pdf.Pages[i].Text。 ページごとのテキスト 複雑な単語/文字の反復 単一メソッド呼び出し もっとシンプルに コード移行の例 HTMLからPDFへの変換 最も劇的な単純化は、コンテンツをPDFに変換するときに発生します。 Adobe PDF Library SDKでは、手動によるページ構築、フォント埋め込み、座標位置決めが必要です。 アドビ PDF ライブラリ SDK の実装:。 // Adobe PDF Library SDK using Datalogics.PDFL; using System; class AdobeHtmlToPdf { static void Main() { using (Library lib = new Library()) { // Adobe PDF Library requires complex setup with HTML conversion parameters HTMLConversionParameters htmlParams = new HTMLConversionParameters(); htmlParams.PaperSize = PaperSize.Letter; htmlParams.Orientation = Orientation.Portrait; string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; // Convert HTML to PDF Document doc = Document.CreateFromHTML(htmlContent, htmlParams); doc.Save(SaveFlags.Full, "output.pdf"); doc.Dispose(); } } } // Adobe PDF Library SDK using Datalogics.PDFL; using System; class AdobeHtmlToPdf { static void Main() { using (Library lib = new Library()) { // Adobe PDF Library requires complex setup with HTML conversion parameters HTMLConversionParameters htmlParams = new HTMLConversionParameters(); htmlParams.PaperSize = PaperSize.Letter; htmlParams.Orientation = Orientation.Portrait; string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; // Convert HTML to PDF Document doc = Document.CreateFromHTML(htmlContent, htmlParams); doc.Save(SaveFlags.Full, "output.pdf"); doc.Dispose(); } } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using System; class IronPdfHtmlToPdf { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; // Convert HTML to PDF with simple API var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class IronPdfHtmlToPdf { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "<html><body><h1>Hello World</h1></body></html>"; // Convert HTML to PDF with simple API var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel IronPDFはライブラリライフサイクルラッパー、変換パラメータオブジェクト、明示的な廃棄を排除します。 ChromePdfRendererは、ピクセルパーフェクトなCSSとJavaScriptをサポートするためにChromiumベースのエンジンを使用しています。 高度なシナリオについては、HTML to PDF documentationを参照してください。 複数のPDFをマージする PDFマージは、APIの複雑さの違いを明確に示します。 アドビ PDF ライブラリ SDK の実装:。 // Adobe PDF Library SDK using Datalogics.PDFL; using System; class AdobeMergePdfs { static void Main() { using (Library lib = new Library()) { // Open first PDF document Document doc1 = new Document("document1.pdf"); Document doc2 = new Document("document2.pdf"); // Insert pages from second document into first PageInsertParams insertParams = new PageInsertParams(); insertParams.InsertFlags = PageInsertFlags.None; for (int i = 0; i < doc2.NumPages; i++) { Page page = doc2.GetPage(i); doc1.InsertPage(doc1.NumPages - 1, page, insertParams); } doc1.Save(SaveFlags.Full, "merged.pdf"); doc1.Dispose(); doc2.Dispose(); } } } // Adobe PDF Library SDK using Datalogics.PDFL; using System; class AdobeMergePdfs { static void Main() { using (Library lib = new Library()) { // Open first PDF document Document doc1 = new Document("document1.pdf"); Document doc2 = new Document("document2.pdf"); // Insert pages from second document into first PageInsertParams insertParams = new PageInsertParams(); insertParams.InsertFlags = PageInsertFlags.None; for (int i = 0; i < doc2.NumPages; i++) { Page page = doc2.GetPage(i); doc1.InsertPage(doc1.NumPages - 1, page, insertParams); } doc1.Save(SaveFlags.Full, "merged.pdf"); doc1.Dispose(); doc2.Dispose(); } } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using System; class IronPdfMergePdfs { static void Main() { // Load PDF documents var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); // Merge PDFs with simple method var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class IronPdfMergePdfs { static void Main() { // Load PDF documents var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); // Merge PDFs with simple method var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } $vbLabelText $csharpLabel アドビのアプローチでは、挿入パラメータを使用してページごとに反復する必要があります。 IronPDFは複数のドキュメントを受け入れる単一のMergeメソッドを提供します。 透かしの追加 透かしは、IronPDFがどのようにHTML/CSSを活用して柔軟なスタイリングを実現しているかを示しています。 アドビ PDF ライブラリ SDK の実装:。 // Adobe PDF Library SDK using Datalogics.PDFL; using System; class AdobeAddWatermark { static void Main() { using (Library lib = new Library()) { Document doc = new Document("input.pdf"); // Create watermark with complex API WatermarkParams watermarkParams = new WatermarkParams(); watermarkParams.Opacity = 0.5; watermarkParams.Rotation = 45.0; watermarkParams.VerticalAlignment = WatermarkVerticalAlignment.Center; watermarkParams.HorizontalAlignment = WatermarkHorizontalAlignment.Center; WatermarkTextParams textParams = new WatermarkTextParams(); textParams.Text = "CONFIDENTIAL"; Watermark watermark = new Watermark(doc, textParams, watermarkParams); doc.Save(SaveFlags.Full, "watermarked.pdf"); doc.Dispose(); } } } // Adobe PDF Library SDK using Datalogics.PDFL; using System; class AdobeAddWatermark { static void Main() { using (Library lib = new Library()) { Document doc = new Document("input.pdf"); // Create watermark with complex API WatermarkParams watermarkParams = new WatermarkParams(); watermarkParams.Opacity = 0.5; watermarkParams.Rotation = 45.0; watermarkParams.VerticalAlignment = WatermarkVerticalAlignment.Center; watermarkParams.HorizontalAlignment = WatermarkHorizontalAlignment.Center; WatermarkTextParams textParams = new WatermarkTextParams(); textParams.Text = "CONFIDENTIAL"; Watermark watermark = new Watermark(doc, textParams, watermarkParams); doc.Save(SaveFlags.Full, "watermarked.pdf"); doc.Dispose(); } } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class IronPdfAddWatermark { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); // Apply text watermark with simple API pdf.ApplyWatermark("<h1 style='color:red; opacity:0.5;'>CONFIDENTIAL</h1>", rotation: 45, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center); pdf.SaveAs("watermarked.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class IronPdfAddWatermark { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); // Apply text watermark with simple API pdf.ApplyWatermark("<h1 style='color:red; opacity:0.5;'>CONFIDENTIAL</h1>", rotation: 45, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center); pdf.SaveAs("watermarked.pdf"); } } $vbLabelText $csharpLabel IronPdfのHTMLベースの透かしは、CSSスタイリングによる完全なデザインコントロールを提供し、個別のパラメーターオブジェクトを必要としません。 パスワード保護と暗号化 アドビ PDF ライブラリ SDK の実装:。 using Datalogics.PDFL; public void ProtectPdf(string inputPath, string outputPath, string password) { Library.Initialize(); try { using (Document doc = new Document(inputPath)) { PermissionFlags permissions = PermissionFlags.PrintDoc | PermissionFlags.PrintFidelity; EncryptionHandler encHandler = new EncryptionHandler( password, // User password password, // Owner password permissions, EncryptionMethod.AES256); doc.SetEncryptionHandler(encHandler); doc.Save(SaveFlags.Full | SaveFlags.Encrypted, outputPath); } } finally { Library.Terminate(); } } using Datalogics.PDFL; public void ProtectPdf(string inputPath, string outputPath, string password) { Library.Initialize(); try { using (Document doc = new Document(inputPath)) { PermissionFlags permissions = PermissionFlags.PrintDoc | PermissionFlags.PrintFidelity; EncryptionHandler encHandler = new EncryptionHandler( password, // User password password, // Owner password permissions, EncryptionMethod.AES256); doc.SetEncryptionHandler(encHandler); doc.Save(SaveFlags.Full | SaveFlags.Encrypted, outputPath); } } finally { Library.Terminate(); } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; public void ProtectPdf(string inputPath, string outputPath, string password) { using var pdf = PdfDocument.FromFile(inputPath); pdf.SecuritySettings.UserPassword = password; pdf.SecuritySettings.OwnerPassword = 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.UserPassword = password; pdf.SecuritySettings.OwnerPassword = password; pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel IronPDFはビット単位のパーミッションフラグや暗号化ハンドラオブジェクトの代わりに、強く型付けされたプロパティを使用します。 テキスト抽出 アドビ PDF ライブラリ SDK の実装:。 using Datalogics.PDFL; public string ExtractText(string pdfPath) { string extractedText = ""; Library.Initialize(); try { using (Document doc = new Document(pdfPath)) { WordFinderConfig config = new WordFinderConfig(); config.IgnoreCharGaps = true; for (int i = 0; i < doc.NumPages; i++) { using (WordFinder wordFinder = new WordFinder(doc, i, config)) { IList<Word> words = wordFinder.GetWordList(); foreach (Word word in words) { extractedText += word.Text + " "; } extractedText += "\n"; } } } } finally { Library.Terminate(); } return extractedText; } using Datalogics.PDFL; public string ExtractText(string pdfPath) { string extractedText = ""; Library.Initialize(); try { using (Document doc = new Document(pdfPath)) { WordFinderConfig config = new WordFinderConfig(); config.IgnoreCharGaps = true; for (int i = 0; i < doc.NumPages; i++) { using (WordFinder wordFinder = new WordFinder(doc, i, config)) { IList<Word> words = wordFinder.GetWordList(); foreach (Word word in words) { extractedText += word.Text + " "; } extractedText += "\n"; } } } } finally { Library.Terminate(); } return extractedText; } $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 Adobeの単語ごとの繰り返しは、IronPDFでは単一のメソッド呼び出しになります。 ヘッダーとフッター アドビ PDF ライブラリ SDK の実装:。 using Datalogics.PDFL; public void AddHeaderFooter(string inputPath, string outputPath) { Library.Initialize(); try { using (Document doc = new Document(inputPath)) { Font font = new Font("Helvetica", FontCreateFlags.None); for (int i = 0; i < doc.NumPages; i++) { using (Page page = doc.GetPage(i)) { Content content = page.Content; // Add header Text header = new Text(); header.AddRun(new TextRun("Document Header", font, 10, new Point(72, page.MediaBox.Top - 36))); content.AddElement(header); // Add footer with page number Text footer = new Text(); footer.AddRun(new TextRun($"Page {i + 1} of {doc.NumPages}", font, 10, new Point(72, 36))); content.AddElement(footer); page.UpdateContent(); } } doc.Save(SaveFlags.Full, outputPath); } } finally { Library.Terminate(); } } using Datalogics.PDFL; public void AddHeaderFooter(string inputPath, string outputPath) { Library.Initialize(); try { using (Document doc = new Document(inputPath)) { Font font = new Font("Helvetica", FontCreateFlags.None); for (int i = 0; i < doc.NumPages; i++) { using (Page page = doc.GetPage(i)) { Content content = page.Content; // Add header Text header = new Text(); header.AddRun(new TextRun("Document Header", font, 10, new Point(72, page.MediaBox.Top - 36))); content.AddElement(header); // Add footer with page number Text footer = new Text(); footer.AddRun(new TextRun($"Page {i + 1} of {doc.NumPages}", font, 10, new Point(72, 36))); content.AddElement(footer); page.UpdateContent(); } } doc.Save(SaveFlags.Full, outputPath); } } finally { Library.Terminate(); } } $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; public void CreatePdfWithHeaderFooter(string html, string outputPath) { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader = new TextHeaderFooter { CenterText = "Document Header", FontSize = 10, FontFamily = "Helvetica" }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}", FontSize = 10, FontFamily = "Helvetica" }; 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 = "Document Header", FontSize = 10, FontFamily = "Helvetica" }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}", FontSize = 10, FontFamily = "Helvetica" }; using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel IronPDFは自動的にページの反復を処理し、{page}や{total-pages}のようなプレースホルダートークンをサポートします。 より高度なレイアウトについては、headers and footers documentationを参照してください。 URLからPDFへの変換 Adobe PDF Library SDKには、URLレンダリング機能が組み込まれていません。 IronPDFはネイティブサポートを提供します: using IronPdf; public void ConvertUrlToPdf(string url, string outputPath) { var renderer = new ChromePdfRenderer(); using var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs(outputPath); } using IronPdf; public void ConvertUrlToPdf(string url, string outputPath) { var renderer = new ChromePdfRenderer(); using var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel 完全なURL変換オプションについては、URL to PDF documentationを参照してください。 .NETコアの統合 Adobe PDF Library SDKの静的初期化パターンでは、依存性注入との摩擦が生じます。 IronPdfは最新の.NETアーキテクチャに自然に統合されます。 Adobeパターン(DIの問題点):。 public class AdobePdfService { public byte[] Generate(string content) { Library.Initialize(); try { //複雑な文書construction... return bytes; } finally { Library.Terminate(); } } } public class AdobePdfService { public byte[] Generate(string content) { Library.Initialize(); try { //複雑な文書construction... return bytes; } finally { Library.Terminate(); } } } $vbLabelText $csharpLabel IronPDFパターン(DIフレンドリー):。 public interface IPdfService { Task<byte[]> GeneratePdfAsync(string html); } 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; } } // Register in Program.cs (.NET 6+): builder.Services.AddSingleton<IPdfService, IronPdfService>(); public interface IPdfService { Task<byte[]> GeneratePdfAsync(string html); } 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; } } // Register in Program.cs (.NET 6+): builder.Services.AddSingleton<IPdfService, IronPdfService>(); $vbLabelText $csharpLabel 非同期サポート Adobe PDF Library SDK は非同期操作をサポートしていません。 IronPdfはスケーラブルなWebアプリケーションに不可欠な完全な非同期/待機機能を提供します: 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 パフォーマンスの最適化 メモリ使用量の比較 シナリオ Adobe PDF Library SDK IronPDF ノート シンプルなPDF ~100 MB ~50 MB Adobe ロードフルエンジン 複雑な文書 ~200 MB ~80 MB IronPDFをより効率的に バッチ(100 PDF) 高(ネイティブメモリ) ~100 MB IronPDFの管理向上 最適化のヒント 再利用レンダラーインスタンス // Good: Reuse renderer for batch operations var renderer = new ChromePdfRenderer(); foreach (var html in htmlList) { using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs($"output_{i}.pdf"); } // Good: Reuse renderer for batch operations var renderer = new ChromePdfRenderer(); foreach (var html in htmlList) { using var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs($"output_{i}.pdf"); } $vbLabelText $csharpLabel Webアプリケーションで非同期を使用する: 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 よくある移行の問題のトラブルシューティング 問題座標ベースのポジショニングが機能しない AdobeはPostScriptの点座標を使用しています。 IronPDFはCSSポジショニングを使用しています: // Adobe: Point-based new TextRun("Hello", font, 12, new Point(100, 700)); // IronPDF: CSS-based string html = "<p style='position:absolute; left:100px; top:92px;'>Hello</p>"; // Adobe: Point-based new TextRun("Hello", font, 12, new Point(100, 700)); // IronPDF: CSS-based string html = "<p style='position:absolute; left:100px; top:92px;'>Hello</p>"; $vbLabelText $csharpLabel 課題ページサイズの違い アドビはポストスクリプトポイントを使用しています。 IronPDFは列挙型またはカスタムディメンションを使用します: // Adobe: Points Rect(0, 0, 612, 792) // Letter // IronPDF: Enum or custom renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter; // Or custom: renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11); // Adobe: Points Rect(0, 0, 612, 792) // Letter // IronPDF: Enum or custom renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter; // Or custom: renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11); $vbLabelText $csharpLabel 問題です:フォントが見つかりません Adobeでは、フォントの埋め込みを手動で行う必要があります。 IronPDFは自動的にフォントを処理します: // IronPDF: Use web fonts if needed string html = @" <style> @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); body { font-family: 'Roboto', sans-serif; } </style>"; // IronPDF: Use web fonts if needed string html = @" <style> @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); body { font-family: 'Roboto', sans-serif; } </style>"; $vbLabelText $csharpLabel 問題です:SaveFlags が使用できません Adobeは、セーブフラグの組み合わせを使用します。 IronPDFは直接保存を使用します: // Adobe doc.Save(SaveFlags.Full | SaveFlags.Incremental, path); //IronPDF- full save is default pdf.SaveAs(path); // Adobe doc.Save(SaveFlags.Full | SaveFlags.Incremental, path); //IronPDF- full save is default pdf.SaveAs(path); $vbLabelText $csharpLabel 移行後のチェックリスト コードの移行が完了したら、以下を確認してください: 既存のユニットテストと統合テストをすべて実行する PDF出力を以前のバージョンと視覚的に比較する ステージング環境ですべてのPDFワークフローをテストする ライセンスが正しく機能していることを確認します ( IronPdf.License.IsLicensed ) 以前の実装と比較したパフォーマンスベンチマーク Adobeライセンス設定を削除する CI/CDパイプラインの依存関係を更新する プロジェクトからすべてのAdobe PDFライブラリDLLを削除します 開発チーム向けに新しいパターンを文書化する PDFインフラストラクチャの将来性を確保する .NET 10が近づいており、C# 14が新しい言語機能を導入しているため、開発が活発な.NET PDFライブラリを選択することで、進化するランタイム機能との互換性を確保できます。 IronPDFは最新の.NETバージョンをサポートすることに専念しており、プロジェクトが2025年、2026年に拡張されたとしても、移行への投資は報われます。 その他のリソース IronPDFドキュメント. HTMLからPDFへのチュートリアル。 APIリファレンス. NuGetパッケージ。 ライセンスオプション。 Adobe PDF Library SDK からIronPDFに移行すると、PDF 生成コードベースが大幅に簡素化され、ライセンス コストも大幅に削減されます。 低レベルのページ構築からHTML/CSSレンダリングへの移行により、何百行もの座標計算、フォント管理、ライフサイクル処理コードが不要になります。 最新の.NETアプリケーションを構築するチームにとって、IronPDFは現代の開発ワークフローのために設計された開発者フレンドリーなAPIで同等の機能を提供します。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む Apache PDFBoxからIronPdfへの移行方法Haukcode.DinkToPdfから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む