比較

PdfPig vs IronPDF:技術比較ガイド

.NET開発者がPDFファイルを扱う場合、PDF文書の読み取り、抽出、生成などのタスクを処理できるライブラリを探すことがよくあります。 利用可能な選択肢の中で、pdfpigは主にPDFからのコンテンツの読み取りと抽出に焦点を当てたツールとして知られています。 この比較では、pdfpigとIronPDFを比較し、アーキテクチャ、機能の完全性、様々なアプリケーションのニーズへの適合性の違いを検証します。

PdfPigとは何ですか?

PdfPigは、C#用に特別に設計されたオープンソースのPDF読み取り・抽出ライブラリです。 開発者がPDFコンテンツに正確にアクセスできるようにし、PDFファイルからテキスト、画像、フォームデータ、メタデータを抽出するためのツールを提供します。 Apache 2.0ライセンスのもとでライセンスされているpdfpigは、オープンソースであると同時にビジネスフレンドリーでもあり、プロプライエタリなアプリケーションの一部としての改変や配布が可能です。

pdfpigは抽出機能に優れていますが、その範囲は既存の文書の解析に限られています。 ライブラリは、HTML、URL、プログラムからPDFを作成することはできません。

pdfpigの主な特徴は以下の通りです:

  • 読み取り専用: PDFの解析と抽出のために特別に設計されています。
  • オープンソース: Apache 2.0ライセンス。
  • 位置データを含むテキスト抽出:位置データを含むテキストを正確に抽出し、文字フォントを慎重に扱います。
  • 単語レベル解析:レイアウト解析のための単語バウンディングボックスを提供します。
  • 純粋な.NET: ネイティブの依存関係はなく、.NETが動作する場所であればどこでも動作します。
  • 1-ベース・ページ・インデックス:ページは1-ベース・インデックスを使用してアクセスされます。

IronPDFとは何ですか?

IronPDFは、完全なPDFライフサイクル管理を提供する.NETライブラリです。 ChromePdfRenderer クラスは HTML から PDF への変換に最新の Chromium ベースのエンジンを使用し、PdfDocument クラスは広範な操作と抽出機能を提供します。

IronPDFはpdfpigの読み込み専用とは異なり、PDFの生成と抽出の両方をサポートし、PDF関連の様々なタスクに柔軟に対応します。 このライブラリは、HTMLやURLからの作成、テキスト抽出、文書操作、マージ、透かし、セキュリティ機能、電子署名など、すべてを1つのライブラリ内で処理します。

アーキテクチャの比較

pdfpigとIronPdfの主な違いは、そのスコープにあります: 読み取り専用と完全なPDFライフサイクル管理です。

アスペクトPdfPigIronPDF
主な焦点読解/抽出PDFの全ライフサイクル
PDFの作成非常に限定的包括的
HTMLからPDFへサポートされていませんフルChromiumエンジン
URLからPDFへサポートされていませんサポート対象
テキスト抽出優秀優秀
画像抽出はいはい
メタデータアクセスはいはい
PDF操作サポートされていませんマージ、分割、回転
ウォーターマークサポートされていませんサポート対象
セキュリティ/暗号化サポートされていませんサポート対象
フォーム入力サポートされていませんサポート対象
デジタル署名サポートされていませんサポート対象
ページ索引1ベース0ベース
ライセンスアパッチ2.0(無料)商用
サポートコミュニティプロフェッショナル

PDFの読み取りとテキスト抽出のみを必要とするアプリケーションでは、pdfpigは優れた機能を提供します。 IronPDFはPDF生成、ドキュメント操作、あらゆる作成機能を必要とするアプリケーションに完全なソリューションを提供します。

テキスト抽出の比較

テキスト抽出は、API設計に顕著な違いがあるものの、この共通のワークフローにおける両ライブラリの強みを示しています。

PdfPigのテキスト抽出アプローチ:

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}
Imports UglyToad.PdfPig
Imports System
Imports System.Text

Class Program
    Shared Sub Main()
        Using document = PdfDocument.Open("input.pdf")
            Dim text = New StringBuilder()
            For Each page In document.GetPages()
                text.AppendLine(page.Text)
            Next
            Console.WriteLine(text.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

PdfPigは、適切な廃棄のためにusingステートメントを必要とし、GetPages()によってページを反復し、StringBuilderによって手動でテキストを集約します。 page.Textプロパティは、各ページのテキストコンテンツを提供します。

IronPDFのExtractAllText()メソッドは、手動での繰り返しや廃棄パターンを必要とせず、一度の呼び出しですべてのページからすべてのテキストを抽出します。 ページごとの抽出のために、IronPDFはExtractTextFromPage(index)を提供しています。 APIの違いに注意してください: pdfpigはPdfDocument.Open()を使い、IronPDFはPdfDocument.FromFile()を使います。

HTMLからPDFへの変換

HTMLからPDFへの変換は、これらのライブラリ間の基本的な能力差を示しています。

PdfPigのHTMLからPDFへのアプローチ:

//PdfPigdoes not support HTML to PDF conversion
//PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library for HTML to PDF conversion
//PdfPigdoes not support HTML to PDF conversion
//PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library for HTML to PDF conversion
'PdfPig does not support HTML to PDF conversion
'PdfPig is a PDF reading/parsing library, not a PDF generation library
' You would need to use a different library for HTML to PDF conversion
$vbLabelText   $csharpLabel

IronPDFのHTMLからPDFへのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

PdfPigはHTMLからPDFを作成することはできません。 このライブラリは、既存のPDF文書の読み取りと解析専用に設計されており、新しいPDF文書を生成することはできません。

IronPDFのChromePdfRendererは最新のChromiumエンジンを使ってHTMLコンテンツを変換し、CSS3とJavaScriptを完全にサポートします。 HTMLからPDFへの変換パターンに関する詳しいガイダンスについては、HTML to PDF tutorialをご覧ください。

PDFメタデータアクセス

PDFのメタデータを読むと、異なるAPIパターンで同様の機能があることがわかります。

PdfPigメタデータの読み方:

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}
Imports UglyToad.PdfPig
Imports System

Class Program
    Shared Sub Main()
        Using document = PdfDocument.Open("input.pdf")
            Dim info = document.Information
            Console.WriteLine($"Title: {info.Title}")
            Console.WriteLine($"Author: {info.Author}")
            Console.WriteLine($"Subject: {info.Subject}")
            Console.WriteLine($"Creator: {info.Creator}")
            Console.WriteLine($"Producer: {info.Producer}")
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}")
        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");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")
        Dim info = pdf.MetaData
        Console.WriteLine($"Title: {info.Title}")
        Console.WriteLine($"Author: {info.Author}")
        Console.WriteLine($"Subject: {info.Subject}")
        Console.WriteLine($"Creator: {info.Creator}")
        Console.WriteLine($"Producer: {info.Producer}")
        Console.WriteLine($"Number of Pages: {pdf.PageCount}")
    End Sub
End Class
$vbLabelText   $csharpLabel

どちらのライブラリも、標準的なPDFメタデータプロパティへのアクセスを提供します。 PdfPigはdocument.Informationを使用し、IronPDFはpdf.MetaDataを使用します。 ページカウントは、pdfpigではdocument.NumberOfPagesでアクセスされ、IronPDFではpdf.PageCountでアクセスされます。

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

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

ドキュメントの読み込み

PdfPigIronPDF
PdfDocument.Open(パス)PdfDocument.FromFile(パス)
PdfDocument.Open(bytes).PdfDocument.FromBinaryData(bytes)PdfDocument.FromBinaryData(bytes)
PdfDocument.Open(stream)を実行します。PdfDocument.FromStream(stream)PdfDocument.FromStream(stream)
using (var doc = ...).var pdf = ...

ページへのアクセス

PdfPigIronPDF
ドキュメント.ページ数</codepdf.PageCount</code
document.GetPages()pdf.Pages</code
document.GetPage(1)</codepdf.Pages[0]</code
ページ.テキスト</codepdf.Pages[i].Text
page.GetWords()</codepdf.ExtractTextFromPage(i)のようにします。

メタデータ

PdfPigIronPDF
ドキュメント.情報.タイトルpdf.MetaData.Title</code
ドキュメント.情報.作成者</codepdf.MetaData.Author</code
ドキュメント.情報.件名pdf.MetaData.Subject</code
ドキュメント.インフォメーション.クリエーターpdf.MetaData.Creator</code
ドキュメント.情報.プロデューサー</codepdf.MetaData.Producer</code

PdfPigで利用できない機能

IronPDFの特徴翻訳内容
renderer.RenderHtmlAsPdf(html).HTMLからPDFを作成
renderer.RenderUrlAsPdf(url)のようにします。URLからPDFを作成
PdfDocument.Merge(pdfs).複数のPDFを結合
pdf.CopyPages(start, end).特定のページを抜粋
pdf.ApplyWatermark(html).透かしの追加
pdf.SecuritySettings.UserPasswordパスワード保護
pdf.Sign(証明書)</codeデジタル署名
pdf.Form.GetFieldByName(name).Valueフォーム入力

IronPDFのこれらの追加機能は、読み取りだけでなく、完全なPDFライフサイクル管理を提供します。 PDF操作機能については、PDFのマージと分割ガイドを参照してください。

ページ インデックスの違い

pdfpigは1ベースのページインデックスを使用し、IronPDFは0ベースのインデックスを使用しています。

PdfPigページへのアクセス:

// PdfPig:1ベースindexing
var firstPage = document.GetPage(1);  // First page
var secondPage = document.GetPage(2); // Second page
// PdfPig:1ベースindexing
var firstPage = document.GetPage(1);  // First page
var secondPage = document.GetPage(2); // Second page
' PdfPig:1ベースindexing
Dim firstPage = document.GetPage(1)  ' First page
Dim secondPage = document.GetPage(2) ' Second page
$vbLabelText   $csharpLabel

IronPDFページへのアクセス:

// IronPDF:0ベースindexing
var firstPage = pdf.Pages[0];  // First page
var secondPage = pdf.Pages[1]; // Second page
// IronPDF:0ベースindexing
var firstPage = pdf.Pages[0];  // First page
var secondPage = pdf.Pages[1]; // Second page
' IronPDF:0ベースindexing
Dim firstPage = pdf.Pages(0)  ' First page
Dim secondPage = pdf.Pages(1) ' Second page
$vbLabelText   $csharpLabel

この違いは、特定のページを参照するコードを移行する際に慎重な注意を必要とします。

単語の位置データ

pdfpigが明らかに優れている点は、単語レベルの位置データを提供できることです。

PdfPigのワードポジション:

using (var document = PdfDocument.Open("input.pdf"))
{
    foreach (var page in document.GetPages())
    {
        var words = page.GetWords();
        foreach (var word in words)
        {
            //PdfPigprovides bounding box coordinates
            Console.WriteLine($"Word: '{word.Text}' at ({word.BoundingBox.Left}, {word.BoundingBox.Top})");
        }
    }
}
using (var document = PdfDocument.Open("input.pdf"))
{
    foreach (var page in document.GetPages())
    {
        var words = page.GetWords();
        foreach (var word in words)
        {
            //PdfPigprovides bounding box coordinates
            Console.WriteLine($"Word: '{word.Text}' at ({word.BoundingBox.Left}, {word.BoundingBox.Top})");
        }
    }
}
Imports System

Using document = PdfDocument.Open("input.pdf")
    For Each page In document.GetPages()
        Dim words = page.GetWords()
        For Each word In words
            'PdfPig provides bounding box coordinates
            Console.WriteLine($"Word: '{word.Text}' at ({word.BoundingBox.Left}, {word.BoundingBox.Top})")
        Next
    Next
End Using
$vbLabelText   $csharpLabel

PdfPigのword.BoundingBoxは、各単語の正確な位置データを提供し、レイアウト分析、表検出、文書構造の理解を可能にします。 IronPDFは位置データなしでテキストを抽出します。単語レベルの座標が不可欠な場合は、両方のライブラリを使用したハイブリッドアプローチを検討してください。

廃棄パターンの違い

ライブラリはメモリ管理要件が異なります。

PdfPigの処分(必須):

//PdfPigrequires using statement for proper disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // Work with document
}
//PdfPigrequires using statement for proper disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // Work with document
}
' PdfPig requires Using statement for proper disposal
Using document = PdfDocument.Open("input.pdf")
    ' Work with document
End Using
$vbLabelText   $csharpLabel

IronPDFの処分(オプション):

//IronPDFdoesn't require using statement
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
// Dispose optional: pdf.Dispose();
//IronPDFdoesn't require using statement
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
// Dispose optional: pdf.Dispose();
Dim pdf = PdfDocument.FromFile("input.pdf")
' Work with pdf
' Dispose optional: pdf.Dispose()
$vbLabelText   $csharpLabel

PdfPigは適切なリソースのクリーンアップのためにusingパターンを必要とします。IronPDFのPdfDocumentは明示的な廃棄を必要としませんが、必要に応じて廃棄することができます。

機能比較の概要

pdfpigとIronPDFの違いは、PDFの読み取り以外のほぼ全ての操作に及びます。

フィーチャーPdfPigIronPDF
ライセンスオープンソース(Apache 2.0)商用
PDFの読み取り/抽出優秀優秀
PDFジェネレーション制限的包括的
HTMLからPDFへサポート対象外サポート対象
URLからPDFへサポート対象外サポート対象
PDFをマージするサポート対象外サポート対象
PDFを分割するサポート対象外サポート対象
ウォーターマークサポート対象外サポート対象
パスワード保護サポート対象外サポート対象
デジタル署名サポート対象外サポート対象
フォーム入力サポート対象外サポート対象
ワードポジションデータサポート対象サポート対象外
サポートとドキュメンテーションコミュニティサポート専用サポート
費用無料有料

透かし、PDFマージ、セキュリティ機能を必要とするアプリケーションは、pdfpigだけでは実現できません。

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

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

PDF作成の要件: PdfPigはHTMLやURL、プログラムからPDFを作成することはできません。 ウェブコンテンツやテンプレートからPDFを生成する必要があるアプリケーションには、追加のライブラリ、またはIronPDFの完全なソリューションが必要です。

Document Manipulation Needs:PdfPigは PDF を結合、分割、修正することはできません。 ドキュメントの組み立てや変更を必要とするアプリケーションはIronPDFの操作機能を必要とします。

セキュリティ要件:PdfPigはパスワード、暗号化、デジタル署名を追加できません。 セキュリティが要求されるアプリケーションにはIronPdfのセキュリティ機能が必要です。

透かしとブランディング:PdfPigは既存のドキュメントに視覚的なオーバーレイを追加することはできません。 ドキュメントのブランディングを必要とするアプリケーションには、IronPDFの透かし機能が必要です。

プロフェッショナルなサポート:PdfPigはコミュニティからのサポートに依存しています。 保証されたレスポンスタイムとプロフェッショナルな支援を必要とする組織は、IronPDFの商用サポートをご利用いただけます。

ハイブリッドアプローチ:いくつかのチームは、単語の位置を含む詳細なテキスト解析のためにPDFpig、生成と操作のためにIronPdfという2つのライブラリを使用しています。 このアプローチでは、各ライブラリの強みを活用します。

インストールの比較

PdfPigのインストール:

Install-Package PdfPig
Install-Package PdfPig
SHELL

ネイティブ依存のない純粋な.NET。

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

IronPDFの最初の実行はChromiumレンダリングエンジンをダウンロードします(~150MBワンタイム)。 Linuxのデプロイには、追加の依存関係が必要です。 このライブラリは、.NET Framework、.NET Core、.NET 5+、および.NET 10とC# 14への前方互換性をサポートしています。

決定する

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

PdfPigをご検討ください:主なニーズは、確かな抽出と読み取り機能であり、レイアウト分析のために単語レベルの位置データが必要であり、オープンソースライセンスで費用対効果の高いソリューションが必要であり、PDFの生成や操作は必要ありません。

以下のような場合にIronPDFをご検討ください: HTMLからPDFへの変換を含む包括的なPDFライフサイクルサポートが必要な場合、プロジェクトでPDFの作成と編集機能が必要な場合、ドキュメントの操作(結合、分割、透かし)が必要な場合、セキュリティ機能(パスワード、暗号化、署名)が必要な場合、商用ライセンスに裏打ちされたプロフェッショナルなサポートが必要な場合。

両方を考慮する: PDF生成による高度なテキスト分析には、pdfpigのワードポジション機能とIronPDFの作成・操作機能を活用するハイブリッドアプローチがあります。

IronPDFを始めよう

お客様のPDFニーズにIronPDFを評価する:

1.NuGet経由でインストールします:IronPdfをインストールします。 2.使い始めのドキュメントを確認してください。 3.作成パターンについては、HTML to PDF チュートリアルを参照してください。 4.完全なメソッドのドキュメントについては、APIリファレンスを確認してください。

IronPDFチュートリアルは、基本的な変換から高度なPDF操作まで、一般的なシナリオをカバーする包括的な例を提供します。

PdfPigとIronPDFは.NET PDFエコシステムにおいて基本的に異なる目的を果たします。 PdfPigはPDFの読み取りとテキスト抽出に優れており、ドキュメントを正確に解析し、レイアウト分析のために単語レベルの位置データを提供します。 IronPDFは単一のライブラリで作成、抽出、操作、セキュリティをカバーする完全なPDFソリューションを提供します。

PDFの読み取りだけを必要とするアプリケーションには、オープンソースライセンスを使用したpdfpigの集中的なアプローチが適切かもしれません。 PDFの生成、ドキュメントの操作、読み込み以外の作成機能を必要とするアプリケーションに対して、IronPDFは追加のライブラリを必要とせずにこれらの機能をネイティブに提供します。

この決定は、現在の要件だけでなく、予想されるニーズにも及びます。 pdfpigが読み取りと抽出の領域で優れているのに対し、IronPDFは汎用性と包括的なPDF管理で優れています。 多くの組織は、最初は読み取りの要件から始めますが、生成や操作の要件に拡張していくため、最初からIronPDFを選択することで、プロフェッショナルなサポートと積極的な開発を保証しながら、これらの拡張要件に対応する基盤を提供します。

これらのライブラリのいずれかを選択する際には、現在および予測されるPDF要件全体を評価してください。 pdfpigの読み取り専用という性質は、アプリケーションの成熟と要件の拡大に伴って明らかになる能力の境界を生み出します。