C#でPdfiumからIronPDFに移行する方法
Pdfium.NETからIronPDFに移行することで、.NET PDFワークフローはネイティブバイナリ依存のレンダリングに特化したライブラリから、プラットフォーム固有の複雑さなしに作成、操作、レンダリングを処理する包括的なPDFソリューションに移行します。 このガイドでは、Pdfiumでは提供できない機能を追加しながら、ネイティブの依存性管理を排除する完全でステップバイステップの移行パスを提供します。
なぜPdfiumからIronPDFに移行するのか
Pdfium.NETを理解する
Pdfium.NETは、GoogleのPDFiumライブラリの.NETラッパーで、PDF文書のレンダリングにおける効率性とスピードで有名です。 C#アプリケーション内でのPDFレンダリングの複雑さを掘り下げている開発者にとって重要なライブラリとして登場し、.NET環境でPDFコンテンツの忠実度の高い複製を提供します。
しかし、Pdfium.NETはレンダリングに長けているものの、PDF文書の作成と操作には限界があります。 主に、PDFコンテンツを正確に表示する必要があり、PDFの修正や新規作成にはあまり重点を置いていないアプリケーション向けに作られています。
重要な Pdfium の制限事項
1.レンダリングのみに焦点: HTML、画像、またはプログラムから PDF を作成することはできません。 Pdfiumの機能は、PDFの表示とレンダリングに制限されています。
- PDF 操作不可: PDF コンテンツを結合、分割、または変更することはできません。 iTextSharpやPdfSharpのような別のライブラリを使用する必要があります。
3.ネイティブ バイナリ依存関係:プラットフォーム固有の PDFium バイナリが必要です。 開発者はPDFiumのネイティブバイナリを管理する必要がありますが、これはデプロイや配布の際に複雑さを増す側面があります。
4.展開の複雑さ:プラットフォームごとにネイティブ DLL を x86、x64、およびランタイム フォルダーにバンドルして管理する必要があります。
5.限定的なテキスト抽出:書式設定なしの基本的なテキスト抽出。 テキスト抽出には、Pdfium.NETを使用する必要があります。
- HTML から PDF への変換不可: Web コンテンツを PDF に変換できません。 HTMLからPDFへの変換は、Pdfium.NETではネイティブにサポートされていません。
7.ヘッダー/フッターなし:ページ番号や繰り返しコンテンツを追加できません。
8.透かしなし:オーバーレイ付きの文書にスタンプを押すことはできません。
9.フォームのサポートなし: PDF フォームに入力したり読み取ったりできません。
10.セキュリティ機能なし: PDF を暗号化したりパスワードで保護したりできません。
PdfiumとIronPdfの比較
| アスペクト | Pdfium.NET | IronPDF |
|---|---|---|
| 主な焦点 | レンダリング/ビューイング | 完全なPDFソリューション |
| レンダリング忠実度 | 忠実度の高いレンダリング | 特にHTML/CSS/JSについては、高いレベルが求められます。 |
| PDFの作成。 | ✗ | (HTML, URL, 画像) |
| PDF操作 | ✗ | マージ、分割、編集 |
| HTMLからPDFへ | ✗ | Chromium エンジン |
| ウォーターマーク。 | ✗ | ✓ |
| ヘッダー/フッター | ✗ | ✓ |
| フォーム入力 | ✗ | ✓ |
| セキュリティ。 | ✗ | ✓ |
| ネイティブの依存関係 | 必須 | なし(フルマネージド) |
| クロスプラットフォーム。 | 複雑なセットアップ | 自動翻訳 |
| 展開のしやすさ | ネイティブの依存関係が複雑 | より簡単に; 依存関係の複雑さを軽減 |
2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは包括的なPDFの作成と操作機能を追加しながら、ネイティブのバイナリ管理を排除する完全な管理基盤を提供します。
始める前に
前提条件
- .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGetアクセス: NuGetパッケージをインストールする機能
- IronPDFライセンス: ironpdf.comからライセンスキーを取得します。
NuGetパッケージの変更
# Remove Pdfium packages
dotnet remove package Pdfium.NET
dotnet remove package Pdfium.Net.SDK
dotnet remove package PdfiumViewer
# Install IronPDF
dotnet add package IronPdf# Remove Pdfium packages
dotnet remove package Pdfium.NET
dotnet remove package Pdfium.Net.SDK
dotnet remove package PdfiumViewer
# Install IronPDF
dotnet add package IronPdfライセンス構成
// 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";Pdfiumの使用法を特定する。
# Find Pdfium usage
grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" .
# Find platform-specific code
grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" .# Find Pdfium usage
grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" .
# Find platform-specific code
grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" .完全な API リファレンス
名前空間の変更
// Pdfium.NET
using Pdfium;
using Pdfium.Net;
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;// Pdfium.NET
using Pdfium;
using Pdfium.Net;
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;コア クラス マッピング
| Pdfium.NET | IronPDF | ノート |
|---|---|---|
| <コード>PdfDocument</コード | <コード>PdfDocument</コード | 同じ名前、異なる機能 |
| <コード>PdfPage</コード | <コード>PdfPage</コード | 類似インターフェース |
| <コード>PdfPageCollection</コード | <コード>PdfPageCollection</コード | 類似インターフェース |
| (利用できません) | <コード>ChromePdfRenderer</コード | PDF作成 |
| (利用できません) | <コード>HtmlHeaderFooter</コード | ヘッダー/フッター |
ドキュメント読み込みマッピング
| Pdfium.NET | IronPDF | ノート |
|---|---|---|
PdfDocument.Load(パス)。 | PdfDocument.FromFile(パス)。 | ファイルから読み込む |
PdfDocument.Load(stream)を実行します。 | <コード>PdfDocument.FromStream(stream)</コード><コード>PdfDocument.FromStream(stream) | ストリームから読み込む |
PdfDocument.Load(bytes). | <コード>PdfDocument.FromBinaryData(bytes)</コード><コード>PdfDocument.FromBinaryData(bytes) | バイトから読み込む |
new PdfDocument(path). | PdfDocument.FromFile(パス)。 | コンストラクタのパターン |
ドキュメント プロパティのマッピング
| Pdfium.NET | IronPDF | ノート |
|---|---|---|
| <コード>document.PageCount</コード | <コード>document.PageCount</コード | 同じ |
| <コード>ドキュメント.ページ</コード | <コード>ドキュメント.ページ</コード | 類似コレクション |
ドキュメント.ページ[インデックス] | ドキュメント.ページ[インデックス] | ゼロベース |
document.GetPageSize(インデックス)。 | document.Pages[index].Width/Height。 | 直接プロパティ |
テキスト抽出マッピング
| Pdfium.NET | IronPDF | ノート |
|---|---|---|
document.GetPdfText(pageIndex)。 | ドキュメント.ページ[index].テキスト | ページあたり |
| (マニュアルループ) | document.ExtractAllText()を実行します。 | 全ページ一括 |
| <コード>page.GetTextBounds()</コード | <コード>ページ.テキスト</コード | 簡略化 |
ドキュメント マッピングの保存
| Pdfium.NET | IronPDF | ノート |
|---|---|---|
document.Save(パス)を実行します。 | document.SaveAs(path)を実行します。 | 異なるメソッド名 |
document.Save(stream)を実行します。 | <コード>ドキュメント.ストリーム</コード | アクセスストリーム |
| (利用できません) | <コード>document.BinaryData</コード | バイト |
ページ レンダリング マッピング
| Pdfium.NET | IronPDF | ノート |
|---|---|---|
| <コード>page.Render(width, height) | pdf.RasterizeToImageFiles(path, dpi). | ラスタライズ |
| <コード>page.Render(width, height, flags) | DPIパラメータ | 品質管理 |
document.Render(index, width, height). | pdf.RasterizeToImageFiles()。 | バッチレンダー |
page.RenderToScale(scale)のようにします。 | DPI:72 * scale | スケールからDPIへの変換 |
Pdfiumでは利用できない新機能
| IronPDFの特徴 | 翻訳内容 |
|---|---|
ChromePdfRenderer.RenderHtmlAsPdf()のようになります。 | HTMLから作成 |
ChromePdfRenderer.RenderUrlAsPdf()のようにします。 | URLから作成 |
| <コード>ChromePdfRenderer.RenderHtmlFileAsPdf()</コード | HTMLファイルから作成 |
PdfDocument.Merge()を使用してください。 | PDFの結合 |
| <コード>pdf.CopyPages()</コード | ページの抜粋 |
| <コード>pdf.RemovePages()</コード></コード | ページの削除 |
| <コード>pdf.InsertPdf()</コード | 位置にPDFを挿入 |
| <コード>pdf.ApplyWatermark()</コード></コード | 透かしの追加 |
| <コード>pdf.AddHtmlHeaders()</コード></コード | ヘッダーの追加 |
| <コード>pdf.AddHtmlFooters()</コード></コード | フッターの追加 |
| <コード>pdf.SecuritySettings</コード | パスワード保護 |
pdf.SignWithDigitalSignature()を使用してください。 | デジタル署名 |
| <コード>pdf.Form</コード | フォーム入力 |
コード移行の例
例1: PDFからのテキスト抽出
翻訳前 (Pdfium):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
using (var document = PdfDocument.Load(pdfPath))
{
StringBuilder text = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
// Note: PdfiumViewer has limited text extraction capabilities
// Text extraction requires additional work with Pdfium.NET
string pageText = document.GetPdfText(i);
text.AppendLine(pageText);
}
Console.WriteLine(text.ToString());
}
}
}// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
using (var document = PdfDocument.Load(pdfPath))
{
StringBuilder text = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
// Note: PdfiumViewer has limited text extraction capabilities
// Text extraction requires additional work with Pdfium.NET
string pageText = document.GetPdfText(i);
text.AppendLine(pageText);
}
Console.WriteLine(text.ToString());
}
}
}翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
var pdf = PdfDocument.FromFile(pdfPath);
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
var pdf = PdfDocument.FromFile(pdfPath);
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}ここでの違いは重要です。 Pdfiumでは、GetPdfText(pageIndex)で各ページを手動でループし、StringBuilderを構築し、usingステートメントを適切に廃棄できるように管理する必要があります。 コードには、"PdfiumViewerのテキスト抽出機能には制限があります"、"テキスト抽出には追加作業が必要です "と書かれています。
IronPDFはこれを3行に単純化します: PdfDocument.FromFile()で読み込み、ExtractAllText()で抽出し、出力します。 ExtractAllText()メソッドは、より高度なテキスト抽出機能ですべてのページを自動的に処理します。 ページごとの抽出が必要な場合は、pdf.Pages[index].Textを使用できます。 追加オプションについては、テキスト抽出のドキュメントを参照してください。
例 2: PDF のマージ
翻訳前 (Pdfium):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;
// Note: PdfiumViewer does not have native PDF merging functionality
// You would need to use additional libraries or implement custom logic
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
// PdfiumViewer is primarily for rendering/viewing
// PDF merging is not natively supported
// You would need to use another library like iTextSharp or PdfSharp
Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
}
}// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;
// Note: PdfiumViewer does not have native PDF merging functionality
// You would need to use additional libraries or implement custom logic
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
// PdfiumViewer is primarily for rendering/viewing
// PDF merging is not natively supported
// You would need to use another library like iTextSharp or PdfSharp
Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
}
}翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
var pdf = PdfDocument.Merge(pdfFiles);
pdf.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> pdfFiles = new List<string>
{
"document1.pdf",
"document2.pdf",
"document3.pdf"
};
var pdf = PdfDocument.Merge(pdfFiles);
pdf.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}この例は、基本的な機能のギャップを浮き彫りにしています。PdfiumはPDFをマージすることができません。コードには "PDFマージはPdfiumViewerではネイティブにサポートされていません。"、"iTextSharpやPdfSharpのような別のライブラリを使用する必要があります。"と明記されています。
IronPDFは静的なPdfDocument.Merge()メソッドでネイティブのマージ機能を提供します。 結果は、SaveAs()で保存する新しいPdfDocumentです。 PDFのマージと分割については、こちらをご覧ください。
例3: HTMLからPDFへの変換
翻訳前 (Pdfium):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;
// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML
// For HTML to PDF with Pdfium.NET, you would need additional libraries
// This example shows a limitation of Pdfium.NET
class Program
{
static void Main()
{
// Pdfium.NET does not have native HTML to PDF conversion
// You would need to use a separate library to convert HTML to PDF
// then use Pdfium for manipulation
string htmlContent = "<h1>Hello World</h1>";
// This functionality is not directly available in Pdfium.NET
Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
}
}// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;
// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML
// For HTML to PDF with Pdfium.NET, you would need additional libraries
// This example shows a limitation of Pdfium.NET
class Program
{
static void Main()
{
// Pdfium.NET does not have native HTML to PDF conversion
// You would need to use a separate library to convert HTML to PDF
// then use Pdfium for manipulation
string htmlContent = "<h1>Hello World</h1>";
// This functionality is not directly available in Pdfium.NET
Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
}
}翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}この例は、最も大きな能力の違いを示しています。 Pdfiumは、"HTMLからPDFへの変換は、Pdfium.NETではネイティブにサポートされていません。"と "HTMLをPDFに変換するには、別のライブラリを使用する必要があります。"と明確に述べています。
IronPDFはChromePdfRendererを通してネイティブのHTMLからPDFへの変換を提供し、HTML、CSS、JavaScriptの正確なレンダリングのために内部でChromiumエンジンを使用しています。 RenderHtmlAsPdf()メソッドは、HTML文字列を直接PDF文書に変換します。 IronPDFはRenderUrlAsPdf()でURLを、RenderHtmlFileAsPdf()でHTMLファイルをレンダリングすることもできます。 包括的な例については、HTML to PDF documentationを参照してください。
ネイティブ依存性の除去
PdfiumからIronPdfへの移行の最も大きな利点の一つは、ネイティブのバイナリ管理が不要になることです。
ビフォア (Pdfium) - 複雑なデプロイメント
MyApp/
├── ビン/
│ ├──MyApp.dll
│ ├──Pdfium.NET.dll
│ ├── x86/
│ └── pdfium.dll
│ └── x64/
└─ pdfium.dll
ランタイム
│ ├── win-x86/native/
│ └── pdfium.dll
│ └── win-x64/native/
└─ pdfium.dll翻訳後 (IronPDF) - クリーンなデプロイメント
MyApp/
├── ビン/
│ ├──MyApp.dll
│ └─ IronPdf.dll # 含まれるものすべてネイティブ バイナリ参照の削除
# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries重要な移行に関する注意事項
スケールからDPIへの変換
Pdfiumはスケールファクターを使用しています; IronPDFはDPIを使用しています:
// Formula:IronPDFDPI = 72 × Pdfium scale
// Pdfium scale 2.0 →IronPDFDPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);// Formula:IronPDFDPI = 72 × Pdfium scale
// Pdfium scale 2.0 →IronPDFDPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);ドキュメント読み込み方法の変更
// Pdfium
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)// Pdfium
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)保存メソッドの変更
// Pdfium
document.Save(path)
// IronPDF
pdf.SaveAs(path)// Pdfium
document.Save(path)
// IronPDF
pdf.SaveAs(path)廃棄パターンの簡略化
// Pdfium:必須explicit disposal
using (var document = PdfDocument.Load(path))
using (var page = document.Pages[0])
using (var bitmap = page.Render(1024, 768))
{
bitmap.Save("output.png");
}
// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");// Pdfium:必須explicit disposal
using (var document = PdfDocument.Load(path))
using (var page = document.Pages[0])
using (var bitmap = page.Render(1024, 768))
{
bitmap.Save("output.png");
}
// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");プラットフォーム固有のコードの削除
// Pdfium:必須platform detection
#if WIN64
// Load x64 pdfium.dll
#else
// Load x86 pdfium.dll
#endif
// IronPDF: Remove all platform-specific code
// Just use the API directly// Pdfium:必須platform detection
#if WIN64
// Load x64 pdfium.dll
#else
// Load x86 pdfium.dll
#endif
// IronPDF: Remove all platform-specific code
// Just use the API directly機能比較の概要
| フィーチャー | Pdfium.NET | IronPDF |
|---|---|---|
| PDFを読み込む | ✓ | ✓ |
| 画像にレンダリング | ✓ | ✓ |
| テキストの抽出 | 基本 | 上級 |
| ページ情報 | ✓ | ✓ |
| HTMLから作成 | ✗ | ✓ |
| URLから作成 | ✗ | ✓ |
| PDFのマージ | ✗ | ✓ |
| PDFの分割 | ✗ | ✓ |
| 透かしの追加 | ✗ | ✓ |
| ヘッダー/フッター | ✗ | ✓ |
| フォーム入力 | ✗ | ✓ |
| デジタル署名 | ✗ | ✓ |
| パスワード保護 | ✗ | ✓ |
| ネイティブの依存関係 | 必須 | なし |
| クロスプラットフォーム | 複雑 | 自動翻訳 |
| メモリ管理 | マニュアルの廃棄 | 簡略化 |
移行チェックリスト
移行前
- コードベース内のすべてのPdfiumの使用状況を特定する
- 現在使用されているレンダリング寸法/スケールを文書化する
- プロジェクト内のネイティブバイナリの場所を一覧表示する
- プラットフォーム固有の読み込みコードを確認する
- PDF 作成のニーズを特定します (現在別のツールを使用していますか?)
- 転換のための廃棄パターンを確認する
- IronPDFライセンスキーを取得する
パッケージの変更
Pdfium.NET、Pdfium.Net.SDK、PdfiumViewerNuGet パッケージを削除します- x86/、x64/、runtimes/ フォルダからネイティブ pdfium.dll バイナリを削除します。
- プラットフォーム固有の条件付きコンパイルを削除
- .csproj を更新してネイティブバイナリ参照を削除します
IronPdfNuGet パッケージをインストールします:dotnet add package IronPdf
コードの変更
- 起動時にライセンスキー設定を追加する
PdfDocument.Load()をPdfDocument.FromFile()に置き換えますdocument.Save()をpdf.SaveAs()に置き換えますdocument.GetPdfText(i)ループをpdf.ExtractAllText()に置き換えます- スケール係数をDPI値に変換します(DPI = 72 × スケール)
- 破棄パターンを簡素化する(ネストされた using ステートメントを削除する)
- プラットフォーム固有のコードを削除する
移行後
- レンダリング出力品質のテスト
- テキスト抽出結果を比較する
- クロスプラットフォーム展開のテスト
- 新しい機能の追加(HTMLからPDFへの変換、結合、透かし、セキュリティ)
- ドキュメントの更新






