移行ガイド C#でApryse PDFからIronPDFへ移行する方法 カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Apryse PDF(旧PDFTron)は、包括的な文書処理機能で知られるプレミアムエンタープライズPDF SDKです。 しかし、プレミアム価格モデル(開発者1人あたり年間1,500ドル以上)、複雑な統合要件、C++の遺産は、わかりやすいPDF機能を求める開発チームにとって障壁となります。 この包括的なガイドは、Apryse PDFからIronPDFへのステップバイステップの移行経路を提供します。IronPDFは、最新のC#規約、よりシンプルな統合、1回限りの永久ライセンスを持つ.NETネイティブPDFライブラリです。 なぜApryse PDFから移行するのですか? Apryse PDFは堅牢な機能を提供しますが、開発チームがPDF生成のニーズに対して代替手段を求めるようになるには、いくつかの要因があります。 プレミアム価格とサブスクリプションモデル Apryse PDFは企業顧客をターゲットにしており、中小規模のプロジェクトでは法外な価格設定になる可能性があります: アスペクト Apryse PDF (PDFTron) IronPDF 開始価格 1,500ドル以上/開発者/年(報告済み) 1回749ドル(Lite) ライセンスモデル 年間サブスクリプション 永久ライセンス ビューアライセンス 別途追加費用 該当なし(標準ビューアを使用) サーバーライセンス 要エンタープライズ価格 ライセンス階層に含まれるもの 3年間の総費用 開発者1人あたり4,500ドル以上 749ドル 統合の複雑さ Apryse PDFのC#の伝統は、開発速度に影響を与える複雑さをもたらします: フィーチャー Apryse PDF IronPDF セットアップ。 モジュールパス、外部バイナリ 単一のNuGetパッケージ 初期化。 PDFNet.Initialize()(ライセンス付き 簡単なプロパティの割り当て HTMLレンダリング。 外部html2pdfモジュールが必要です。 内蔵Chromiumエンジン APIスタイル C#の遺産、複雑な 最新のC#規約 依存関係について 複数のDLL、プラットフォーム固有 自己完結型パッケージ いつ移行を考慮すべきか 以下の場合はIronPDFに移行してください:。 主にHTML/URLからPDFへの変換が必要です。 定型文の少ないシンプルなAPIを希望 プレミアム価格は、お客様のユースケースに適していません。 PDFViewCtrlビューアコントロールは必要ありません。 あなたはサブスクリプションよりも一回限りのライセンスを好む 次のような場合は、Apryse PDFをご利用ください。 ネイティブビューアコントロール(PDFViewCtrl)が必要です。 XODまたは独自のフォーマットを多用している。 特定のエンタープライズ機能(高度な再編集など)が必要です。 すでにエンタープライズライセンスを所有している 移行前の準備 前提条件 あなたの環境がこれらの要件を満たしていることを確認してください: .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9 Visual Studio 2019+またはC#拡張機能付きVS Code NuGetパッケージマネージャへのアクセス IronPDFライセンスキー (ironpdf.com にて無料トライアル可能) AuditのApryse PDFの使用方法 ソリューションディレクトリでこれらのコマンドを実行し、すべてのApryse参照を特定します: # Find all pdftron using statements grep -r "using pdftron" --include="*.cs" . # Find PDFNet initialization grep -r "PDFNet.Initialize\|PDFNet.SetResourcesPath" --include="*.cs" . # Find PDFDoc usage grep -r "new PDFDoc\|PDFDoc\." --include="*.cs" . # Find HTML2PDF usage grep -r "HTML2PDF\|InsertFromURL\|InsertFromHtmlString" --include="*.cs" . # Find ElementReader/Writer usage grep -r "ElementReader\|ElementWriter\|ElementBuilder" --include="*.cs" . # Find all pdftron using statements grep -r "using pdftron" --include="*.cs" . # Find PDFNet initialization grep -r "PDFNet.Initialize\|PDFNet.SetResourcesPath" --include="*.cs" . # Find PDFDoc usage grep -r "new PDFDoc\|PDFDoc\." --include="*.cs" . # Find HTML2PDF usage grep -r "HTML2PDF\|InsertFromURL\|InsertFromHtmlString" --include="*.cs" . # Find ElementReader/Writer usage grep -r "ElementReader\|ElementWriter\|ElementBuilder" --include="*.cs" . SHELL 予想される画期的な変更 Apryse PDFパターン 必要な変更 PDFNet.Initialize()。 IronPdf.License.LicenseKeyに置き換えてください。 HTML2PDFモジュール 組み込みのChromePdfRendererです。 ElementReader</code>/<code>ElementWriter IronPDFは内部でコンテンツを処理します。 SDFDoc.SaveOptions シンプルなSaveAs()メソッド PDFViewCtrl 外部PDFビューアの使用 XODフォーマット PDFまたは画像に変換 モジュールパスの構成 不要 ステップごとの移行プロセス ステップ 1: NuGet パッケージを更新する Apryse/PDFTronパッケージを削除し、IronPDFをインストールしてください: # Remove Apryse/PDFTron packages dotnet remove package PDFTron.NET.x64 dotnet remove package PDFTron.NET.x86 dotnet remove package pdftron # Install IronPDF dotnet add package IronPdf # Remove Apryse/PDFTron packages dotnet remove package PDFTron.NET.x64 dotnet remove package PDFTron.NET.x86 dotnet remove package pdftron # Install IronPDF dotnet add package IronPdf SHELL またはパッケージマネージャーコンソールから: Uninstall-Package PDFTron.NET.x64 Install-Package IronPdf ステップ 2: 名前空間参照の更新 Apryseの名前空間をIronPDFに置き換えてください: // Remove these using pdftron; using pdftron.PDF; using pdftron.PDF.Convert; using pdftron.SDF; using pdftron.Filters; // Add these using IronPdf; using IronPdf.Rendering; // Remove these using pdftron; using pdftron.PDF; using pdftron.PDF.Convert; using pdftron.SDF; using pdftron.Filters; // Add these using IronPdf; using IronPdf.Rendering; $vbLabelText $csharpLabel ステップ 3: 初期化ボイラープレートの削除 Apryse PDFは複雑な初期化を必要とします。 IronPDFはこのような問題を完全に解決します。 ApryseのPDF実装:。 // Complex initialization PDFNet.Initialize("YOUR_LICENSE_KEY"); PDFNet.SetResourcesPath("path/to/resources"); // Plus module path for HTML2PDF... // Complex initialization PDFNet.Initialize("YOUR_LICENSE_KEY"); PDFNet.SetResourcesPath("path/to/resources"); // Plus module path for HTML2PDF... $vbLabelText $csharpLabel IronPDFの実装:。 // Simple license assignment (optional for development) IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY"; // Simple license assignment (optional for development) IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY"; $vbLabelText $csharpLabel IronPDFではPDFNet.Terminate()コールは必要ありません。 完全な API 移行のリファレンス コア クラス マッピング Apryse PDFクラス IronPDF 同等物 ノート PDFDoc PdfDocument 主なドキュメントクラス HTML2PDF ChromePdfRenderer HTMLからPDFへの変換。 TextExtractor PdfDocument.ExtractAllText()。 テキスト抽出。 スタンパー PdfDocument.ApplyWatermark()。 透かしとスタンプ PDFDraw PdfDocument.ToBitmap()を使用してください。 ラスタライズ SecurityHandler PdfDocument.SecuritySettings 暗号化/パスワード PDFNet IronPdf.ライセンス ライセンスと設定 ドキュメント操作 ApryseのPDFメソッド IronPDF メソッド ノート new PDFDoc() とします。 new PdfDocument(). 空のドキュメント new PDFDoc(path) とします。 PdfDocument.FromFile(パス)。 ファイルから読み込む new PDFDoc(buffer) とします。 `PdfDocument.FromBinaryData(bytes)PdfDocument.FromBinaryData(bytes) バイトから読み込む doc.Save(path, options). pdf.SaveAs(path)のようにします。 ファイルに保存 doc.Save(バッファ)を実行します。 pdf.BinaryData` バイト数 doc.Close() pdf.Dispose() クリーンアップ (または using を使用) doc.GetPageCount() pdf.PageCount ページ数 doc.AppendPages(doc2, start, end). PdfDocument.Merge(pdfs). ドキュメントをマージする. HTMLからPDFへの変換 ApryseのPDFメソッド IronPDF メソッド ノート HTML2PDF.Convert(doc). renderer.RenderHtmlAsPdf(html). PdfDocument を返します。 converter.InsertFromURL(url). renderer.RenderUrlAsPdf(url)のようにします。 URL変換。 converter.InsertFromHtmlString(html). renderer.RenderHtmlAsPdf(html). HTML文字列 `converter.SetModulePath(path)converter.SetModulePath(path) 不要 組み込みエンジン converter.SetPaperSize(width, height). RenderingOptions.PaperSize` 用紙サイズ converter.SetLandscape(true). RenderingOptions.PaperOrientation オリエンテーション コード移行の例 HTML文字列をPDFに変換 最も一般的な作業は、定型的なコードを劇的に削減することを実証しています。 ApryseのPDF実装:。 using pdftron; using pdftron.PDF; class Program { static void Main() { PDFNet.Initialize("YOUR_LICENSE_KEY"); PDFNet.SetResourcesPath("path/to/resources"); string html = "<html><body><h1>Hello World</h1><p>Content here</p></body></html>"; using (PDFDoc doc = new PDFDoc()) { HTML2PDF converter = new HTML2PDF(); converter.SetModulePath("path/to/html2pdf"); converter.InsertFromHtmlString(html); HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings(); settings.SetPrintBackground(true); settings.SetLoadImages(true); if (converter.Convert(doc)) { doc.Save("output.pdf", SDFDoc.SaveOptions.e_linearized); Console.WriteLine("PDF created successfully"); } else { Console.WriteLine($"Conversion failed: {converter.GetLog()}"); } } PDFNet.Terminate(); } } using pdftron; using pdftron.PDF; class Program { static void Main() { PDFNet.Initialize("YOUR_LICENSE_KEY"); PDFNet.SetResourcesPath("path/to/resources"); string html = "<html><body><h1>Hello World</h1><p>Content here</p></body></html>"; using (PDFDoc doc = new PDFDoc()) { HTML2PDF converter = new HTML2PDF(); converter.SetModulePath("path/to/html2pdf"); converter.InsertFromHtmlString(html); HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings(); settings.SetPrintBackground(true); settings.SetLoadImages(true); if (converter.Convert(doc)) { doc.Save("output.pdf", SDFDoc.SaveOptions.e_linearized); Console.WriteLine("PDF created successfully"); } else { Console.WriteLine($"Conversion failed: {converter.GetLog()}"); } } PDFNet.Terminate(); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string html = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string html = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel IronPdfは初期化、モジュールパス、クリーンアップコードを排除し、35行以上を5行に削減します。 URLからPDFへの変換 ApryseのPDF実装:。 using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc()) { HTML2PDF converter = new HTML2PDF(); converter.SetModulePath("path/to/html2pdf"); HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings(); settings.SetLoadImages(true); settings.SetAllowJavaScript(true); settings.SetPrintBackground(true); converter.InsertFromURL("https://example.com", settings); if (converter.Convert(doc)) { doc.Save("webpage.pdf", SDFDoc.SaveOptions.e_linearized); } } PDFNet.Terminate(); using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc()) { HTML2PDF converter = new HTML2PDF(); converter.SetModulePath("path/to/html2pdf"); HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings(); settings.SetLoadImages(true); settings.SetAllowJavaScript(true); settings.SetPrintBackground(true); converter.InsertFromURL("https://example.com", settings); if (converter.Convert(doc)) { doc.Save("webpage.pdf", SDFDoc.SaveOptions.e_linearized); } } PDFNet.Terminate(); $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string url = "https://www.example.com"; var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string url = "https://www.example.com"; var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf"); } } $vbLabelText $csharpLabel 複数のPDFをマージする ApryseのPDF実装:。 using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc mainDoc = new PDFDoc()) { string[] files = { "doc1.pdf", "doc2.pdf", "doc3.pdf" }; foreach (string file in files) { using (PDFDoc doc = new PDFDoc(file)) { mainDoc.AppendPages(doc, 1, doc.GetPageCount()); } } mainDoc.Save("merged.pdf", SDFDoc.SaveOptions.e_linearized); } PDFNet.Terminate(); using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc mainDoc = new PDFDoc()) { string[] files = { "doc1.pdf", "doc2.pdf", "doc3.pdf" }; foreach (string file in files) { using (PDFDoc doc = new PDFDoc(file)) { mainDoc.AppendPages(doc, 1, doc.GetPageCount()); } } mainDoc.Save("merged.pdf", SDFDoc.SaveOptions.e_linearized); } PDFNet.Terminate(); $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; 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(new List<PdfDocument> { pdf1, pdf2 }); merged.SaveAs("merged.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; 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(new List<PdfDocument> { pdf1, pdf2 }); merged.SaveAs("merged.pdf"); } } $vbLabelText $csharpLabel IronPdfの静的なMergeメソッドは複数のドキュメントを直接受け取ることができ、ページの反復パターンを排除します。 テキスト抽出 ApryseのPDF実装:。 using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc("document.pdf")) { TextExtractor extractor = new TextExtractor(); for (int i = 1; i <= doc.GetPageCount(); i++) { Page page = doc.GetPage(i); extractor.Begin(page); string pageText = extractor.GetAsText(); Console.WriteLine($"Page {i}:"); Console.WriteLine(pageText); } } PDFNet.Terminate(); using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc("document.pdf")) { TextExtractor extractor = new TextExtractor(); for (int i = 1; i <= doc.GetPageCount(); i++) { Page page = doc.GetPage(i); extractor.Begin(page); string pageText = extractor.GetAsText(); Console.WriteLine($"Page {i}:"); Console.WriteLine(pageText); } } PDFNet.Terminate(); $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Extract all text at once string allText = pdf.ExtractAllText(); Console.WriteLine(allText); // Extract from specific page string page1Text = pdf.ExtractTextFromPage(0); // 0-indexed Console.WriteLine($"Page 1: {page1Text}"); using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Extract all text at once string allText = pdf.ExtractAllText(); Console.WriteLine(allText); // Extract from specific page string page1Text = pdf.ExtractTextFromPage(0); // 0-indexed Console.WriteLine($"Page 1: {page1Text}"); $vbLabelText $csharpLabel 透かしの追加 ApryseのPDF実装:。 using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc("document.pdf")) { Stamper stamper = new Stamper(Stamper.SizeType.e_relative_scale, 0.5, 0.5); stamper.SetAlignment(Stamper.HorizontalAlignment.e_horizontal_center, Stamper.VerticalAlignment.e_vertical_center); stamper.SetOpacity(0.3); stamper.SetRotation(45); stamper.SetFontColor(new ColorPt(1, 0, 0)); stamper.SetTextAlignment(Stamper.TextAlignment.e_align_center); stamper.StampText(doc, "CONFIDENTIAL", new PageSet(1, doc.GetPageCount())); doc.Save("watermarked.pdf", SDFDoc.SaveOptions.e_linearized); } PDFNet.Terminate(); using pdftron; using pdftron.PDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc("document.pdf")) { Stamper stamper = new Stamper(Stamper.SizeType.e_relative_scale, 0.5, 0.5); stamper.SetAlignment(Stamper.HorizontalAlignment.e_horizontal_center, Stamper.VerticalAlignment.e_vertical_center); stamper.SetOpacity(0.3); stamper.SetRotation(45); stamper.SetFontColor(new ColorPt(1, 0, 0)); stamper.SetTextAlignment(Stamper.TextAlignment.e_align_center); stamper.StampText(doc, "CONFIDENTIAL", new PageSet(1, doc.GetPageCount())); doc.Save("watermarked.pdf", SDFDoc.SaveOptions.e_linearized); } PDFNet.Terminate(); $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; using IronPdf.Editing; var pdf = PdfDocument.FromFile("document.pdf"); // HTML-based watermark with full styling control string watermarkHtml = @" <div style=' color: red; opacity: 0.3; font-size: 72px; font-weight: bold; text-align: center; '>CONFIDENTIAL</div>"; pdf.ApplyWatermark(watermarkHtml, rotation: 45, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center); pdf.SaveAs("watermarked.pdf"); using IronPdf; using IronPdf.Editing; var pdf = PdfDocument.FromFile("document.pdf"); // HTML-based watermark with full styling control string watermarkHtml = @" <div style=' color: red; opacity: 0.3; font-size: 72px; font-weight: bold; text-align: center; '>CONFIDENTIAL</div>"; pdf.ApplyWatermark(watermarkHtml, rotation: 45, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center); pdf.SaveAs("watermarked.pdf"); $vbLabelText $csharpLabel IronPDF はHTML/CSS ベースの透かしを使用しており、使い慣れた Web テクノロジーを通じて完全なスタイル制御を提供します。 パスワード保護 ApryseのPDF実装:。 using pdftron; using pdftron.PDF; using pdftron.SDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc("document.pdf")) { SecurityHandler handler = new SecurityHandler(); handler.ChangeUserPassword("user123"); handler.ChangeMasterPassword("owner456"); handler.SetPermission(SecurityHandler.Permission.e_print, false); handler.SetPermission(SecurityHandler.Permission.e_extract_content, false); doc.SetSecurityHandler(handler); doc.Save("protected.pdf", SDFDoc.SaveOptions.e_linearized); } PDFNet.Terminate(); using pdftron; using pdftron.PDF; using pdftron.SDF; PDFNet.Initialize("YOUR_LICENSE_KEY"); using (PDFDoc doc = new PDFDoc("document.pdf")) { SecurityHandler handler = new SecurityHandler(); handler.ChangeUserPassword("user123"); handler.ChangeMasterPassword("owner456"); handler.SetPermission(SecurityHandler.Permission.e_print, false); handler.SetPermission(SecurityHandler.Permission.e_extract_content, false); doc.SetSecurityHandler(handler); doc.Save("protected.pdf", SDFDoc.SaveOptions.e_linearized); } PDFNet.Terminate(); $vbLabelText $csharpLabel IronPDFの実装:。 using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Set passwords pdf.SecuritySettings.UserPassword = "user123"; pdf.SecuritySettings.OwnerPassword = "owner456"; // Set permissions pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs("protected.pdf"); using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Set passwords pdf.SecuritySettings.UserPassword = "user123"; pdf.SecuritySettings.OwnerPassword = "owner456"; // Set permissions pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs("protected.pdf"); $vbLabelText $csharpLabel ヘッダーとフッター IronPDFの実装:。 using IronPdf; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:center; font-size:12px;'>Company Header</div>", DrawDividerLine = true, MaxHeight = 30 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>", DrawDividerLine = true, MaxHeight = 25 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>"); pdf.SaveAs("with_headers.pdf"); using IronPdf; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:center; font-size:12px;'>Company Header</div>", DrawDividerLine = true, MaxHeight = 30 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>", DrawDividerLine = true, MaxHeight = 25 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>"); pdf.SaveAs("with_headers.pdf"); $vbLabelText $csharpLabel IronPDFは{page}や{total-pages}のようなプレースホルダートークンをサポートしています。 その他のオプションについては、headers and footers documentationを参照してください。 .NETコアの統合 Apryse PDFの初期化要件は、Webアプリケーションの統合を複雑にします。 IronPDFはこのパターンを簡素化します。 IronPDFパターン: [ApiController] [Route("[controller]")] public class PdfController : ControllerBase { [HttpGet("generate")] public IActionResult GeneratePdf() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>"); return File(pdf.BinaryData, "application/pdf", "report.pdf"); } [HttpGet("generate-async")] public async Task<IActionResult> GeneratePdfAsync() { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>"); return File(pdf.Stream, "application/pdf", "report.pdf"); } } [ApiController] [Route("[controller]")] public class PdfController : ControllerBase { [HttpGet("generate")] public IActionResult GeneratePdf() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>"); return File(pdf.BinaryData, "application/pdf", "report.pdf"); } [HttpGet("generate-async")] public async Task<IActionResult> GeneratePdfAsync() { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>"); return File(pdf.Stream, "application/pdf", "report.pdf"); } } $vbLabelText $csharpLabel 依存性注入の構成 // Program.cs public void ConfigureServices(IServiceCollection services) { // Set license once IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"]; // Register renderer as scoped service services.AddScoped<ChromePdfRenderer>(); // Or create a wrapper service services.AddScoped<IPdfService, IronPdfService>(); } // IronPdfService.cs public class IronPdfService : IPdfService { private readonly ChromePdfRenderer _renderer; public IronPdfService() { _renderer = new ChromePdfRenderer(); _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; _renderer.RenderingOptions.PrintHtmlBackgrounds = true; } public PdfDocument GenerateFromHtml(string html) => _renderer.RenderHtmlAsPdf(html); public Task<PdfDocument> GenerateFromHtmlAsync(string html) => _renderer.RenderHtmlAsPdfAsync(html); } // Program.cs public void ConfigureServices(IServiceCollection services) { // Set license once IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"]; // Register renderer as scoped service services.AddScoped<ChromePdfRenderer>(); // Or create a wrapper service services.AddScoped<IPdfService, IronPdfService>(); } // IronPdfService.cs public class IronPdfService : IPdfService { private readonly ChromePdfRenderer _renderer; public IronPdfService() { _renderer = new ChromePdfRenderer(); _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; _renderer.RenderingOptions.PrintHtmlBackgrounds = true; } public PdfDocument GenerateFromHtml(string html) => _renderer.RenderHtmlAsPdf(html); public Task<PdfDocument> GenerateFromHtmlAsync(string html) => _renderer.RenderHtmlAsPdfAsync(html); } $vbLabelText $csharpLabel パフォーマンス比較 メトリック Apryse PDF IronPDF コールドスタート。 高速(ネイティブコード) ~2s (Chromium init) 後続のレンダリング 高速 高速 複雑なHTML。 変数(html2pdfモジュール) エクセレント(Chromium) CSSのサポート。 制限的 完全なCSS3 JavaScript(ジャバスクリプト 制限的 フルサポート パフォーマンス最適化のヒント // 1. Reuse renderer instance private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer(); // 2. Disable unnecessary features for speed var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; // If not needed renderer.RenderingOptions.WaitFor.RenderDelay(0); // No delay renderer.RenderingOptions.Timeout = 30000; // 30s max // 3. Proper disposal using (var pdf = renderer.RenderHtmlAsPdf(html)) { pdf.SaveAs("output.pdf"); } // 1. Reuse renderer instance private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer(); // 2. Disable unnecessary features for speed var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; // If not needed renderer.RenderingOptions.WaitFor.RenderDelay(0); // No delay renderer.RenderingOptions.Timeout = 30000; // 30s max // 3. Proper disposal using (var pdf = renderer.RenderHtmlAsPdf(html)) { pdf.SaveAs("output.pdf"); } $vbLabelText $csharpLabel よくある移行の問題のトラブルシューティング 問題モジュールパスのエラー IronPDFのChromiumエンジンが組み込まれています: // Remove this converter.SetModulePath("path/to/html2pdf"); // Just use the renderer var renderer = new ChromePdfRenderer(); // Remove this converter.SetModulePath("path/to/html2pdf"); // Just use the renderer var renderer = new ChromePdfRenderer(); $vbLabelText $csharpLabel 問題:PDFNet.Initialize() が見つかりません IronPDFのライセンスセットアップと置き換えてください: // Remove this PDFNet.Initialize("KEY"); PDFNet.SetResourcesPath("path"); // Use this (optional for development) IronPdf.License.LicenseKey = "YOUR-KEY"; // Remove this PDFNet.Initialize("KEY"); PDFNet.SetResourcesPath("path"); // Use this (optional for development) IronPdf.License.LicenseKey = "YOUR-KEY"; $vbLabelText $csharpLabel 課題PDFViewCtrl の置き換え IronPDFにはビューアーコントロールは含まれていません。 オプション PDF.jsをWebビューアに使用する システムPDFビューアの使用 サードパーティのビューアコンポーネントを検討する 移行後のチェックリスト コードの移行が完了したら、以下を確認してください: PDF出力の品質が期待値に合っていることを確認 すべてのエッジケースをテストする(大きなドキュメント、複雑なCSS) パフォーマンス指標を比較する 該当する場合はDocker構成を更新します Apryseライセンスと関連設定を削除します IronPDF固有の設定を文書化する 新しい API パターンについてチームをトレーニングする 必要に応じてCI/CDパイプラインを更新する PDFインフラストラクチャの将来性を確保する .NET 10が目前に迫り、C# 14が新しい言語機能を導入する中、最新の規約を持つネイティブの.NET PDFライブラリを選択することで、進化するランタイム機能との互換性を確保できます。 IronPDFは最新の.NETバージョンをサポートすることに専念しており、プロジェクトが2025年、2026年まで継続しても、年間サブスクリプションの更新なしで、移行への投資は報われます。 その他のリソース IronPDFドキュメント. HTMLからPDFへのチュートリアル。 APIリファレンス. NuGetパッケージ。 ライセンスオプション。 Apryse PDFからIronPDFへの移行は、あなたのPDFコードベースを複雑なC++パターンからイディオムなC#に変換します。 初期化の定型文、モジュールパスの構成、サブスクリプションベースのライセンスを排除することで、長期的なコストを削減しながら、生産性を即座に向上させます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でAspose.PDFからIronPDFへ移行する方法C#でApi2pdfから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む