IRONSOFTWAREHOME
ビデオ

C# を使用して XML を PDF に変換する方法

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

PdfPigからIronPDFへの移行は、座標ベースの著者作成および基本的な結合のための狭いライターサーフェースを備えるリーディングフォーカスのライブラリから、作成、操作、テキスト抽出、セキュリティ機能を扱う包括的なPDFソリューションへと拡張します。 このガイドは、既存の抽出ワークフローを維持しながら、PdfPigが提供しないHTML変換、高レベルのドキュメント操作、透かし、セキュリティ著作を追加する完全なステップバイステップの移行パスを提供します。

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

PdfPigについて

PdfPig(NuGetパッケージ PdfPig、名前空間 UglyToad.PdfPig)は、オープンソース for .NET PDF読み取りおよび抽出ライブラリで、元々はApache PDFBox Javaプロジェクトに触発され、部分的に移植されました。 開発者がデータの精度を高めながらPDFの構造的コンテンツにアクセスできるようにします。 PdfPigは抽出に長けていますが、その範囲はフルライフサイクルの商用ライブラリよりも狭いです。 このプロジェクトはまだ1.0未満であり(現在の安定版リリースは0.1.14)、READMEには"バージョンが1.0.0未満の場合、マイナーバージョンは警告なしにパブリックAPIを変更する"と記載されています。

PdfPig はテキスト(文字および単語レベルの位置を伴う)、画像、読み取り専用フォームデータ、アノテーション、メタデータの抽出に信頼性のあるツールを提供します。 また、限定的なライターサーフェスを公開しています。低レベルの新規ドキュメント作成のためのUglyToad.PdfPig.Writer内)があります。 これにより、主にドキュメント分析、データマイニング、および基本的な結合に焦点を当てたアプリケーションに適した選択肢となります。

リーディングフォーカス制限

PdfPigは読み取りを優先し、ライターサーフェースは意図的に狭くなっています。 アプリケーションが抽出や基本的な結合を超えて成長する必要がある場合、PdfPigは役立ちません:

  1. 限定的なPDF生成: 新しいドキュメントには高レベルのレイアウトはなく、PdfPointを使用した手動での座標配置が必要です。

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

  3. 限定的なドキュメント操作: PdfMergerは連結をカバーしていますが、高レベルの分割/回転/編集APIはありません。

  4. セキュリティ著作なし: 暗号化されたPDF(パスワード付き)を読み取ることはできますが、パスワード、暗号化、デジタル署名を追加することはできません。

  5. ウォーターマーク/スタンプなし: 既存のドキュメントにビジュアルオーバーレイを行うためのハイレベルなAPIはありません。

  6. フォーム入力なし: フォームは読み取り専用で、値を変更または追加することはできません。

PdfPigとIronPDFの比較

フィーチャーPdfPigIronPDF
ライセンスオープンソース(Apache 2.0)商用
NuGetパッケージPdfPig(v0.1.14、1.0未満)IronPdf
PDFの読み取り/抽出優秀優秀
PDFジェネレーション制限付き(PdfDocumentBuilderを使用した座標ベース)包括的
HTMLからPDFへサポート対象外サポート対象
テキスト抽出優れたもの(単語境界ボックス付き)優れたもの(テキストのみ)
PDFマージサポートされている(PdfMergerサポートされている(PdfDocument.Merge
分割 / 回転 / 編集非サポート(ハイレベル)サポート対象
ウォーターマークサポートされていませんサポート対象
セキュリティ/暗号化著作サポートされていませんサポート対象
サポートとドキュメンテーションコミュニティサポート専用サポート
ページ索引1ベース0ベース

IronPDFはPDFの作成、閲覧、編集、署名のための機能一式をサポートしています。 この多様性により、開発者はPDFファイルを現代 for .NETで最初から最後まで管理でき、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からライセンスキーを取得します。

NuGetパッケージの変更

# 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";

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" .
SHELL

完全な API リファレンス

名前空間の変更

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

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

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

PdfPigIronPDF
PdfDocument.Open(path)PdfDocument.FromFile(path)
PdfDocument.Open(bytes)PdfDocument.FromBinaryData(bytes)
PdfDocument.Open(stream)PdfDocument.FromStream(stream)
using (var doc = ...)var pdf = ...

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

PdfPigIronPDF
document.NumberOfPagespdf.PageCount
document.GetPages()pdf.Pages
document.GetPage(1)pdf.Pages[0]

テキスト抽出マッピング

PdfPigIronPDF
page.Textpdf.Pages[i].Text
page.GetWords()pdf.ExtractTextFromPage(i)
(manual loop)pdf.ExtractAllText()

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

PdfPigIronPDF
document.Information.Titlepdf.MetaData.Title
document.Information.Authorpdf.MetaData.Author
document.Information.Subjectpdf.MetaData.Subject
document.Information.Creatorpdf.MetaData.Creator
document.Information.Producerpdf.MetaData.Producer

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

IronPDFの特徴翻訳内容
renderer.RenderHtmlAsPdf(html)HTMLからPDFへの変換
renderer.RenderUrlAsPdf(url)URLからPDFへの変換
pdf.ApplyWatermark(html)透かしの追加
pdf.SecuritySettings.UserPasswordパスワード保護
pdf.Sign(certificate)デジタル署名

注意: PDFのマージは両方のライブラリで利用可能です(PdfPigのPdfDocument.Merge)。


コード移行の例

例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());
        }
    }
}

翻訳後(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);
    }
}

PdfPigとIronPDFはどちらも優れたテキスト抽出機能を提供します。 主な違いはコードパターンです。 PdfPigはpage.Textプロパティからテキストを蓄積するためにページを手動で繰り返し処理します。

IronPDFはこれを1つの呼び出しに簡略化します。ExtractAllText()は全てのテキスト内容を一度に返します。 using ステートメントも、手動の繰り返しも、StringBuilderも必要ありません。 その他のオプションについては、テキスト抽出ドキュメントを参照してください。

例2: HTMLからPDFへの変換

翻訳前 (PdfPig):

*PdfPig は HTML から PDF への変換をサポートしていません。PdfPigは PDF 生成ライブラリではなく、PDF 読み取り/解析ライブラリです。 HTML から PDF への変換には別のライブラリを使用する必要があります。 *

翻訳後(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");
    }
}

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

IronPDFはChromePdfRendererを通じてネイティブのHTMLからPDFへの変換を提供します。 RenderHtmlAsPdf()メソッドはHTMLストリングを受け取り、内部的にはChromiumエンジンを使用してHTML、CSS、JavaScriptの正確なレンダリングを行い、PDFドキュメントに変換します。 結果の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}");
        }
    }
}

翻訳後(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}");
    }
}

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

移行は簡単です:pdf.PageCountに置き換えます。 IronPDFにはusingステートメントのラッパーは不要なので削除します。


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

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

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: 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: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");

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

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

// IronPDF: pdf.MetaData
var info = pdf.MetaData;

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

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

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

移行後の新機能

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");

ウォーターマーク

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");

パスワード保護

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";

デジタル署名

var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);

機能比較の概要

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

移行チェックリスト

移行前

  • コードベース内のすべてのPdfPigの使用状況を一覧表示する
  • 単語レベルの位置データが必要かどうかを特定する(ハイブリッドアプローチを検討)
  • すべてのページインデックス参照をメモします(1 ベースを 0 ベースに変換する必要があります)
  • IronPDFライセンス キーの保存を計画する (環境変数を推奨)
  • まずはIronPDFの試用ライセンスでテストしてください

パッケージの変更

  • PdfPig NuGetパッケージを削除: dotnet remove package PdfPig
  • IronPdf NuGetパッケージをインストール: dotnet add package IronPdf

コードの変更

  • 名前空間のインポートを更新する(using UglyToad.PdfPig;using IronPdf;
  • PdfDocument.FromFile()に置き換える
  • pdf.MetaDataに置き換える
  • pdf.PageCountに置き換える
  • ページインデックスを1から0に変換する
  • usingステートメントを削除する(任意、IronPDFでは不要)
  • アプリケーションの起動時にIronPDFライセンスキーを追加する

移行後

  • テストテキスト抽出出力が期待通りである
  • すべてのPDF生成シナリオをテストする
  • 必要に応じて新しい機能(結合、透かし、セキュリティ)を追加します
  • Linuxにデプロイする場合はLinuxの依存関係をインストールします

ご注意: Apache PDFBox およびPdfPigはそれぞれの所有者の登録商標です。 このサイトはApache Software FoundationまたはUglyToadと提携、推奨、またはスポンサー承認されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。