フッターコンテンツにスキップ
移行ガイド

C#でPdfPigからIronPDFに移行する方法

PdfPigからIronPdfへの移行:完全なC#移行ガイド

PdfPigからIronPdfに移行することで、PDFの機能が閲覧のみのライブラリから、作成、操作、テキスト抽出、セキュリティ機能を扱う包括的なPDFソリューションに拡張されます。 このガイドでは、既存の抽出ワークフローを維持しながら、PdfPig では提供できない PDF 生成、HTML 変換、文書操作、セキュリティ機能を追加する完全な移行パスをステップごとに説明します。

なぜPdfPigからIronPDFに移行するのか

PdfPigについて

PdfPigは、C#用に特別に設計されたオープンソースのPDF読み取り・抽出ライブラリです。 評判の高いApache PDFBoxプロジェクトの一部門として、このライブラリは、開発者が驚くべき精度でPDFのコンテンツにアクセスすることを可能にします。PdfPigは抽出機能では優れていますが、市販されているより包括的なライブラリと比較すると、その範囲は大きく制限されています。

PdfPig は、PDF ファイルからテキスト、画像、フォームデータ、メタデータを抽出するための信頼性の高いツールを開発者に提供します。 そのため、主に文書分析やデータマイニングに重点を置いたアプリケーションに適しています。 しかし、PdfPigの機能は基本的に既存のドキュメントの解析に限られています。

読解のみの制限

PdfPigはPDFの読み取りに特化しています。 PdfPigは、お客様のアプリケーションが抽出を超えて成長する必要がある場合、お手伝いすることができません:

1.PDF生成はできません:HTML、URL、またはプログラムからPDFを作成することはできません。

2.HTMLからPDFへの変換はできません:PdfPigはPDF読み取り/解析ライブラリであり、PDF生成ライブラリではありません。 HTMLからPDFへの変換には、別のライブラリを使用する必要があります。

3.ドキュメントを操作しないこと:PDFのマージ、分割、修正はできません。

4.セキュリティ機能はありません:パスワード、暗号化、デジタル署名を追加できません。

5.ウォーターマーク/スタンプは不可:既存の文書に視覚的なオーバーレイを追加することはできません。

6.フォーム入力はできません:プログラムで PDF フォームを埋めることはできません。

PdfPigとIronPdfの比較

フィーチャーPdfPigIronPDF
ライセンスオープンソース(Apache 2.0)商用
PDFの読み取り/抽出優秀優秀
PDFジェネレーション制限的包括的
HTMLからPDFへサポート対象外サポート対象
テキスト抽出優秀優秀
PDF操作サポートされていませんマージ、分割、回転
ウォーターマークサポートされていませんフルサポート
セキュリティ/暗号化サポートされていませんフルサポート
サポートとドキュメンテーションコミュニティサポート専用サポート
ページ索引1ベース0ベース

IronPDFはPDFの作成、閲覧、編集、署名のための機能一式をサポートしています。 この汎用性により、開発者は最初から最後までPDFファイルを管理することができます。 2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはPdfPigの読み取り機能を超えた完全なPDFライフサイクル・ソリューションを提供します。


始める前に

前提条件

1..NET環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+. 2.NuGetアクセス:NuGetパッケージをインストールする能力。 3.IronPDFライセンスironPdf.comからライセンスキーを取得してください。

NuGetパッケージの変更

# Remove PdfPig
dotnet remove package PdfPig

# Install IronPDF
dotnet add package IronPdf
# Remove PdfPig
dotnet remove package PdfPig

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// 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";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PdfPigの使用法を特定する

# FindPdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
# FindPdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
SHELL

完全な API リファレンス

名前空間の変更

// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ドキュメント読み込みマッピング

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 = ...IronPDFを使用する必要はありません。

ページ アクセスとプロパティのマッピング

PdfPigIronPDFノート
<コード>ドキュメント.ページ数</コード<コード>pdf.PageCount</コード総ページ数
document.GetPages()<コード>pdf.Pages</コードページコレクション
<コード>document.GetPage(1)</コード<コード>pdf.Pages[0]</コード単一ページ(注:1ベースと0ベース)

テキスト抽出マッピング

PdfPigIronPDFノート
<コード>ページ.テキスト</コードpdf.Pages[i].Textページテキスト
<コード>page.GetWords()</コードpdf.ExtractTextFromPage(i)のようにします。ページの単語/テキスト
(manual loop)pdf.ExtractAllText()を使用してください。すべてのテキストを一度に

メタデータアクセスマッピング

PdfPigIronPDFノート
ドキュメント.情報.タイトル<コード>pdf.MetaData.Title</コード文書タイトル
<コード>ドキュメント.情報.作成者</コード<コード>pdf.MetaData.Author</コード著者
ドキュメント.情報.件名<コード>pdf.MetaData.Subject</コード対象
ドキュメント.インフォメーション.クリエーター<コード>pdf.MetaData.Creator</コードクリエイター
<コード>ドキュメント.情報.プロデューサー</コード<コード>pdf.MetaData.Producer</コードプロデューサー

PdfPigでは利用できない新機能

IronPDFの特徴翻訳内容
renderer.RenderHtmlAsPdf(html).HTMLからPDFへの変換
renderer.RenderUrlAsPdf(url)のようにします。URLからPDFへの変換
PdfDocument.Merge(pdfs).複数のPDFをマージ
pdf.ApplyWatermark(html).透かしの追加
pdf.SecuritySettings.UserPasswordパスワード保護
<コード>pdf.Sign(証明書)</コードデジタル署名

コード移行の例

例1: PDFからのテキスト抽出

翻訳前 (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());
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PdfPigとIronPdfはどちらも優れたテキスト抽出機能を提供します。 主な違いはコードパターンです。 PdfPigは、PdfDocument.Open()によるusingステートメント、GetPages()による手動でのページの繰り返し、各page.Textプロパティからテキストを蓄積するためのStringBuilderを必要とします。

IronPdfはこれを一つの呼び出しに単純化します:PdfDocument.FromFile()はドキュメントをロードし、ExtractAllText()はすべてのテキストコンテンツを一度に返します。 usingステートメントは不要で、手作業による反復も、StringBuilderも必要ありません。 その他のオプションについては、テキスト抽出ドキュメントを参照してください。

例2: HTMLからPDFへの変換

翻訳前 (PdfPig):

//PdfPigdoes not supportHTMLからPDFへconversion
//PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library forHTMLからPDFへconversion
//PdfPigdoes not supportHTMLからPDFへconversion
//PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library forHTMLからPDFへconversion
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この例は、最も重大な能力ギャップを浮き彫りにしています。PdfPigは、"HTMLからPDFへの変換をサポートしない"、"PDF読み取り/解析ライブラリであり、PDF生成ライブラリではない "と明言しています。PdfPigを使ってHTMLからPDFを作成する必要がある場合は、まったく別のライブラリを使う必要があります。

IronPDFはChromePdfRendererを通してネイティブのHTMLからPDFへの変換を提供します。 RenderHtmlAsPdf()メソッドは、HTML文字列を受け取り、HTML、CSS、JavaScriptの正確なレンダリングのために内部的にChromiumエンジンを使用してPDFドキュメントに変換します。 出来上がったPdfDocumentは、SaveAs()で保存したり、保存する前にさらに操作することができます。 包括的な例については、HTML to PDF documentationを参照してください。

例 3:PDFメタデータを読む

翻訳前 (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}");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

どちらのライブラリも、ほぼ同じパターンでメタデータ・アクセスを提供します。 PdfPigはdocument.Informationを通してメタデータにアクセスし、document.NumberOfPagesを通してページ数にアクセスします。 IronPDFはメタデータにpdf.MetaDataを、ページ数にpdf.PageCountを使用します。

PdfDocument.Open()PdfDocument.FromFile()に、document.Informationpdf.MetaDataに、document.NumberOfPagespdf.PageCountに置き換えるだけです。 using文のラッパーはIronPDFでは必要ないので削除してください。


重要な移行に関する注意事項

ページのインデックス変更

PdfPigは1ベースのインデックスを使用しています; IronPDFは0ベースです:

// PdfPig:1ベースindexing
var firstPage = document.GetPage(1);  // First page

// IronPDF:0ベースindexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
// PdfPig:1ベースindexing
var firstPage = document.GetPage(1);  // First page

// IronPDF:0ベースindexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用説明文は必須ではありません。

// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ドキュメントの読み込みの変更

// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

メタデータ プロパティ名の変更

// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;
// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ページ数プロパティの変更

// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行後の新機能

IronPDFに移行すると、PdfPigでは提供できない機能が得られます:

PDFマージ

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ウォーターマーク

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

パスワード保護

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

デジタル署名

var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

機能比較の概要

フィーチャーPdfPigIronPDF
テキスト抽出
メタデータアクセス
画像抽出
PDF作成制限的
HTMLからPDFへ
URLからPDFへ
PDFのマージ
PDFの分割
透かし
フォーム入力
パスワード保護
デジタル署名
ワードポジションデータ

移行チェックリスト

移行前

  • [ ] コードベース内のすべてのPdfPigの使用状況の確認
  • [単語レベルのポジションデータが必要かどうかを確認してください(ハイブリッドアプローチを検討してください)。
  • [すべてのページ索引参照に注意してください(1-baseを0-baseに変換する必要があります)。
  • [ ] IronPDFライセンスキーの保存を計画する(環境変数を推奨)
  • [ ] まずはIronPDFトライアルライセンスでテストしてください。

パッケージの変更

  • [ ] PdfPig NuGet パッケージを削除します:dotnet remove package PdfPig を削除してください。
  • [ ] IronPdf NuGetパッケージをインストールします:dotnet add package IronPdf NuGetパッケージをインストールします。

コードの変更

  • [ ] 名前空間のインポートを更新する (using UglyToad.PdfPig;using IronPdf;)
  • [ ] PdfDocument.Open()PdfDocument.FromFile()に置き換えてください。
  • [ ] document.Informationpdf.MetaDataに置き換えてください。
  • [ ] document.NumberOfPagespdf.PageCountに置き換えてください。
  • [ページインデックスを1ベースから0ベースに変換してください。
  • [using ステートメントを削除する。
  • [ ] アプリケーション起動時にIronPdfライセンスキーを追加する

移行後

  • [テストテキスト抽出出力が期待に一致
  • [すべてのPDF生成シナリオのテスト
  • [必要に応じて、新しい機能(マージ、透かし、セキュリティ)を追加してください。
  • [Linux にデプロイする場合は、Linux の依存関係をインストールしてください。

結論

PdfPigからIronPdfに移行することで、PDFの機能が閲覧専用から完全なPDFライフサイクル・ソリューションに拡張されます。 PdfPigがその読み取りと抽出の領域で強力であるのに対して、IronPdfは汎用性と包括的なPDF管理で優位に立っています。

この移行における主な変更点は以下のとおりです: 1.ドキュメントの読み込みPdfDocument.Open()PdfDocument.FromFile() 2.メタデータ・アクセスdocument.Informationpdf.MetaData です。 3.ページ数document.NumberOfPages →<コード>pdf.PageCount</コードです。 4.ページインデックス: 1ベース → 0ベース 5.廃棄パターン:必須 using → 任意 6.新機能:HTMLからPDF、PDFマージ、透かし、セキュリティ、電子署名など

PdfPigとIronPdfのどちらを選択するかは、プロジェクトの要件に大きく依存します。 費用対効果の高いオープンソースライセンスで、確かな抽出と読み取りができることが第一のニーズであれば、PdfPigをお使いください。 HTMLからPDFへの変換を含む包括的なPDFライフサイクルサポートが必要で、プロフェッショナルなサポートに支えられた堅牢なPDF作成・編集機能が必要なプロジェクトにはIronPDFをご利用ください。

IronPDFドキュメントチュートリアルAPIリファレンスをご覧いただき、PdfPigへの移行を加速させてください。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。