移行ガイド C#でPuppeteerSharpからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年2月1日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る PuppeteerSharpからIronPdfへの移行は、あなたのPDF生成ワークフローを、300MB以上の依存関係を持つブラウザ自動化ツールから、自動メモリ管理機能を持つ専用PDFライブラリへと変えます。 このガイドは、Chromiumのダウンロードをなくし、メモリリークの問題を解決し、包括的なPDF操作機能を提供する、完全で段階的な移行パスを提供します。 なぜPuppeteerSharpからIronPDFへ移行するのか PuppeteerSharpの理解 PuppeteerSharpは、GoogleのPuppeteerの.NET移植版で、ブラウザ自動化機能をC#にもたらします。 Chromeに内蔵されているprint-to-PDF機能(ブラウザでCtrl+Pを押すのと同じ)を使ってPDFを生成します。 このため、画面に表示されるものとは異なる、紙に最適化された印刷用出力が作成されます。 PuppeteerSharpは、ウェブテストとスクレイピングのために設計されており、文書生成のために設計されていません。 PDFの生成にPuppeteerSharpを使用することは可能ですが、制作上の大きな課題があります。 ブラウザ自動化の問題 PuppeteerSharpは、ドキュメント生成ではなく、ブラウザ自動化のために設計されています。 このため、PDFに使用する場合、基本的な問題が発生します: 1.初回使用前に300MB以上のChromiumダウンロードが必要です。 PuppeteerSharpの重大な欠点は、主にChromiumバイナリをバンドルしているため、デプロイメントサイズが大きいことです。 この膨大なサイズはDockerイメージを肥大化させ、サーバーレス環境におけるコールドスタートの問題を引き起こす可能性があります。 2.負荷がかかるとメモリリークが発生し、ブラウザを手動でリサイクルする必要があります。 高負荷の場合、PuppeteerSharpはメモリリークを起こすことが知られています。 ブラウザのインスタンスによってメモリが蓄積されるため、プロセス管理とリサイクルのために手作業が必要になります。 3.ブラウザのライフサイクル管理による複雑な非同期パターン。 4.PDF出力(画面キャプチャではなく、Ctrl+Pと同等)。 レイアウトはリフローし、背景はデフォルトで省略され、出力はブラウザのビューポートに合わせるのではなく、印刷用にページ分割されます。 5.コンプライアンス要件のため、PDF/AまたはPDF/UAのサポートはありません。 PuppeteerSharpでは、PDF/A(アーカイブ)またはPDF/UA(アクセシビリティ)に準拠した文書は作成できません。 6.PDFの操作はできません - 生成のみで、マージ/分割/編集はできません。 PuppeteerSharpはPDFを効率的に生成できますが、PDFの結合、分割、保護、編集など、さらなる操作のための機能が欠けています。 PuppeteerSharpとIronPDFの比較 アスペクト PuppeteerSharp IronPDF 主な目的 ブラウザ自動化 PDF生成 クロム依存 300MB以上の個別ダウンロード 最適化エンジン内蔵 APIの複雑さ 非同期ブラウザ/ページライフサイクル 同期ワンライナー 初期化。 BrowserFetcher.DownloadAsync() + LaunchAsync new ChromePdfRenderer(). メモリ管理 手動ブラウザリサイクルが必要 自動翻訳 負荷下のメモリ リークを含む500MB以上 ~50MB 安定版 コールドスタート 45秒以上 ~20秒 PDF/Aサポート 不可 フルサポート PDF/UAアクセシビリティ。 不可 フルサポート PDFの編集。 不可 マージ、分割、スタンプ、編集 デジタル署名。 不可 フルサポート スレッドセーフティ 制限的 フル プロフェッショナルサポート コミュニティ SLA付き商用 プラットフォームサポート ライブラリ .NET Framework 4.7.2 .NET Core 3.1 .NET 6-8 .NET 10 IronPDF フル フル フル フル PuppeteerSharp 制限的 フル フル 未定 IronPDFは.NETプラットフォームを幅広くサポートしているため、開発者は互換性の問題に直面することなく様々な環境でIronPDFを活用することができ、2025年と2026年まで最新の.NETアプリケーションに柔軟な選択肢を提供します。 始める前に 前提条件 .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGetアクセス: NuGetパッケージをインストールする機能 IronPDFライセンス: ironpdf.comからライセンスキーを取得します。 NuGetパッケージの変更 # Remove PuppeteerSharp dotnet remove package PuppeteerSharp # Remove downloaded Chromium binaries (~300MB recovered) # Delete the .local-chromium folder # Add IronPDF dotnet add package IronPdf # Remove PuppeteerSharp dotnet remove package PuppeteerSharp # Remove downloaded Chromium binaries (~300MB recovered) # Delete the .local-chromium folder # Add IronPDF dotnet add package IronPdf SHELL IronPDFではBrowserFetcher.DownloadAsync()は必要ありません - レンダリングエンジンは自動的にバンドルされています。 ライセンス構成 // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel 完全な API リファレンス 名前空間の変更 // Before: PuppeteerSharp using PuppeteerSharp; using PuppeteerSharp.Media; using System.Threading.Tasks; // After: IronPDF using IronPdf; using IronPdf.Rendering; // Before: PuppeteerSharp using PuppeteerSharp; using PuppeteerSharp.Media; using System.Threading.Tasks; // After: IronPDF using IronPdf; using IronPdf.Rendering; $vbLabelText $csharpLabel コア API マッピング PuppeteerSharp API IronPDF API ノート new BrowserFetcher().DownloadAsync(). 不要 ブラウザのダウンロードなし Puppeteer.LaunchAsync(options)を実行します。 不要 ブラウザ管理なし browser.NewPageAsync()。 不要 ページコンテキストなし page.GoToAsync(url). renderer.RenderUrlAsPdf(url)のようにします。 直接レンダリング page.SetContentAsync(html). renderer.RenderHtmlAsPdf(html). 直接レンダリング page.PdfAsync(パス)。 pdf.SaveAs(path)のようにします。 レンダリング後 awaitページ.CloseAsync()。 不要 自動クリーンアップ await browser.CloseAsync(). 不要 自動クリーンアップ PdfOptions.Format RenderingOptions.PaperSize 用紙サイズ PdfOptions.Landscape RenderingOptions.PaperOrientation オリエンテーション PdfOptions.MarginOptions。 RenderingOptions.MarginTop/Bottom/Left/Right。 個々の余白 PdfOptions.PrintBackground RenderingOptions.PrintHtmlBackgroundsを使用してください。 背景印刷 PdfOptions.HeaderTemplate RenderingOptions.HtmlHeader HTMLヘッダー PdfOptions.FooterTemplate RenderingOptions.HtmlFooter HTMLフッター page.WaitForSelectorAsync()。 RenderingOptions.WaitFor.HtmlElementId。 要素を待つ コード移行の例 例1: 基本的なHTMLからPDFへの変換 以前(PuppeteerSharp): // NuGet: Install-Package PuppeteerSharp using PuppeteerSharp; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); await using var page = await browser.NewPageAsync(); await page.SetContentAsync("<h1>Hello World</h1><p>This is a PDF document.</p>"); await page.PdfAsync("output.pdf"); } } // NuGet: Install-Package PuppeteerSharp using PuppeteerSharp; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); await using var page = await browser.NewPageAsync(); await page.SetContentAsync("<h1>Hello World</h1><p>This is a PDF document.</p>"); await page.PdfAsync("output.pdf"); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>"); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>"); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel この例は、基本的なアーキテクチャの違いを示しています。 PuppeteerSharpは、6つの非同期処理を必要とします:BrowserFetcher.DownloadAsync()(300MB以上のChromiumダウンロード)、Puppeteer.LaunchAsync()、browser.NewPageAsync()、page.SetContentAsync()、page.PdfAsync()の6つの非同期操作と、await usingによる適切な処理が必要です。 IronPDFはこのような複雑さをすべて取り除きます: ChromePdfRendererを作成し、RenderHtmlAsPdf()を呼び出し、SaveAs()します。 非同期パターン、ブラウザのライフサイクル、Chromiumのダウンロードはありません。 IronPDFのアプローチは、よりきれいな構文と最新の.NETアプリケーションとのより良い統合を提供します。 包括的な例については、HTML to PDF documentationを参照してください。 例2: URLからPDFへの変換 以前(PuppeteerSharp): // NuGet: Install-Package PuppeteerSharp using PuppeteerSharp; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); await using var page = await browser.NewPageAsync(); await page.GoToAsync("https://www.example.com"); await page.PdfAsync("webpage.pdf"); } } // NuGet: Install-Package PuppeteerSharp using PuppeteerSharp; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); await using var page = await browser.NewPageAsync(); await page.GoToAsync("https://www.example.com"); await page.PdfAsync("webpage.pdf"); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://www.example.com"); pdf.SaveAs("webpage.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://www.example.com"); pdf.SaveAs("webpage.pdf"); } } $vbLabelText $csharpLabel PuppeteerSharpは、GoToAsync()を使用して、PdfAsync()に続くURLに移動します。 IronPDFは一つのRenderUrlAsPdf()メソッドでナビゲーションとPDF生成を行います。 詳しくは、チュートリアルをご覧ください。 例3: 余白を使ったカスタムページ設定 以前(PuppeteerSharp): // NuGet: Install-Package PuppeteerSharp using PuppeteerSharp; using PuppeteerSharp.Media; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); await using var page = await browser.NewPageAsync(); await page.SetContentAsync("<h1>Custom PDF</h1><p>With landscape orientation and margins.</p>"); await page.PdfAsync("custom.pdf", new PdfOptions { Format = PaperFormat.A4, Landscape = true, MarginOptions = new MarginOptions { Top = "20mm", Bottom = "20mm", Left = "20mm", Right = "20mm" } }); } } // NuGet: Install-Package PuppeteerSharp using PuppeteerSharp; using PuppeteerSharp.Media; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); await using var page = await browser.NewPageAsync(); await page.SetContentAsync("<h1>Custom PDF</h1><p>With landscape orientation and margins.</p>"); await page.PdfAsync("custom.pdf", new PdfOptions { Format = PaperFormat.A4, Landscape = true, MarginOptions = new MarginOptions { Top = "20mm", Bottom = "20mm", Left = "20mm", Right = "20mm" } }); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; renderer.RenderingOptions.MarginLeft = 20; renderer.RenderingOptions.MarginRight = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>With landscape orientation and margins.</p>"); pdf.SaveAs("custom.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; renderer.RenderingOptions.MarginLeft = 20; renderer.RenderingOptions.MarginRight = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>With landscape orientation and margins.</p>"); pdf.SaveAs("custom.pdf"); } } $vbLabelText $csharpLabel この例では、PDFオプションが2つのライブラリ間でどのようにマッピングされるかを示しています。 PuppeteerSharpは、Format、Landscape、MarginOptionsが文字列値("20mm")を含むPdfOptionsを使用します。 IronPDFはRenderingOptionsプロパティを使用し、直接用紙サイズ列挙型、方向列挙型、ミリメートル単位のマージン値を指定します。 主なマッピング Format = PaperFormat.A4 → PaperSize = PdfPaperSize.A4 とします。 Landscape = true → PaperOrientation = PdfPaperOrientation.Landscape です。 MarginOptions.Top = "20mm" → MarginTop = 20 (数値ミリメートル) メモリリーク問題 PuppeteerSharpは、持続的な負荷がかかるとメモリが蓄積されることで有名です: // ❌PuppeteerSharp- Memory grows with each operation // Requires explicit browser recycling every N operations for (int i = 0; i < 1000; i++) { var page = await browser.NewPageAsync(); await page.SetContentAsync($"<h1>Document {i}</h1>"); await page.PdfAsync($"doc_{i}.pdf"); await page.CloseAsync(); // Memory still accumulates! } // Must periodically: await browser.CloseAsync(); and re-launch // ✅IronPDF- Stable memory, reuse renderer var renderer = new ChromePdfRenderer(); for (int i = 0; i < 1000; i++) { var pdf = renderer.RenderHtmlAsPdf($"<h1>Document {i}</h1>"); pdf.SaveAs($"doc_{i}.pdf"); // Memory managed automatically } // ❌PuppeteerSharp- Memory grows with each operation // Requires explicit browser recycling every N operations for (int i = 0; i < 1000; i++) { var page = await browser.NewPageAsync(); await page.SetContentAsync($"<h1>Document {i}</h1>"); await page.PdfAsync($"doc_{i}.pdf"); await page.CloseAsync(); // Memory still accumulates! } // Must periodically: await browser.CloseAsync(); and re-launch // ✅IronPDF- Stable memory, reuse renderer var renderer = new ChromePdfRenderer(); for (int i = 0; i < 1000; i++) { var pdf = renderer.RenderHtmlAsPdf($"<h1>Document {i}</h1>"); pdf.SaveAs($"doc_{i}.pdf"); // Memory managed automatically } $vbLabelText $csharpLabel IronPDFは、PuppeteerSharpが必要とするブラウザ・プーリングのインフラを不要にします: // Before (PuppeteerSharp - delete entire class) public class PuppeteerBrowserPool { private readonly ConcurrentBag<IBrowser> _browsers; private readonly SemaphoreSlim _semaphore; private int _operationCount; // ... recycling logic ... } // After (IronPDF - simple reuse) public class PdfService { private readonly ChromePdfRenderer _renderer = new(); public byte[] Generate(string html) { return _renderer.RenderHtmlAsPdf(html).BinaryData; } } // Before (PuppeteerSharp - delete entire class) public class PuppeteerBrowserPool { private readonly ConcurrentBag<IBrowser> _browsers; private readonly SemaphoreSlim _semaphore; private int _operationCount; // ... recycling logic ... } // After (IronPDF - simple reuse) public class PdfService { private readonly ChromePdfRenderer _renderer = new(); public byte[] Generate(string html) { return _renderer.RenderHtmlAsPdf(html).BinaryData; } } $vbLabelText $csharpLabel 重要な移行に関する注意事項 非同期から同期への変換 PuppeteerSharpは、全体を通してasync/awaitを必要とします; IronPDFは同期操作をサポートしています: // PuppeteerSharp: Async required public async Task<byte[]> GeneratePdfAsync(string html) { await new BrowserFetcher().DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(...); await using var page = await browser.NewPageAsync(); await page.SetContentAsync(html); return await page.PdfDataAsync(); } // IronPDF: Sync default public byte[] GeneratePdf(string html) { var renderer = new ChromePdfRenderer(); return renderer.RenderHtmlAsPdf(html).BinaryData; } // Or async when needed public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync(html); return pdf.BinaryData; } // PuppeteerSharp: Async required public async Task<byte[]> GeneratePdfAsync(string html) { await new BrowserFetcher().DownloadAsync(); await using var browser = await Puppeteer.LaunchAsync(...); await using var page = await browser.NewPageAsync(); await page.SetContentAsync(html); return await page.PdfDataAsync(); } // IronPDF: Sync default public byte[] GeneratePdf(string html) { var renderer = new ChromePdfRenderer(); return renderer.RenderHtmlAsPdf(html).BinaryData; } // Or async when needed public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync(html); return pdf.BinaryData; } $vbLabelText $csharpLabel マージン単位の変換 PuppeteerSharpは文字列単位を使用します; IronPDFはミリメートルの数値を使用しています: //PuppeteerSharp- string units MarginOptions = new MarginOptions { Top = "1in", // 25.4mm Bottom = "0.75in", // 19mm Left = "1cm", // 10mm Right = "20px" // ~7.5mm at 96dpi } //IronPDF- numeric millimeters renderer.RenderingOptions.MarginTop = 25; // mm renderer.RenderingOptions.MarginBottom = 19; renderer.RenderingOptions.MarginLeft = 10; renderer.RenderingOptions.MarginRight = 8; //PuppeteerSharp- string units MarginOptions = new MarginOptions { Top = "1in", // 25.4mm Bottom = "0.75in", // 19mm Left = "1cm", // 10mm Right = "20px" // ~7.5mm at 96dpi } //IronPDF- numeric millimeters renderer.RenderingOptions.MarginTop = 25; // mm renderer.RenderingOptions.MarginBottom = 19; renderer.RenderingOptions.MarginLeft = 10; renderer.RenderingOptions.MarginRight = 8; $vbLabelText $csharpLabel ヘッダー/フッター プレースホルダーの変換 PuppeteerSharpクラス IronPDF プレースホルダー <span class="pageNumber"> {ページ} <span class="totalPages"></code>|<code>{総ページ数} <span class="date"> {date} {html-title} 移行後の新機能 IronPDFに移行した後は、PuppeteerSharpでは提供できない機能を得ることができます: PDFマージ var pdf1 = renderer.RenderHtmlAsPdf(html1); var pdf2 = renderer.RenderHtmlAsPdf(html2); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); var pdf1 = renderer.RenderHtmlAsPdf(html1); var pdf2 = renderer.RenderHtmlAsPdf(html2); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); $vbLabelText $csharpLabel ウォーターマーク var watermark = new TextStamper { Text = "CONFIDENTIAL", FontSize = 48, Opacity = 30, Rotation = -45 }; pdf.ApplyStamp(watermark); var watermark = new TextStamper { Text = "CONFIDENTIAL", FontSize = 48, Opacity = 30, Rotation = -45 }; pdf.ApplyStamp(watermark); $vbLabelText $csharpLabel パスワード保護 pdf.SecuritySettings.OwnerPassword = "admin"; pdf.SecuritySettings.UserPassword = "readonly"; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.OwnerPassword = "admin"; pdf.SecuritySettings.UserPassword = "readonly"; pdf.SecuritySettings.AllowUserCopyPasteContent = false; $vbLabelText $csharpLabel デジタル署名 var signature = new PdfSignature("certificate.pfx", "password"); pdf.Sign(signature); var signature = new PdfSignature("certificate.pfx", "password"); pdf.Sign(signature); $vbLabelText $csharpLabel PDF/A準拠 pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b); pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b); $vbLabelText $csharpLabel 性能比較概要 メトリック PuppeteerSharp IronPDF 改善 最初のPDF(コールドスタート) 45s+ ~20s 55%以上のスピード。 後続のPDF 変数 一貫性 予測可能な。 メモリ使用量 500MB以上(成長中) ~50MB(安定版) 90%少ないメモリ。 ディスクスペース(Chromium) 300MB以上 0 ダウンロードを排除する。 ブラウザダウンロード 必須 不要 ゼロセットアップ。 スレッドの安全性 制限的 フル 信頼できる並行処理。 PDF作成時間 45s 20s 55%速い。 移行チェックリスト 移行前 コードベース内のすべてのPuppeteerSharpの使用箇所を特定する ドキュメントの余白値(文字列をミリメートルに変換) 変換のためのヘッダー/フッターのプレースホルダー構文に注意してください ブラウザプーリング/リサイクルインフラストラクチャを削除する ironpdf.comからIronPDFライセンスキーを取得します パッケージの変更 PuppeteerSharp NuGet パッケージを削除する .local-chromiumフォルダを削除して、約 300 MB のディスク容量を解放します。 IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf コードの変更 名前空間のインポートを更新する BrowserFetcher.DownloadAsync()呼び出しを削除する Puppeteer.LaunchAsync()とブラウザ管理を削除 page.SetContentAsync() + page.PdfAsync()をRenderHtmlAsPdf()に置き換えます page.GoToAsync() + page.PdfAsync()をRenderUrlAsPdf()に置き換えます マージン文字列をミリメートル値に変換する ヘッダー/フッターのプレースホルダー構文を変換する すべてのブラウザ/ページ破棄コードを削除します ブラウザプーリングインフラストラクチャを削除する アプリケーションの起動時にライセンスの初期化を追加 移行後 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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でQuestPDFからIronPDFに移行する方法C#でPrinceXMLから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む