比較

MuPDF vs IronPDF:技術比較ガイド

.NET開発者がPDFドキュメントを扱う必要がある場合、MuPDFのような特殊なレンダリングライブラリ、またはIronPDFのような完全なPDFソリューションという2つの異なるアプローチに直面します。 この比較では、開発者、アーキテクト、技術的な意思決定者がPDFワークフローに適したツールを選択できるように、主要な技術的側面にわたって両ライブラリを比較します。

MuPDFとは何ですか?

MuPDFはもともとC#で書かれた軽量で高性能なPDFレンダリングライブラリで、.NETバインディングはMuPDF.NETのようなパッケージで利用できます。 このライブラリは、卓越した速度と品質でPDF文書の表示とレンダリングに優れているため、文書の表示に重点を置いたアプリケーションに人気があります。

MuPDFのデザインはレンダリング性能を重視しています。 このライブラリは、PDFファイルをすばやく読み込み、ページをさまざまな解像度の画像にレンダリングすることができます。 また、既存のドキュメントからコンテンツを読み取るためのテキスト抽出機能も提供します。

ただし、MuPDFは基本的にレンダラであり、PDFの作成や操作のツールではありません。 ライブラリは、HTML、URL、その他のソースコンテンツからPDFを生成することはできません。 さらに、MuPDFはネイティブバインディングで動作するため、Windows、Linux、macOSの展開にはプラットフォーム固有のバイナリファイルが必要です。

このライブラリはAGPLライセンスの下で配布されており、これを使用するアプリケーションをオープンソース化するか、プロプライエタリなソフトウェアの商用ライセンスを購入する必要があります。

IronPDFとは何ですか?

IronPDFは、作成、レンダリング、操作、処理といったPDFワークフローのために設計された完全な.NETライブラリです。 IronPdfは閲覧のみに焦点を当てるのではなく、HTMLからPDFを生成し、ドキュメントをマージし、テキストを抽出し、透かしを追加し、パスワードや電子署名でドキュメントを保護するための統一されたソリューションを提供します。

ChromePdfRenderer クラスは、埋め込まれた Chromium エンジンを使用して、HTML、CSS、JavaScript を忠実度の高い PDF ドキュメントに変換します。 PdfDocumentクラスは、既存のPDFに対して広範な操作機能を提供します。

IronPdfは完全に管理された.NETコードであり、プラットフォーム固有のネイティブバイナリの必要性を排除し、Windows、Linux、macOS環境への展開を簡素化します。

コア機能の比較

MuPDFとIronPdfの基本的な違いはそのスコープにあります。 MuPDFはレンダリングに秀でており、IronPDFは完全なPDFソリューションを提供します。

フィーチャーMuPDFIronPDF
主な焦点レンダリング/ビューイング完全なPDFソリューション
ライセンスAGPLまたは商用商用
HTMLからPDFへサポートされていませんフルChromiumエンジン
PDFの作成サポートされていませんHTML、URL、画像
PDF操作制限的フル(マージ、分割、編集)
ネイティブの依存関係はいなし(フルマネージド)
マネージド・コードなしはい
レンダリング品質について高い高い

既存のPDFを表示するだけのチームには、MuPDFのレンダリング機能で十分かもしれません。 しかし、ほとんどのビジネスアプリケーションは、PDFの生成、操作、またはその両方を必要とします。

HTMLからPDFへの変換

最も重要な機能の違いの1つは、HTMLからPDFへの変換です。 MuPDFはこの機能を全くサポートしていません。

MuPDFアプローチ(サポートされていません):

// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML to 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 direct HTML to PDF conversion");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML to 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 direct HTML to PDF conversion");
    }
}
Imports MuPDFCore
Imports System.IO

Class Program
    Shared Sub Main()
        'MuPDF doesn't support HTML to PDF conversion directly
        ' You would need to use another library to convert HTML to a supported format first
        ' This is a limitation - MuPDF is primarily a PDF renderer/viewer

        ' Alternative: Use a browser engine or intermediate conversion
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        ' Not natively supported in MuPDF
        Throw New NotSupportedException("MuPDF does not support direct HTML to PDF conversion")
    End Sub
End Class
$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");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

この制限は、PDF生成を必要とするMuPDFベースのアプリケーションが、追加のライブラリや外部ツールを統合しなければならず、複雑さとメンテナンスの負担が増えることを意味します。 IronPDFのHTMLからPDFへの変換はCSSとJavaScriptを完全にサポートし、これをネイティブに処理します。

テキスト抽出

どちらのライブラリも、APIアプローチは異なりますが、PDF文書からのテキスト抽出をサポートしています。

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());
        }
    }
}
Imports MuPDFCore
Imports System
Imports System.Text

Class Program
    Shared Sub Main()
        Using document As New MuPDFDocument("input.pdf")
            Dim allText As New StringBuilder()

            For i As Integer = 0 To document.Pages.Count - 1
                Dim pageText As String = document.Pages(i).GetText()
                allText.AppendLine(pageText)
            Next

            Console.WriteLine(allText.ToString())
        End Using
    End Sub
End Class
$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);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")
        Dim text As String = pdf.ExtractAllText()

        Console.WriteLine(text)
    End Sub
End Class
$vbLabelText   $csharpLabel

MuPDFでは、ページを個別に繰り返し、StringBuilderでテキストを手動で構築し、ドキュメントオブジェクトを適切に廃棄する必要があります。 IronPdfはExtractAllText()メソッドを提供し、一回の呼び出しですべてのドキュメントテキストを返します。

ページごとの抽出が必要な場合、IronPDFはExtractTextFromPage(index)pdf.Pages[i].Textによる個々のページのテキストへのアクセスもサポートしています。

PDFドキュメントのマージ

PDFのマージは、これらのライブラリ間のAPIの複雑さの違いを示しています。

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");
            }
        }
    }
}
Imports MuPDFCore
Imports System.IO

Class Program
    Shared Sub Main()
        Using doc1 As New MuPDFDocument("file1.pdf"),
              doc2 As New MuPDFDocument("file2.pdf")

            ' Create a new document
            Using mergedDoc As MuPDFDocument = MuPDFDocument.Create()
                ' Copy pages from first document
                For i As Integer = 0 To doc1.Pages.Count - 1
                    mergedDoc.CopyPage(doc1, i)
                Next

                ' Copy pages from second document
                For i As Integer = 0 To doc2.Pages.Count - 1
                    mergedDoc.CopyPage(doc2, i)
                Next

                mergedDoc.Save("merged.pdf")
            End Using
        End Using
    End Sub
End Class
$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");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("file1.pdf")
        Dim pdf2 = PdfDocument.FromFile("file2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

MuPDFのアプローチでは、新しいドキュメントを作成し、両方のソースドキュメントを手作業で繰り返し、一度に1ページずつコピーし、適切に廃棄するために複数のusingステートメントを管理する必要があります。 IronPdfの静的なMerge()メソッドは1行ですべての操作を処理します。

IronPDFのPDFマージ機能は単純な連結だけでなく、特定の位置にページを挿入したり、ページ範囲を抽出したり、ページを削除したりすることができます。

APIマッピングリファレンス

MuPDFからIronPDFへの移行を検討しているチームにとって、APIマッピングを理解することは移行にかかる労力を見積もるのに役立ちます。

ドキュメントの読み込み

MuPDFIronPDF
new MuPDFDocument(path).PdfDocument.FromFile(パス)
new MuPDFDocument(stream).PdfDocument.FromStream(stream)PdfDocument.FromStream(stream)
new MuPDFDocument(bytes).new PdfDocument(bytes).
document.Pages.Count</codepdf.PageCount</code
ドキュメント.ページ[インデックス]pdf.Pages[index]</code

テキストとレンダリング

MuPDFIronPDF
page.GetText()</codeページ.テキスト</code
document.Pages.Select(p => p.GetText())のようにします。pdf.ExtractAllText()を使用してください。
page.RenderPixMap(dpi、dpi、alpha)pdf.RasterizeToImageFiles(path, dpi).

PDF作成(IronPDFのみ)

MuPDFIronPDF
(サポートされていません)ChromePdfRenderer.RenderHtmlAsPdf(html).
(サポートされていません)ChromePdfRenderer.RenderUrlAsPdf(url).
(サポートされていません)PdfDocument.Merge(pdf1, pdf2).
(サポートされていません)pdf.ApplyWatermark(html).
(サポートされていません)pdf.SecuritySettings</code

デプロイメントと依存関係

MuPDFのネイティブバインディングアーキテクチャはIronPDFのマネージドコードが避ける複雑なデプロイメントをもたらします。

MuPDFの導入要件:

  • プラットフォーム固有のネイティブバイナリ(mupdf.dlllibmupdf.solibmupdf.dylib)。
  • 各ターゲットプラットフォームのランタイムフォルダの手動管理
  • ネイティブライブラリのインストールによるDockerの複雑さ
  • プラットフォーム固有のバグとマーシャリングのオーバーヘッドの可能性

IronPDFの展開:

  • 単一のNuGetパッケージ
  • 完全に管理された.NETコード
  • 自動クロスプラットフォーム対応
  • ネイティブ・バイナリ管理なし

コンテナ、クラウド環境、複数のオペレーティングシステムにデプロイするチームにとって、IronPDFのマネージドアーキテクチャはCI/CDパイプラインを大幅に簡素化し、デプロイ関連の問題を軽減します。

ライセンスに関する考慮事項

ライセンスモデルは、これらのライブラリによって大きく異なります。

アスペクトMuPDF AGPLMuPDF コマーシャルIronPDF
オープンソースアプリ無料不要ライセンスが必要
独自アプリオープンソースであること必須ライセンスが必要
SaaS アプリケーションオープンソースであること必須ライセンスが必要
価格無料営業担当公開価格
ソース開示必須不要不要

MuPDFのAGPLライセンスは、"バイラル"な要件を生み出します。MuPDFを使用するアプリケーションは、AGPLの下でオープンソース化されるか、商用ライセンスを購入しなければなりません。 商用ソフトウェア開発の場合、これは通常、Artifexに価格を問い合わせることを意味します。

IronPDFは商用ライセンスを提供し、予算計画のために予測可能なコストを提供します。

チームがMuPDFからIronPDFへの移行を検討するとき

チームがMuPDFの代替としてIronPDFを評価するのにはいくつかの要因があります:

PDF作成の要件: HTML、Webページ、または動的コンテンツからPDFを生成する必要があるアプリケーションは、MuPDFだけではこれを達成できません。 チームはwkhtmltopdfやヘッドレスブラウザのような追加ツールを統合し、結果を表示するためだけにMuPDFを使用しています。 IronPdfは単一のライブラリで作成と閲覧の両方を処理します。

ライセンスの明確さ:プロプライエタリなソフトウェアを構築している組織は、MuPDFのAGPLライセンスによって不確実性に直面します。 アプリケーションをオープンソース化するか、商業的な条件を交渉する必要があります。 IronPdfの商用ライセンスは、より明確なコストを提供します。

デプロイメントの簡素化: Windows、Linux、macOSのデプロイメント全体でネイティブバイナリを管理することは、運用の複雑さにつながります。 Dockerコンテナ、サーバーレス機能、マルチプラットフォームのデスクトップアプリを保守するチームは、IronPdfのフルマネージドアーキテクチャの恩恵を受けています。

機能の完全性: アプリケーションが進化するにつれ、チームは文書のマージ、透かしの追加、パスワードによるPDFの保護、電子署名の適用など、レンダリング以外の機能を必要とすることがよくあります。 MuPDFはこれらの機能を提供できませんが、IronPDFはこれらの機能を含んでいます。

API Simplicity:MuPDFでは複数のループや手作業での管理が必要な操作、例えばドキュメントのマージやすべてのテキストの抽出が、IronPDFでは単一のメソッド呼び出しになります。 これにより、コードの複雑さとメンテナンスの負担が軽減されます。

近代化計画: .NET 10とC# 14をターゲットとする新しいアプリケーションを構築するチームや、2026年までの開発を計画しているチームは、複数のツールを組み立てるよりも、PDFワークフロー全体をサポートするライブラリから始めることを好むかもしれません。

インストールの比較

MuPDFのインストール:

Install-Package MuPDF.NET
Install-Package MuPDF.NET
SHELL

Plusのプラットフォーム固有のネイティブバイナリをデプロイします。

IronPDFのインストール:

Install-Package IronPdf
Install-Package IronPdf
SHELL

IronPdfはアプリケーション起動時にライセンスキーの設定を必要とします:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

パフォーマンスの考慮事項

MuPDFのC#ベースのアーキテクチャは、特に文書閲覧シナリオにおいて優れたレンダリング性能を提供します。 IronPdfのChromiumエンジンは初回使用時に初期化のオーバーヘッドが発生しますが(通常1-3秒)、その後の操作は高速です。

作成や操作の必要がなく、純粋にPDFの高速閲覧に重点を置いたアプリケーションには、MuPDFのレンダリング性能が有利かもしれません。 PDF生成を必要とするアプリケーションでは、この比較は無意味になります。

決定する

MuPDFとIronPDFのどちらを選ぶかはアプリケーションの要件によります:

以下のような場合にMuPDFをご検討ください: あなたのアプリケーションは既存のPDFをレンダリングするだけで、作成の必要がなく、AGPLライセンスに準拠でき(アプリケーションをオープンソース化するか、商用ライセンスを購入する)、ターゲットプラットフォーム間でネイティブバイナリのデプロイメントを管理できます。

IronPDFを次のような場合にご検討ください: アプリケーションがHTMLや他のソースからPDFを作成する必要がある場合、PDFの操作機能(マージ、分割、透かし、セキュア)が必要な場合、ネイティブ依存のないマネージド.NETコードが必要な場合、完全なPDFワークフローのための単一のライブラリが必要な場合。

ほとんどのビジネスアプリケーションでは、レポート、請求書、Webコンテンツ、動的データからPDFを生成する機能が基本的な要件です。 MuPDFはレンダリングのみにフォーカスしているため、チームはPDF作成のための追加ツールを統合する必要があります。

IronPDFを始めよう

IronPDFをPDF処理のニーズに合わせて評価する:

1.IronPDF NuGetパッケージをインストールしてください:IronPdfパッケージをインストールしてください。 2.コンテンツ生成については、HTML to PDFチュートリアルをご覧ください。 3.文書処理のためのPDF操作機能を探る 4.チュートリアルセクションで包括的な例を確認してください。

IronPDFのドキュメントは、URLからPDFへの変換画像レンダリングセキュリティ設定を含む一般的なシナリオのための詳細なガイダンスを提供します。

MuPDFとIronPDFは.NET PDFエコシステムにおいて異なる役割を果たしています。MuPDFは、既存のドキュメントを表示するだけのアプリケーション向けの高性能レンダリングエンジンとして優れています。 IronPDFは単一のマネージドライブラリで作成、操作、レンダリングをカバーする完全なPDFソリューションを提供します。

HTMLテンプレート、Webコンテンツ、または動的データからPDFを生成するアプリケーションを構築するチームにとって、MuPDFのレンダリングのみの設計は、追加のツールの統合とネイティブの依存関係の管理を意味します。 IronPDFの統一されたアプローチはアーキテクチャを簡素化し、依存関係を減らし、MuPDFにはない機能を提供します。

PDFの作成、操作、ライセンス条件、展開の複雑さなど、特定の要件に照らし合わせて、両方のオプションを評価してください。 この比較で概説されている機能の違いを理解することで、アプリケーションのPDF処理ニーズに沿った、十分な情報に基づいた決定を下すことができます。