移行ガイド C#でMuPDFからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年1月25日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る なぜMuPDFからIronPDFに移行するのか MuPDFの課題 MuPDFは優れたPDFレンダラーですが、そのAGPLライセンスとレンダリングのみにフォーカスしているため、商用アプリケーションを構築する.NET開発者には大きな制限があります: AGPL ライセンスの罠:MuPDFのバイラル ライセンスでは、アプリケーション全体を AGPL の下でオープン ソース化するか、不透明なコンタクト セールス価格の高価な商用ライセンスを購入する必要があります。 2.レンダリングのみに焦点:MuPDFはビューア/レンダラーであり、HTML からの PDF 作成、ドキュメント生成ワークフロー、フォームの入力、透かしやヘッダー/フッターの追加用に設計されていません。 HTML をサポートしていません:MuPDFは HTML から PDF への直接変換をサポートしていません。 HTMLをサポートされている形式に変換するには、まず別のライブラリを使用する必要があります。これは基本的な制限です-MuPDFは主にPDFレンダラー/ビューアです。 4.ネイティブ依存関係:プラットフォーム固有のバイナリは、Windows、Linux、および macOS では手動で管理する必要があります。 Dockerのデプロイは、ネイティブライブラリの要件によって複雑になり、デプロイのパッケージングには課題が生じます。 5.操作の制限: PDF の結合/分割、ページの回転や並べ替え、透かしや注釈、デジタル署名などのサポートが組み込まれていません。 C 相互運用性の複雑さ:ネイティブ バインディングにより、メモリ管理の問題、プラットフォーム固有のバグ、およびマーシャリングのオーバーヘッドが発生します。 MuPDFとIronPDFの比較 フィーチャー MuPDF IronPDF ライセンス AGPL(ウィルス性)または高価な商用 透明性のある価格設定 主な対象 レンダリング/ビューイング 完全なPDFソリューション HTMLからPDFへ サポートされていません フルChromiumエンジン PDF作成 サポートされていません HTML、URL、画像 PDF操作 制限的 完成(マージ、分割、編集) 依存関係 ネイティブバイナリ 完全管理 プラットフォームサポート プラットフォームごとのマニュアル 自動翻訳 非同期サポート 制限的 完全なasync/await .NET統合 C# 相互接続 .NET ネイティブ 2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはネイティブのインターオプを複雑にすることなく、完全に管理された.NETライブラリとして将来を保証する基盤を提供します。 マイグレーションの複雑さの評価 機能別の見積もり作業 フィーチャー 移行の複雑さ ノート ドキュメントの読み込み 低レベル メソッドの直接置換 テキスト抽出 低レベル よりシンプルなAPI PDFマージ 低レベル 静的メソッドと手動ループの比較 画像レンダリング 低レベル RasterizeToImageFiles と pixmaps の比較 HTMLからPDFへ 該当なし(新機能) MuPDFでは不可 セキュリティ/ウォーターマーク 該当なし(新機能) MuPDFでは不可 パラダイムシフト このMuPDF移行における基本的な変化は、レンダリングのみのビューアから完全な PDF ソリューションへの変化です。 MuPDF: MuPDFContext → MuPDFDocument → ページ反復 → レンダー/抽出のみ IronPDF:PdfDocument.FromFile() → フル操作 → 作成/編集/マージ/セキュア 始める前に 前提条件 .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGetアクセス: NuGetパッケージをインストールする機能 IronPDFライセンス: ironpdf.comからライセンスキーを取得します。 NuGetパッケージの変更 # RemoveMuPDFpackages dotnet remove package MuPDF.NET dotnet remove package MuPDFCore dotnet remove package MuPDFCore.MuPDFWrapper # Install IronPDF dotnet add package IronPdf # RemoveMuPDFpackages dotnet remove package MuPDF.NET dotnet remove package MuPDFCore dotnet remove package MuPDFCore.MuPDFWrapper # Install IronPDF dotnet add package IronPdf SHELL また、配置からネイティブMuPDFバイナリを削除してください: mupdf.dll, libmupdf.so, libmupdf.dylib を削除してください。 プラットフォーム固有のフォルダ(runtimes/*/native/)を削除する。 Dockerファイルを更新してMuPDFのインストールを削除する ライセンス構成 // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel MuPDFの使用法を特定する # Find allMuPDFreferences grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" . # Find allMuPDFreferences grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" . SHELL 完全な API リファレンス ドキュメントの読み込み MuPDF IronPDF ノート new MuPDFDocument(path). PdfDocument.FromFile(パス)。 ファイルから読み込む new MuPDFDocument(stream). `PdfDocument.FromStream(stream)PdfDocument.FromStream(stream) ストリームから読み込む document.Dispose()。 pdf.Dispose()` クリーンアップ ページへのアクセス MuPDF IronPDF ノート document.Pages.Count pdf.PageCount ページ数 ドキュメント.ページ[インデックス] pdf.Pages[index] アクセスページ page.GetText() ページ.テキスト ページテキスト テキスト抽出 MuPDF IronPDF ノート document.Pages[i].GetText()をループする。 pdf.ExtractAllText()を使用してください。 すべてのテキストを一度に PDF作成 (MuPDFでは利用できません) MuPDF IronPDF ノート (サポートされていません) ChromePdfRenderer.RenderHtmlAsPdf(html). HTMLからPDFへ (サポートされていません) ChromePdfRenderer.RenderUrlAsPdf(url). URLからPDFへ PDFの操作 (MuPDFでの制限付き) MuPDF IronPDF ノート マニュアルページのコピーループ PdfDocument.Merge(pdf1, pdf2). PDFのマージ (サポートされていません) pdf.ApplyWatermark(html). 透かしを入れる (サポートされていません) pdf.SecuritySettings パスワード保護 コード移行の例 例 1: HTML から PDF への変換 (MuPDF ではできません) 翻訳前 (MuPDF): // NuGet: Install-Package MuPDF.NET using MuPDFCore; using System.IO; class Program { static void Main() { //MuPDFdoesn't supportHTMLからPDFへconversion directly // You would need to use another library to convert HTML to a supported format first // This is a limitation -MuPDFis primarily a PDF renderer/viewer // Alternative: Use a browser engine or intermediate conversion string html = "<html><body><h1>Hello World</h1></body></html>"; // Not natively supported in MuPDF throw new NotSupportedException("MuPDF does not support directHTMLからPDFへconversion"); } } // NuGet: Install-Package MuPDF.NET using MuPDFCore; using System.IO; class Program { static void Main() { //MuPDFdoesn't supportHTMLからPDFへconversion directly // You would need to use another library to convert HTML to a supported format first // This is a limitation -MuPDFis primarily a PDF renderer/viewer // Alternative: Use a browser engine or intermediate conversion string html = "<html><body><h1>Hello World</h1></body></html>"; // Not natively supported in MuPDF throw new NotSupportedException("MuPDF does not support directHTMLからPDFへconversion"); } } $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 この例では、MuPDFの最も重要な制限である、HTMLをPDFにまったく変換できないことを強調しています。 HTMLからPDFへの変換は単にMuPDFが提供する機能ではないため、MuPDFコードは明示的にNotSupportedExceptionをスローします。 MuPDFでこの機能が必要な場合、wkhtmltopdfのような別のライブラリやブラウザエンジンを使用し、その後MuPDFで結果のPDFを読み込んで表示する必要がありました。 IronPdfのChromePdfRendererは完全なChromiumエンジンを使用し、CSS3、JavaScript、最新のWeb標準を完全にサポートしたHTMLをレンダリングします。 RenderHtmlAsPdf()メソッドは、HTML文字列を直接受け入れます。 URLレンダリングやHTMLファイル変換を含むその他のレンダリングオプションについては、HTML to PDF documentationを参照してください。 例2: テキスト抽出 翻訳前 (MuPDF): // NuGet: Install-Package MuPDF.NET using MuPDFCore; using System; using System.Text; class Program { static void Main() { using (MuPDFDocument document = new MuPDFDocument("input.pdf")) { StringBuilder allText = new StringBuilder(); for (int i = 0; i < document.Pages.Count; i++) { string pageText = document.Pages[i].GetText(); allText.AppendLine(pageText); } Console.WriteLine(allText.ToString()); } } } // NuGet: Install-Package MuPDF.NET using MuPDFCore; using System; using System.Text; class Program { static void Main() { using (MuPDFDocument document = new MuPDFDocument("input.pdf")) { StringBuilder allText = new StringBuilder(); for (int i = 0; i < document.Pages.Count; i++) { string pageText = document.Pages[i].GetText(); allText.AppendLine(pageText); } Console.WriteLine(allText.ToString()); } } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); string text = pdf.ExtractAllText(); Console.WriteLine(text); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); string text = pdf.ExtractAllText(); Console.WriteLine(text); } } $vbLabelText $csharpLabel MuPDFのアプローチでは、MuPDFDocumentでusingブロックを作成し、document.Pages.Countをforループで手動で繰り返し、各ページに対してdocument.Pages[i].GetText()を呼び出し、StringBuilderでテキストを構築する必要があります。 これは単純なテキスト抽出のための12行のコードです。 IronPDFはこれを3行に減らします: PdfDocument.FromFile()でドキュメントをロードし、ExtractAllText()を呼び出し、結果をプリントします。 この単純な操作のために、手作業による反復も、StringBuilderも、``ブロックを使った明示的なリソース管理も必要ありません。 PDF からのテキスト抽出について詳しく学びます。 例3: 複数のPDFをマージする 翻訳前 (MuPDF): // NuGet: Install-Package MuPDF.NET using MuPDFCore; using System.IO; class Program { static void Main() { using (MuPDFDocument doc1 = new MuPDFDocument("file1.pdf")) using (MuPDFDocument doc2 = new MuPDFDocument("file2.pdf")) { // Create a new document using (MuPDFDocument mergedDoc = MuPDFDocument.Create()) { // Copy pages from first document for (int i = 0; i < doc1.Pages.Count; i++) { mergedDoc.CopyPage(doc1, i); } // Copy pages from second document for (int i = 0; i < doc2.Pages.Count; i++) { mergedDoc.CopyPage(doc2, i); } mergedDoc.Save("merged.pdf"); } } } } // NuGet: Install-Package MuPDF.NET using MuPDFCore; using System.IO; class Program { static void Main() { using (MuPDFDocument doc1 = new MuPDFDocument("file1.pdf")) using (MuPDFDocument doc2 = new MuPDFDocument("file2.pdf")) { // Create a new document using (MuPDFDocument mergedDoc = MuPDFDocument.Create()) { // Copy pages from first document for (int i = 0; i < doc1.Pages.Count; i++) { mergedDoc.CopyPage(doc1, i); } // Copy pages from second document for (int i = 0; i < doc2.Pages.Count; i++) { mergedDoc.CopyPage(doc2, i); } mergedDoc.Save("merged.pdf"); } } } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } $vbLabelText $csharpLabel MuPDFのマージ操作は特に冗長です。 入れ子になった using</code> ブロックで両方のソース ドキュメントを開き、<code>MuPDFDocument.Create() で新しい空のドキュメントを作成し、CopyPage() を呼び出して最初のドキュメントの各ページを繰り返し処理し、CopyPage() を呼び出して 2 番目のドキュメントの各ページを繰り返し処理し、最後に保存する必要があります。 複雑なネストを含む20行以上のコードです。 IronPDFの静的なPdfDocument.Merge()メソッドは複数のPDFドキュメントを受け入れ、単一のマージされたドキュメントを返します。 作業全体は4行の読みやすいコードです。 多数のドキュメントをマージするには、リストを渡します:PdfDocument.Merge(pdfList). その他のオプションについては、PDFのマージと分割のドキュメントを参照してください。 重要な移行に関する注意事項 ネイティブ バイナリの削除 MuPDFにはプラットフォーム固有のネイティブライブラリが必要です。 IronPDFに移行した後、すべてのMuPDFネイティブバイナリを削除してください: # Delete native libraries rm -f mupdf*.dll libmupdf*.so libmupdf*.dylib # Remove runtime folders rm -rf runtimes/*/native/ # Update Docker files to removeMuPDFinstallation # Delete native libraries rm -f mupdf*.dll libmupdf*.so libmupdf*.dylib # Remove runtime folders rm -rf runtimes/*/native/ # Update Docker files to removeMuPDFinstallation SHELL IronPdfは完全に管理された.NETコードです。プラットフォーム間で管理するネイティブバイナリはありません。 簡略化された Dispose パターン MuPDFは、明示的なコンテキストと文書管理を必要とします: // MuPDF: Nested using blocks required using (MuPDFDocument document = new MuPDFDocument("input.pdf")) { // Work with document } // IronPDF: Simpler pattern var pdf = PdfDocument.FromFile("input.pdf"); // Work with pdf // MuPDF: Nested using blocks required using (MuPDFDocument document = new MuPDFDocument("input.pdf")) { // Work with document } // IronPDF: Simpler pattern var pdf = PdfDocument.FromFile("input.pdf"); // Work with pdf $vbLabelText $csharpLabel ページの反復パターンの変更 MuPDFは、ページ数を明示したインデックスベースの反復を使用します: // MuPDF for (int i = 0; i < document.Pages.Count; i++) { var pageText = document.Pages[i].GetText(); } //IronPDF(foreach supported) foreach (var page in pdf.Pages) { var pageText = page.Text; } // MuPDF for (int i = 0; i < document.Pages.Count; i++) { var pageText = document.Pages[i].GetText(); } //IronPDF(foreach supported) foreach (var page in pdf.Pages) { var pageText = page.Text; } $vbLabelText $csharpLabel 新しい機能が利用可能です IronPDFに移行した後は、MuPDFでは提供できない機能を得ることができます: //PDF作成from HTML (not possible in MuPDF) var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>"); // Watermarks (not possible in MuPDF) pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>"); // Password Protection (not possible in MuPDF) pdf.SecuritySettings.OwnerPassword = "admin"; pdf.SecuritySettings.UserPassword = "user"; // Headers and Footers (not possible in MuPDF) pdf.AddTextHeader("Document Title"); pdf.AddTextFooter("Page {page} of {total-pages}"); //PDF作成from HTML (not possible in MuPDF) var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>"); // Watermarks (not possible in MuPDF) pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>"); // Password Protection (not possible in MuPDF) pdf.SecuritySettings.OwnerPassword = "admin"; pdf.SecuritySettings.UserPassword = "user"; // Headers and Footers (not possible in MuPDF) pdf.AddTextHeader("Document Title"); pdf.AddTextFooter("Page {page} of {total-pages}"); $vbLabelText $csharpLabel トラブルシューティング 問題 1: MuPDFDocument が見つかりません 問題: MuPDFDocumentクラスがIronPDFに存在しません。 解決策: PdfDocument.FromFile()を使用します。 // MuPDF using (MuPDFDocument document = new MuPDFDocument("input.pdf")) // IronPDF var pdf = PdfDocument.FromFile("input.pdf"); // MuPDF using (MuPDFDocument document = new MuPDFDocument("input.pdf")) // IronPDF var pdf = PdfDocument.FromFile("input.pdf"); $vbLabelText $csharpLabel 課題2:Pages.Countが見つかりません 問題: document.Pages.Countパターンが機能しません。 解決策: pdf.PageCountを使用します。 // MuPDF for (int i = 0; i < document.Pages.Count; i++) // IronPDF for (int i = 0; i < pdf.PageCount; i++) // Or use: foreach (var page in pdf.Pages) // MuPDF for (int i = 0; i < document.Pages.Count; i++) // IronPDF for (int i = 0; i < pdf.PageCount; i++) // Or use: foreach (var page in pdf.Pages) $vbLabelText $csharpLabel 問題 3: GetText() が見つかりません 問題: page.GetText()メソッドが存在しません。 解決策: page.Textプロパティまたはpdf.ExtractAllText()を使用します。 // MuPDF string pageText = document.Pages[i].GetText(); // IronPDF string pageText = pdf.Pages[i].Text; // Or for all text: string allText = pdf.ExtractAllText(); // MuPDF string pageText = document.Pages[i].GetText(); // IronPDF string pageText = pdf.Pages[i].Text; // Or for all text: string allText = pdf.ExtractAllText(); $vbLabelText $csharpLabel 課題4:コピーページが見つかりません 問題:マージ用の手動ページコピーパターン。 解決策:静的PdfDocument.Merge()を使用します。 // MuPDF mergedDoc.CopyPage(doc1, i); // IronPDF var merged = PdfDocument.Merge(pdf1, pdf2); // MuPDF mergedDoc.CopyPage(doc1, i); // IronPDF var merged = PdfDocument.Merge(pdf1, pdf2); $vbLabelText $csharpLabel 移行チェックリスト 移行前 コードベース内のすべてのMuPDFの使用状況をインベントリする すべてのレンダリング操作(DPI、スケール係数)を文書化する PDF 作成のニーズを特定する (現在は外部ツールを使用) テキスト抽出要件をリストする ネイティブバイナリ処理のデプロイメントスクリプトを確認する IronPDFライセンスキーを取得する パッケージの変更 MuPDF.NETパッケージを削除する MuPDFCoreパッケージを削除する MuPDFCore.MuPDFWrapperパッケージを削除します IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf 名前空間のインポートを更新する コードの変更 起動時にライセンスキー設定を追加する MuPDFDocument PdfDocument.FromFile()に置き換えます document.Pages.Countをpdf.PageCountに置き換えます page.GetText()をpage.Textまたはpdf.ExtractAllText()に置き換えます 手動のCopyPageループをPdfDocument.Merge()に置き換えます コンテキスト管理のためのネストされたusingブロックを削除する 必要に応じて PDF 作成コードを追加します (HTML から PDF) 移行後 プロジェクトからネイティブMuPDFバイナリを削除する Dockerファイルを更新してMuPDFのインストールを削除する プラットフォーム固有のランタイムフォルダを削除する レンダリングされた出力を比較する回帰テストを実行する すべてのターゲットプラットフォーム(Windows、Linux、macOS)でテスト 新しい機能(透かし、セキュリティ、ヘッダー/フッター)の追加を検討する カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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#でNReco PDFジェネレーターからIronPDFへ移行する方法C#でMigraDocから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む