移行ガイド C#でPrinceXMLからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年2月1日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る PrinceXMLからIronPDFに移行することで、PDF生成のワークフローが外部のコマンドラインプロセスから.NETネイティブライブラリに変わります。 このガイドは、プロセス管理のオーバーヘッドを排除し、デプロイを簡素化し、生成にとどまらない広範なPDF操作機能を提供する、完全でステップバイステップの移行パスを提供します。 なぜPrinceXMLからIronPDFに移行するのか PrinceXMLを理解する PrinceXMLは、CSS Paged Media仕様の専用サポートにより、HTMLコンテンツを印刷に最適なPDF文書に変換することを得意とする洗練されたツールです。 PrinceXMLは、このような専門性に特化しているため、意図した印刷デザインに忠実なドキュメントを作成することができます。 ただし、PrinceXMLは.NETライブラリではなく、独立したコマンドラインツールとして動作するため、純粋な.NETソリューションを好む環境にとっては統合が複雑になる可能性があります。 別のサーバープロセスに依存するため、システムリソースの管理が追加され、プロジェクトの展開が複雑になる可能性があります。 外部プロセスの問題 PrinceXMLは独立したコマンドライン実行ファイルとして動作するため、.NETアプリケーションではアーキテクチャ上の大きな課題が生じます: 1.プロセス管理のオーバーヘッド:外部プロセスを生成、監視、終了する必要があります。 2.ネイティブ .NET 統合なし: stdin/stdout または一時ファイルを介して通信します。 3.展開の複雑さ:すべてのサーバーに Prince をインストールする必要があります。 4.サーバーごとのライセンス:展開ごとに個別のライセンスが必要です (495 ドル以上)。 5.エラー処理の難易度:エラー検出のためにテキスト出力を解析します。 Async/Await なし:ブロッキング呼び出しや複雑な非同期ラッパーは必要ありません。 7.パスの依存関係: Prince 実行可能ファイルを PATH または絶対パスで見つける必要があります。 PrinceXMLとIronPDFの比較 アスペクト PrinceXML IronPDF アーキテクチャ 外部プロセス .NETネイティブライブラリ 統合。 コマンドライン ダイレクトAPI デプロイメント すべてのサーバーにインストール 単一のNuGetパッケージ エラー処理。 テキスト出力の解析 .NET の例外 非同期サポートについて マニュアルラッパー ネイティブasync/await PDF操作 生成のみ 完全な操作(マージ、分割、編集) ライセンスについて サーバーあたり(495ドル以上) 開発者1人あたり 更新情報 手動再インストール NuGetアップデート デバッグ。 難易度 完全なデバッガサポート デジタル署名。 なし はい フォーム。 なし はい Dockerサポート。 複雑 単純 クラウドファンクション 難易度 簡単 IronPdfは、単なるHTMLからPDFへの変換にとどまらず、編集、マージ、電子署名などの高度なPDF操作タスクも含む、.NETネイティブ機能で代替手段を提供します。 IronPdfのAPIはシンプルで使いやすいように設計されており、開発者は最小限の定型コードで変換や操作を行うことができます。 2025年と2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFのシームレスな導入は外部依存やサーバープロセスを必要としないため、.NETフレームワークへの統合の負担を軽減します。 始める前に 前提条件 .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGetアクセス: NuGetパッケージをインストールする機能 IronPDFライセンス: ironpdf.comからライセンスキーを取得します。 NuGetパッケージの変更 # Install IronPDF dotnet add package IronPdf # Remove Prince wrapper if using one dotnet remove package PrinceXMLWrapper # Install IronPDF dotnet add package IronPdf # Remove Prince wrapper if using one dotnet remove package PrinceXMLWrapper SHELL ライセンス構成 // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel PrinceXMLの使い方を検索する # Find Prince process calls grep -r "prince" --include="*.cs" . grep -r "Process.Start" --include="*.cs" . | grep -i prince grep -r "@page" --include="*.css" . grep -r "prince-" --include="*.css" . # Find Prince process calls grep -r "prince" --include="*.cs" . grep -r "Process.Start" --include="*.cs" . | grep -i prince grep -r "@page" --include="*.css" . grep -r "prince-" --include="*.css" . SHELL 完全な API リファレンス 名前空間の変更 // Before: PrinceXML using PrinceXMLWrapper; using System.Diagnostics; using System.IO; // After: IronPDF using IronPdf; // Before: PrinceXML using PrinceXMLWrapper; using System.Diagnostics; using System.IO; // After: IronPDF using IronPdf; $vbLabelText $csharpLabel コマンドラインからメソッドへのマッピング プリンスコマンド IronPDF 同等物 prince input.html -o output.pdf. renderer.RenderHtmlFileAsPdf("input.html").SaveAs("output.pdf")。 prince --style=custom.css input.html HTMLにCSSを含めるか、RenderingOptionsを使用してください。 Prince --javascript</code>|renderer.RenderingOptions.EnableJavaScript = true`. Prince --no-javascript renderer.RenderingOptions.EnableJavaScript = false. prince --page-size=Letter. renderer.RenderingOptions.PaperSize=PdfPaperSize.Letter。 prince --page-margin=1in. renderer.RenderingOptions.MarginTop = 72 (72ポイント = 1インチ) prince --encrypt. pdf.SecuritySettings.OwnerPassword = "...". prince --user-password=pw. pdf.SecuritySettings.UserPassword = "pw". prince --disallow-print。 pdf.SecuritySettings.AllowUserPrinting=PdfPrintSecurity.NoPrint。 prince --disallow-copy。 pdf.SecuritySettings.AllowUserCopyPasteContent=false。 prince --baseurl=http://... renderer.RenderingOptions.BaseUrl = new Uri("http://...") prince --media=print. renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print. prince --media=screen. renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen. CSSの@pageからRenderingOptionsへのマッピング CSS @ページプロパティ IronPDF 同等物 サイズ:A4 PaperSize = PdfPaperSize.A4. サイズレター PaperSize = PdfPaperSize.Letter. サイズ:A4横 PaperSize = PdfPaperSize.A4 + PaperOrientation = Landscape です。 マージン:2cm|マージントップ/ボトム/レフト/ライト = 56` マージントップ:1インチ マージントップ = 72 @top-center { content:"..." } HtmlHeaderと中央揃えdiv @bottom-right { content: counter(page) } {page}プレースホルダを持つHtmlFooter。 ページ サイズの変換 サイズ ポイント ミリメートル レター 612 x 792 216 x 279 A4 595 x 842 210 x 297 リーガル 612 x 1008 216 x 356 1インチ 72 25.4 1cm 28.35 10 コード移行の例 例1: HTMLファイルからPDFへの変換 翻訳前 (PrinceXML): // NuGet: Install-Package PrinceXMLWrapper using PrinceXMLWrapper; using System; class Program { static void Main() { Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"); prince.Convert("input.html", "output.pdf"); Console.WriteLine("PDF created successfully"); } } // NuGet: Install-Package PrinceXMLWrapper using PrinceXMLWrapper; using System; class Program { static void Main() { Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"); prince.Convert("input.html", "output.pdf"); 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(); var pdf = renderer.RenderHtmlFileAsPdf("input.html"); 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(); var pdf = renderer.RenderHtmlFileAsPdf("input.html"); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } $vbLabelText $csharpLabel この例は、基本的なアーキテクチャの違いを示しています。 PrinceXMLでは、実行ファイルへのフルパス("C:³³Program Files³³Prince³³³³³.exe")を指定してPrinceオブジェクトをインスタンス化し、入力パスと出力パスを指定してConvert()を呼び出す必要があります。 IronPDFはパスの依存性を完全に排除します: ChromePdfRendererを作成し、RenderHtmlFileAsPdf()をHTMLファイルのパスで呼び出し、SaveAs()で結果を書き込みます。 実行可能パス、プロセス管理、パス依存性はありません。 包括的な例については、HTML to PDF documentationを参照してください。 例2: オプションを使用したURLからPDFへの変換 翻訳前 (PrinceXML): // NuGet: Install-Package PrinceXMLWrapper using PrinceXMLWrapper; using System; class Program { static void Main() { Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"); prince.SetJavaScript(true); prince.SetEncrypt(true); prince.SetPDFTitle("Website Export"); prince.Convert("https://example.com", "webpage.pdf"); Console.WriteLine("URL converted to PDF"); } } // NuGet: Install-Package PrinceXMLWrapper using PrinceXMLWrapper; using System; class Program { static void Main() { Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"); prince.SetJavaScript(true); prince.SetEncrypt(true); prince.SetPDFTitle("Website Export"); prince.Convert("https://example.com", "webpage.pdf"); Console.WriteLine("URL converted to PDF"); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.PdfTitle = "Website Export"; var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.Encrypt("password"); pdf.SaveAs("webpage.pdf"); Console.WriteLine("URL converted to PDF"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.PdfTitle = "Website Export"; var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.Encrypt("password"); pdf.SaveAs("webpage.pdf"); Console.WriteLine("URL converted to PDF"); } } $vbLabelText $csharpLabel この例では、PrinceXMLのオプションとIronPDFのプロパティの対応を示しています。 PrinceXMLでは、変換前にセッターメソッド(SetJavaScript(), SetEncrypt(), SetPDFTitle())を使用します。 IronPDFはRenderingOptionsプロパティをプリレンダー設定に使用し、PdfDocumentオブジェクトのEncrypt()のようなポストレンダーメソッドを使用します。 主なマッピング prince.SetJavaScript(true) → renderer.RenderingOptions.EnableJavaScript = true. prince.SetPDFTitle("...") → renderer.RenderingOptions.PdfTitle = "...". prince.SetEncrypt(true) → pdf.Encrypt("password") (IronPDFはパスワードを必要とします) 詳しくは、チュートリアルをご覧ください。 例3: HTML文字列からPDFへの変換 翻訳前 (PrinceXML): // NuGet: Install-Package PrinceXMLWrapper using PrinceXMLWrapper; using System; using System.IO; class Program { static void Main() { string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"; File.WriteAllText("temp.html", html); Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"); prince.Convert("temp.html", "styled-output.pdf"); Console.WriteLine("Styled PDF created"); } } // NuGet: Install-Package PrinceXMLWrapper using PrinceXMLWrapper; using System; using System.IO; class Program { static void Main() { string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"; File.WriteAllText("temp.html", html); Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"); prince.Convert("temp.html", "styled-output.pdf"); Console.WriteLine("Styled PDF created"); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("styled-output.pdf"); Console.WriteLine("Styled PDF created"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("styled-output.pdf"); Console.WriteLine("Styled PDF created"); } } $vbLabelText $csharpLabel この例では、決定的な違いが浮き彫りになっています:PrinceXMLではファイル入力が必要なので、変換前に一時ファイル(File.WriteAllText("temp.html", html))を作成する必要があります。 IronPDFのRenderHtmlAsPdf()はHTML文字列を直接受け取ります-テンポラリファイル、クリーンアップコード、ディスクI/Oオーバーヘッドはありません。 CSSページングされたメディアを移行する PrinceXMLのCSS Paged Mediaのサポートは強力ですが、Prince固有のCSSを使用するため、ベンダーロックインが発生します: PrinceXML CSS: @page { size: A4; margin: 2cm; @top-center { content: "Document Title"; } @bottom-right { content: counter(page); } } /* Prince-specific extensions */ prince-pdf-page-label: "Chapter " counter(chapter); prince-pdf-destination: attr(id); IronPDF C# (相当):。 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 56; // ~2cm renderer.RenderingOptions.MarginBottom = 56; renderer.RenderingOptions.MarginLeft = 56; renderer.RenderingOptions.MarginRight = 56; renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:center;'>Document Title</div>", MaxHeight = 40 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>", MaxHeight = 25 }; renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 56; // ~2cm renderer.RenderingOptions.MarginBottom = 56; renderer.RenderingOptions.MarginLeft = 56; renderer.RenderingOptions.MarginRight = 56; renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:center;'>Document Title</div>", MaxHeight = 40 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>", MaxHeight = 25 }; $vbLabelText $csharpLabel よくある CSS 移行の問題 課題1: CSSの@ページが動作しない。 IronPDFはChromiumを使用しており、@ページのサポートに制限があります。 CSSルールをRenderingOptionsに変換する。 課題2:ページの余白ボックスが見つからない CSSのマージンボックス(@top-center, @bottom-right)は、プリンス特有のものです。 代わりにHtmlHeader/HtmlFooterを使用してください。 問題3: 文字列セット/コンテンツが動作しない。 string-set CSS プロパティは、Prince 固有のものです。 <title>タグの{html-title}プレースホルダを使用してください: <title>Chapter 1: Introduction</title> <title>Chapter 1: Introduction</title> HTML renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = "<div>{html-title}</div>" }; renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = "<div>{html-title}</div>" }; $vbLabelText $csharpLabel 課題4:カウンター(ページ)が間違っている。 CSSカウンターの代わりにIronPDFの{total-pages}プレースホルダーを使用してください。 パフォーマンス比較 手術 PrinceXML IronPDF ノート シンプルなHTML ~400ms ~300ms IronPDF インプロセス 複雑なCSS ~600ms ~400ms プロセスのオーバーヘッドなし JavaScriptページ 制限的 ~500ms JSフルサポート 大型文書 ~1500ms ~1000ms 記憶力の向上 コンカレント (10) ~4000ms ~1500ms スレッドプール スタートアップのオーバーヘッド ~200ms ~50ms プロセス・スポーンなし 移行後の新機能 IronPDFに移行することで、PrinceXMLでは提供できない機能を得ることができます: PDFマージ var pdf1 = PdfDocument.FromFile("chapter1.pdf"); var pdf2 = PdfDocument.FromFile("chapter2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("complete_book.pdf"); var pdf1 = PdfDocument.FromFile("chapter1.pdf"); var pdf2 = PdfDocument.FromFile("chapter2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("complete_book.pdf"); $vbLabelText $csharpLabel ウォーターマーク pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>"); pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>"); $vbLabelText $csharpLabel デジタル署名 var signature = new PdfSignature("certificate.pfx", "password"); pdf.Sign(signature); var signature = new PdfSignature("certificate.pfx", "password"); pdf.Sign(signature); $vbLabelText $csharpLabel フォーム入力 var pdf = PdfDocument.FromFile("form.pdf"); pdf.Form.GetFieldByName("Name").Value = "John Doe"; pdf.SaveAs("filled_form.pdf"); var pdf = PdfDocument.FromFile("form.pdf"); pdf.Form.GetFieldByName("Name").Value = "John Doe"; pdf.SaveAs("filled_form.pdf"); $vbLabelText $csharpLabel 機能比較の概要 フィーチャー PrinceXML IronPDF .NET ネイティブ なし はい 外部プロセス 必須 なし 非同期サポート マニュアルラッピング ネイティブasync/await CSSページングメディア フルサポート レンダリングオプション経由 CSSグリッド はい はい フレックスボックス はい はい JavaScript 制限的 フルES2024 世代 はい はい マージ なし はい 分割 なし はい 編集 なし はい 透かし CSSのみ HTML/CSS + API デジタル署名 なし はい PDF/A はい はい 暗号化 はい はい フォーム なし はい NuGetパッケージ なし はい サーバーインストール 必須 なし 移行チェックリスト 移行前 すべてのPrinceコマンドライン呼び出しを識別する 使用されるドキュメント CSS @page ルール Prince固有のCSSプロパティ( prince-* 、 string-set )を一覧表示します。 PrinceのJavaScript関数をメモする 使用されているPDF機能(暗号化、メタデータ)を特定する ironpdf.comからIronPDFライセンスキーを取得します コードの変更 PrinceXMLWrapper NuGet パッケージを削除する IronPdf NuGetパッケージをインストールする 名前空間のインポートを更新する Princeインスタンス化をChromePdfRendererに置き換える prince.Convert()をRenderHtmlFileAsPdf()またはRenderHtmlAsPdf()に置き換えます セッターメソッドをRenderingOptionsプロパティに変換する @page CSS をRenderingOptionsに移行する マージンボックスをHtmlHeader / HtmlFooterに置き換える CSS カウンターを{page} / {total-pages}プレースホルダーに変換する HTML文字列の一時ファイル処理を削除 アプリケーションの起動時にライセンスの初期化を追加 移行後 HTMLファイルの変換をテストする HTML文字列の変換をテストする URL変換をテストする ページサイズが一致していることを確認する 余白が一致していることを確認する ヘッダーとフッターをテストする ページ番号を確認する 暗号化/セキュリティのテスト サーバーからPrinceのインストールを削除する デプロイメントスクリプトを更新する カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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#でPuppeteerSharpからIronPDFに移行する方法C#でPlaywrightから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む