C#でpdfからIronPDFに移行する方法
なぜpdforgeからIronPDFに移行するのか
pdforgeを理解する
pdforgeはクラウドベースのPDF生成APIであり、APIコールを通じてアプリケーションと統合することで、PDFファイルを生成する簡単な方法を提供します。 PDF作成のタスクを外部APIにオフロードすることで、開発者は開発プロセスを簡素化することができます。 しかし、pdforgeには、外部依存性、カスタマイズオプションの制限、継続的なサブスクリプション費用など、開発者が注意すべき欠点があります。
クラウド API の依存性の問題
pdforgeは、すべてのドキュメントを外部のクラウドサーバーで処理します。 このアーキテクチャーは、本番アプリケーションに大きな懸念をもたらします:
1.外部サーバー処理:生成するすべての PDF では、HTML/データをpdforgeのサーバーに送信する必要があり、ドキュメントはインフラストラクチャから出ていきます。
2.プライバシーとコンプライアンスのリスク:機密データはインターネット経由でサードパーティのサーバーに送信されます。 pdforgeを使用する場合、開発者はデータが外部APIに送信されることに関連するセキュリティ上の懸念に対応する必要があります。 PDFのコンテンツに機密情報が含まれている場合、これは重要な考慮事項となります。
3.継続的なサブスクリプション費用:資産の所有権がなく、月額料金は無期限に蓄積されます。pdforge の SaaS モデルでは、時間の経過とともに蓄積される可能性のある継続的な運用コストが発生します。
4.インターネット依存性:ネットワークが利用できない場合は PDF は生成されません。
5.レート制限: API 使用量の上限により、大量のアプリケーションが制限される可能性があります。
6.ネットワーク遅延:ラウンドトリップ時間により、PDF 生成ごとに数秒が追加されます。
pdforgeとIronPDFの比較
| フィーチャー | pdforge | IronPDF |
|---|---|---|
| 展開タイプ | クラウドベースのAPI | ローカルライブラリ |
| 依存関係について | インターネットおよびAPI認証が必要です。 | 外部依存なし |
| カスタマイズ。 | PDF生成の制御が制限されている | カスタマイズの完全制御 |
| コスト構造 | 継続的な購読 | 1回限りの購入オプション |
| セキュリティ。 | ウェブ上で送信されるデータに関する潜在的な懸念 | データ処理を完全にローカル環境内に保持 |
| セットアップの複雑さ | 外部処理による初期設定の容易化 | 初期設定と構成が必要 |
IronPDFは完全にローカルなライブラリを提供し、開発者がPDF作成プロセスを完全にコントロールできるようにすることで差別化を図っています。 これは、ファイルの内部処理が優先されるアプリケーションや、外部API呼び出しによってセキュリティ上の懸念が生じるアプリケーションで特に有利です。 IronPdfはすべてをローカルで処理し、そのようなリスクを最小限に抑えます。
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からライセンスキーを取得します。
NuGetパッケージの変更
# Removepdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge
# Install IronPDF
dotnet add package IronPdf
# Removepdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge
# 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";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
pdforgeの使用法を特定する
# Findpdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .
# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
# Findpdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .
# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
完全な API リファレンス
名前空間の変更
// Before: pdforge
using PdfForge;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: pdforge
using PdfForge;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
' Before: pdforge
Imports PdfForge
Imports System.IO
' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
コア クラス マッピング
| pdforge | IronPDF |
|---|---|
HtmlToPdfConverter |
ChromePdfRenderer |
PdfClient |
ChromePdfRenderer |
PageSize.A4 |
PdfPaperSize.A4 |
PageOrientation.Landscape |
PdfPaperOrientation.Landscape |
戻り値の型: byte[] |
PdfDocument |
メソッドマッピング
| pdforge | IronPDF |
|---|---|
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
File.WriteAllBytes(path, bytes) |
pdf.SaveAs(path) |
戻り値の型: byte[] |
pdf.BinaryData |
構成マッピング
| pdforge | IronPDF (RenderingOptions) |
|---|---|
converter.PageSize = PageSize.A4 |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
converter.Orientation = PageOrientation.Landscape |
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape |
Footer = "Page {page} of {totalPages}" |
TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}" } |
pdforgeでは利用できない新機能
| IronPDFの特徴 | 翻訳内容 |
|---|---|
PdfDocument.Merge() |
複数のPDFを結合 |
pdf.ExtractAllText() |
PDFからのテキスト抽出 |
pdf.ApplyWatermark() |
透かしの追加 |
pdf.SecuritySettings |
パスワード保護 |
pdf.Form |
フォーム入力 |
pdf.SignWithDigitalSignature() |
デジタル署名 |
コード移行の例
例1: HTML文字列からPDFへの変換
ビフォア(pdforge):。
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PdfForge
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Class
翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var 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();
var 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 = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
ここでの基本的な違いは、処理モデルと戻り値の型です。pdforgeは HtmlToPdfConverter を ConvertHtmlString() と組み合わせて使用し、byte[] 配列を返します。その結果を保存するには、File.WriteAllBytes() を使用する必要があります。
IronPDF は、ChromePdfRenderer を RenderHtmlAsPdf() と組み合わせて使用し、PdfDocument オブジェクトを返します。 このオブジェクトは、SaveAs() を使用して直接保存できます。また、生のバイトが必要な場合は、pdf.BinaryData にアクセスすることもできます。 PdfDocument では、保存前に操作 (透かしの追加、他の PDF との結合、セキュリティの追加) を行うこともできます。 包括的な例については、HTML to PDF documentationを参照してください。
例2: URLからPDFへの変換
ビフォア(pdforge):。
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}
Imports PdfForge
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim pdf = converter.ConvertUrl("https://example.com")
File.WriteAllBytes("webpage.pdf", pdf)
End Sub
End Class
翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
pdforge は、HtmlToPdfConverter クラスで ConvertUrl() を使用し、File.WriteAllBytes() で書き込んだバイトを返します。IronPDFは、ChromePdfRenderer で RenderUrlAsPdf() を使用し、組み込みの SaveAs() メソッドを使用して PdfDocument を返します。
IronPdfの主な利点は、Chromiumエンジンを使ってURLを取得し、ローカルでレンダリングすることです。 IronPdfはローカルライブラリであるため、ウェブリクエストのラウンドトリップタイムがなく、パフォーマンスが向上します。 URLからPDFへの変換の詳細については、こちらをご覧ください。
例3: カスタム設定でHTMLファイルをPDFにする
ビフォア(pdforge):。
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
var htmlContent = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(htmlContent);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
var htmlContent = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(htmlContent);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PdfForge
Imports System.IO
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.PageSize = PageSize.A4
converter.Orientation = PageOrientation.Landscape
Dim htmlContent As String = File.ReadAllText("input.html")
Dim pdf As Byte() = converter.ConvertHtmlString(htmlContent)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Class
翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
var htmlContent = System.IO.File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
var htmlContent = System.IO.File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
Dim htmlContent = System.IO.File.ReadAllText("input.html")
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
End Sub
End Class
この例は、構成パターンの違いを示しています。pdforgeはコンバーター オブジェクトに直接プロパティを設定します (converter.Orientation = PageOrientation.Landscape)。
IronPDF は、厳密に型指定された列挙型 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 および renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape で RenderingOptions プロパティを使用します。 インテリセンスのサポートとコンパイル時の型安全性を提供します。 IronPDF、用紙サイズと方向の列挙のために IronPdf.Rendering 名前空間をインポートする必要があることに注意してください。 より多くの設定例については、チュートリアルを参照してください。
重要な移行に関する注意事項
返品タイプの変更
pdforge は byte[] を返します。IronPDFはPdfDocument を返します:
// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Direct save
byte[] bytes = pdf.BinaryData; // Get bytes if needed
// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Direct save
byte[] bytes = pdf.BinaryData; // Get bytes if needed
' pdforge: Returns byte()
Dim pdfBytes As Byte() = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdfBytes)
' IronPDF: Returns PdfDocument
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf") ' Direct save
Dim bytes As Byte() = pdf.BinaryData ' Get bytes if needed
コンバータ クラスの変更
// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();
// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();
// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();
' pdforge: HtmlToPdfConverter
Dim converter As New HtmlToPdfConverter()
' IronPDF: ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
メソッド名の変更
//pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)
//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
//pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)
//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
'pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)
'IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
保存メソッドの変更
// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
' pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes)
' IronPDF: Built-in save method
pdf.SaveAs("output.pdf")
コンフィギュレーション ロケーションの変更
pdforgeはコンバーターのプロパティを使用します; IronPDFはRenderingOptions:
// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
' pdforge: Properties on converter
converter.PageSize = PageSize.A4
converter.Orientation = PageOrientation.Landscape
' IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
ヘッダー/フッターのプレースホルダーの構文
ヘッダーやフッターにページ番号を使用する場合は、プレースホルダーの構文が異なります:
//pdforgeplaceholders
"Page {page} of {totalPages}"
//IronPDFplaceholders
"Page {page} of {total-pages}" // Note: hyphen in total-pages
//pdforgeplaceholders
"Page {page} of {totalPages}"
//IronPDFplaceholders
"Page {page} of {total-pages}" // Note: hyphen in total-pages
'pdforgeplaceholders
"Page {page} of {totalPages}"
'IronPDFplaceholders
"Page {page} of {total-pages}" ' Note: hyphen in total-pages
移行後の新機能
IronPDFに移行した後は、pdfでは提供できない機能を得ることができます:
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");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
テキスト抽出
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim allText As String = pdf.ExtractAllText()
ウォーターマーク
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
パスワード保護
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
機能比較の概要
| フィーチャー | pdforge | IronPDF |
|---|---|---|
| HTMLからPDFへ | ✓ | ✓ |
| URLからPDFへ | ✓ | ✓ |
| ページ設定 | ✓ | ✓ |
| オフライン対応 | ✗ | ✓ |
| ローカル処理 | ✗ | ✓ |
| PDFのマージ | ✗ | ✓ |
| PDFの分割 | ✗ | ✓ |
| テキストの抽出 | ✗ | ✓ |
| 透かし | ✗ | ✓ |
| フォーム入力 | ✗ | ✓ |
| デジタル署名 | ✗ | ✓ |
| パスワード保護 | ✗ | ✓ |
| 料金制限なし | ✗ | ✓ |
| 1回限りのライセンス | ✗ | ✓ |
移行チェックリスト
移行前
- コードベース内のすべてのpdforge API呼び出しをインベントリする
- 現在使用されている設定オプション(ページサイズ、向き)を文書化する
- 更新するヘッダー/フッターのプレースホルダーを識別します (
{totalPages}→{total-pages}) - IronPDFライセンス キーの保存を計画する (環境変数を推奨)
- まずはIronPDFの試用ライセンスでテストしてください
パッケージの変更
pdforgeNuGetパッケージを削除しますPdfForgeNuGetパッケージを削除しますIronPdfNuGetパッケージをインストールします:dotnet add package IronPdf
コードの変更
- すべての名前空間のインポートを更新します (
using PdfForge;→using IronPdf;) - 用紙サイズと用紙方向の列挙に
using IronPdf.Rendering;を追加します HtmlToPdfConverterをChromePdfRendererに置き換えますConvertHtmlString()をRenderHtmlAsPdf()に置き換えますConvertUrl()をRenderUrlAsPdf()に置き換えますFile.WriteAllBytes()をpdf.SaveAs()に置き換えますPageSizeプロパティをRenderingOptions.PaperSizeに移動しますOrientationプロパティをRenderingOptions.PaperOrientationに移動します- 列挙名を更新します (
PageSize.A4→PdfPaperSize.A4) - 列挙名を更新します (
PageOrientation.Landscape→PdfPaperOrientation.Landscape) - ヘッダー/フッターのプレースホルダー構文を更新
移行後
- PDF出力の品質が期待に沿うかテスト
- オフライン操作が機能することを確認する
- 構成からAPI資格情報を削除する
- 必要に応じて新しい機能(結合、透かし、セキュリティ)を追加します

