C#でXFINIUM.PDFからIronPdfへ移行する方法
XFINIUM.PDFからIronPDFへの移行:完全なC#開発者ガイド
XFINIUM.PDFは、C#でプログラム的にPDFを作成・編集するための包括的なツールを提供するクロスプラットフォームのPDFライブラリです。 このライブラリは、GeneratorとViewerの2つのエディションを提供していますが、座標ベースのグラフィックス・プログラミングに依存しているため、ドキュメントを多用するアプリケーションを構築する開発チームにとっては大きな課題となります。 すべての要素をピクセル座標を使って手作業で配置しなければならないため、単純な文書のはずが複雑な描画の練習になってしまいます。
このガイドでは、XFINIUM.PDFからIronPDFへの完全な移行経路を、移行を検討している.NET開発者のために、ステップバイステップの説明、コード比較、実用的な例とともに提供します。
なぜXFINIUM.PDFから移行するのか
XFINIUM.PDFは、座標ベースのグラフィックスプログラミングに依存する低レベルのPDFライブラリであり、開発者はページ上のすべての要素を手動で配置することを余儀なくされます。 要件が変わると、このアプローチはメンテナンスの悪夢となります。 開発チームが移行を検討する主な理由は次のとおりです:
HTMLサポートなし:XFINIUM.PDFは、HTML/CSSを直接PDFに変換することはできません。 低レベルの描画プリミティブを使用したプログラムによるPDF作成に重点を置いており、広範なHTML-to-PDF機能を必要とするプロジェクトでは十分ではないかもしれません。
座標ベース API:DrawString("text", font, brush, 50, 100)のようなピクセル座標による手動ポジショニングは、ページ上のすべての要素に対して必要です。
手動フォント管理:フォントオブジェクトは、PdfStandardFontやPdfBrushのようなクラスを使用して明示的に作成し、管理する必要があります。
CSSスタイリングなし: 最新のWebスタイリングをサポートしていません。 色、フォント、レイアウトは、プログラムのメソッド呼び出しによって手動で処理する必要があります。
JavaScriptレンダリングなし:静的コンテンツのみ。 XFINIUM.PDFは、動的なWebコンテンツのレンダリングやJavaScriptの実行はできません。
複雑なテキストレイアウト:単純な1行テキストを超えるものについては、手作業によるテキストの計測と折り返しの計算が必要です。
限られたコミュニティリソース: 主要なソリューションと比較して、例題やチュートリアルなどのコミュニティが提供するリソースが不足しているため、新規ユーザーが使い始めるのが難しくなります。
核心的な問題: グラフィックス API 対 HTML
XFINIUM.PDFは、ドキュメントデザイナーではなく、グラフィックプログラマーのように考えることを強制します:
// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50);
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80);
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80);
// ... hundreds of lines for a simple document// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50);
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80);
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80);
// ... hundreds of lines for a simple documentIRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFは使い慣れたHTML/CSSを使用しています:
// IronPDF: Declarative HTML
var html = @"<h1>Invoice</h1><p><b>Customer:</b> " + customer.Name + "</p>";
var pdf = renderer.RenderHtmlAsPdf(html);// IronPDF: Declarative HTML
var html = @"<h1>Invoice</h1><p><b>Customer:</b> " + customer.Name + "</p>";
var pdf = renderer.RenderHtmlAsPdf(html);IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFとXFINIUM.PDFの比較:機能比較
アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:
| フィーチャー | XFINIUM.PDF | IronPDF |
|---|---|---|
| HTMLからPDFへ | HTMLのサポートは限定的で、プログラムによるPDF作成に重点を置いています。 | 包括的なサポートによる完全なHTMLからPDFへの変換 |
| コミュニティ&サポート | コミュニティが小さく、利用可能なオンラインリソースが少ない | 広範なドキュメントとチュートリアルを備えた大規模コミュニティ |
| ライセンス | 開発者ベースの商用ライセンス | 商用 |
| クロスプラットフォーム・サポート | 強力なクロスプラットフォーム機能 | クロスプラットフォームにも対応 |
| CSSサポート | なし | 完全なCSS3 |
| JavaScript(ジャバスクリプト | なし | フルES2024 |
| フレックスボックス/グリッド | なし | はい |
| 自動レイアウト。 | なし | はい |
| 自動改ページ | なし | はい |
| マニュアルポジショニング | 必須 | オプション(CSSポジショニング) |
| ラーニングカーブ | 高(座標系) | 低レベル(HTML/CSS) |
| コードの正確さ | 非常に高い | 低レベル |
クイックスタート:XFINIUM.PDFからIronPDFへの移行
これらの基本的なステップを踏めば、すぐにでも移行を開始できます。
ステップ 1: NuGet パッケージを置き換える。
XFINIUM.PDFを削除してください:
# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf# Remove XFINIUM.PDF
dotnet remove package Xfinium.PdfIronPDFをインストールします:
# Install IronPDF
dotnet add package IronPdf# Install IronPDF
dotnet add package IronPdfステップ 2: 名前空間の更新
XFINIUM.PDF名前空間をIronPdf名前空間に置き換えてください:
// Before (XFINIUM.PDF)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Content;
using Xfinium.Pdf.FlowDocument;
// After (IronPDF)
using IronPdf;// Before (XFINIUM.PDF)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Content;
using Xfinium.Pdf.FlowDocument;
// After (IronPDF)
using IronPdf;IRON VB CONVERTER ERROR developers@ironsoftware.comステップ 3: ライセンスの初期化
アプリケーション起動時のライセンス初期化を追加します:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"コード移行の例
HTML を PDF に変換する
最も基本的な操作は、これらの.NET PDFライブラリの複雑さの違いを明らかにします。
XFINIUM.PDFのアプローチ:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Actions;
using Xfinium.Pdf.FlowDocument;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfFlowDocument flowDocument = new PdfFlowDocument();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
PdfFlowContent content = new PdfFlowContent();
content.AppendHtml(html);
flowDocument.AddContent(content);
flowDocument.RenderDocument(document);
document.Save("output.pdf");
}
}// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Actions;
using Xfinium.Pdf.FlowDocument;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfFlowDocument flowDocument = new PdfFlowDocument();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
PdfFlowContent content = new PdfFlowContent();
content.AppendHtml(html);
flowDocument.AddContent(content);
flowDocument.RenderDocument(document);
document.Save("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></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();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comXFINIUM.PDFは、PdfFixedDocument、PdfFlowDocument、PdfFlowContentオブジェクトを作成し、AppendHtml()を呼び出し、フロードキュメントにコンテンツを追加し、固定ドキュメントにレンダリングし、最後に保存する必要があります。 IronPDFはこれを3行に単純化します: レンダラーを作成し、HTMLをレンダリングし、保存します。
高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。
複数のPDFをマージする
PDFマージは、APIの複雑さの違いを明確に示します。
XFINIUM.PDFのアプローチ:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument output = new PdfFixedDocument();
FileStream file1 = File.OpenRead("document1.pdf");
PdfFixedDocument pdf1 = new PdfFixedDocument(file1);
FileStream file2 = File.OpenRead("document2.pdf");
PdfFixedDocument pdf2 = new PdfFixedDocument(file2);
for (int i = 0; i < pdf1.Pages.Count; i++)
{
output.Pages.Add(pdf1.Pages[i]);
}
for (int i = 0; i < pdf2.Pages.Count; i++)
{
output.Pages.Add(pdf2.Pages[i]);
}
output.Save("merged.pdf");
file1.Close();
file2.Close();
}
}// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument output = new PdfFixedDocument();
FileStream file1 = File.OpenRead("document1.pdf");
PdfFixedDocument pdf1 = new PdfFixedDocument(file1);
FileStream file2 = File.OpenRead("document2.pdf");
PdfFixedDocument pdf2 = new PdfFixedDocument(file2);
for (int i = 0; i < pdf1.Pages.Count; i++)
{
output.Pages.Add(pdf1.Pages[i]);
}
for (int i = 0; i < pdf2.Pages.Count; i++)
{
output.Pages.Add(pdf2.Pages[i]);
}
output.Save("merged.pdf");
file1.Close();
file2.Close();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
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.comXFINIUM.PDFは、出力文書を作成し、ファイルストリームを開き、各文書を読み込み、手動でページを繰り返し、1つずつ追加し、保存し、ストリームを閉じる必要があります。 IronPDFは単一のPdfDocument.Merge()メソッドを提供し、すべての複雑さを内部で処理します。
その他のマージ オプションについては、PDF マージ ドキュメントを参照してください。
テキストと画像でPDFを作成する
内容が混在する文書は、基本的なパラダイムの違いを示しています。
XFINIUM.PDFのアプローチ:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Core;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();
PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
PdfBrush brush = new PdfBrush(PdfRgbColor.Black);
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
FileStream imageStream = File.OpenRead("image.jpg");
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
imageStream.Close();
document.Save("output.pdf");
}
}// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Core;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();
PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
PdfBrush brush = new PdfBrush(PdfRgbColor.Black);
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
FileStream imageStream = File.OpenRead("image.jpg");
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
imageStream.Close();
document.Save("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
string html = $@"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
string html = $@"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comXFINIUM.PDFは、文書の作成、ページの追加、フォントとブラシのオブジェクトの作成、特定の座標でのテキストの描画、画像ストリームを開く、PdfJpegImageの作成、寸法を持つ座標での画像の描画、ストリームの終了、保存を必要とします。 IronPDFはbase64画像を埋め込んだ標準的なHTMLを使用しています。
XFINIUM.PDFAPIからIronPDFへのマッピングリファレンス
このマッピングは、APIと同等のものを直接示すことで、移行を加速します:
| XFINIUM.PDF | IronPDF | ノート |
|---|---|---|
| <コード>PdfFixedDocument</コード | <コード>ChromePdfRenderer</コード | ドキュメントではなく、レンダラーを作成 |
| <コード>PdfPage</コード | 自動翻訳 | HTMLコンテンツから作成されたページ |
page.Graphics.DrawString()。 | HTMLテキスト要素 | <p>、<h1>、<span>など。 |
page.Graphics.DrawImage()。 | <img>タグ | HTML画像 |
| <コード>page.Graphics.DrawLine()</コード | CSS borderまたは<hr>を使用してください。 | HTML/CSSライン |
page.Graphics.DrawRectangle()。 | <div>上のCSS border。 | HTMLボックス |
| <コード>PdfStandardFont</コード | CSS <コード>font-family</コード | フォントオブジェクトは不要 |
| <コード>PdfRgbColor</コード | CSS <コード>カラー</コード | 標準CSSカラー |
| <コード>PdfBrush</コード | CSSプロパティ | 背景、色など |
| <コード>PdfJpegImage</コード | <img>タグとbase64 | またはファイルパス |
document.Save(stream)を実行します。 | pdf.SaveAs()または pdf.BinaryData。 | 複数の出力オプション |
| <コード>PdfFlowDocument</コード | <コード>RenderHtmlAsPdf()</コード | HTMLフルサポート |
PdfFlowContent.AppendHtml()を使用してください。 | <コード>RenderHtmlAsPdf()</コード | 直接HTMLレンダリング |
一般的な移行の問題と解決策
課題1: 座標ベースのレイアウト
XFINIUM.PDF:すべて正確なX,Y座標が必要で、手動での位置決めが必要です。
ソリューション: HTML/CSSフローレイアウトを使用する。 絶対位置指定が必要な場合は、CSSを使用してください:
.positioned-element {
position: absolute;
top: 100px;
left: 50px;
}課題2:フォントオブジェクト管理
XFINIUM.PDF:各フォントのPdfStandardFontまたはPdfUnicodeTrueTypeFontオブジェクトを作成します。
ソリューション: CSS font-familyを使用してください:
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style><style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>課題3: カラーハンドリング
XFINIUM.PDF:色のためのPdfRgbColorとPdfBrushオブジェクトを作成します。
解決策:標準的なCSSの色を使用する:
.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
.info { color: rgba(0, 0, 255, 0.8); }課題4:マニュアルの改ページ
XFINIUM.PDF:Y位置を追跡し、コンテンツがオーバーフローしたときに手動で新しいページを作成します。
ソリューション: IronPDFは自動改ページを処理します。 明示的な制御にはCSSを使用してください:
.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }課題5:画像の読み込み
XFINIUM.PDF:ファイルストリームを開き、PdfJpegImageオブジェクトを作成し、座標で描画し、ストリームを閉じます。
ソリューション: ファイルパスまたはbase64データを含むHTML <img>タグを使用してください:
<img src="image.jpg" width="200" height="150" />
<!-- or -->
<img src="data:image/jpeg;base64,..." /><img src="image.jpg" width="200" height="150" />
<!-- or -->
<img src="data:image/jpeg;base64,..." />XFINIUM.PDF移行チェックリスト
マイグレーション前のタスク
コードベースを監査して、すべてのXFINIUM.PDFの使用法を特定してください:
grep -r "using Xfinium.Pdf" --include="*.cs" .
grep -r "Graphics.DrawString\|Graphics.DrawImage\|Graphics.DrawLine" --include="*.cs" .grep -r "using Xfinium.Pdf" --include="*.cs" .
grep -r "Graphics.DrawString\|Graphics.DrawImage\|Graphics.DrawLine" --include="*.cs" .座標ベースのレイアウトを文書化し、すべてのX,Y位置決め値に注意してください。 フォントと色のオブジェクト(PdfStandardFont、PdfRgbColor、PdfBrush)を識別します。 PdfFixedDocument.Pages.Add()を使用して、マージされたPDFワークフローをマップします。
コード更新タスク
1.Xfinium.Pdf NuGet パッケージの削除 2.IronPdf NuGetパッケージをインストールする 3.名前空間のインポートをXfinium.PdfからIronPdfに更新してください。 4.DrawString()コールをHTMLテキスト要素に変換する 5.DrawImage()コールをHTMLの<img>タグに変換する。 6.DrawRectangle()とDrawLine()を CSS ボーダーに変換する 7.PdfStandardFontをCSSのfont-familyに置き換えてください。 8.PdfRgbColorとPdfBrushをCSSカラーに置き換えてください。 9.ページ ループ マージを PdfDocument.Merge() に置き換えてください。 10.起動時にIronPDFライセンスの初期化を追加する
移行後のテスト
移行後、これらの点を検証してください:
- ビジュアル出力を比較し、外観が期待に一致することを確認する。
- 新しいHTML/CSSアプローチによるテキストレンダリングの検証
- CSSを使用した画像ポジショニングのチェック
- 期待どおりに改ページが行われることを確認
- PDFのセキュリティ設定が正しく適用されていることを確認する
- すべてのターゲットプラットフォームでテスト
IronPDFに移行する主な利点
XFINIUM.PDFからIronPDFに移行することで、いくつかの重要な利点が得られます:
HTMLベースのコンテンツ作成:ウェブ開発者は、既存のHTMLとCSSのスキルを活用できます。 座標ベースの描画APIを学んだり、フォントやブラシのオブジェクトを管理したりする必要はありません。
自動レイアウト:テキストの折り返し、ページネーション、フローレイアウトは自動的に行われます。 要素の位置や改ページを手動で計算する必要はありません。
最新のCSSサポート:FlexboxとGridレイアウトを含む完全なCSS3。 レスポンシブデザインはPDFに直接翻訳します。
簡素化された PDF 操作: PdfDocument.Merge()のような一般的な操作のための単一メソッド呼び出しが、複雑なページ反復ループを置き換えます。
アクティブ開発:2026年まで.NET 10とC# 14の採用が増加する中、IronPDFの定期的なアップデートは現在と将来の.NETバージョンとの互換性を保証します。
豊富なドキュメント:XFINIUM.PDFの小規模なエコシステムと比較して、包括的なドキュメント、チュートリアル、サポートリソースを持つ大規模なコミュニティ。
結論
XFINIUM.PDFは、強力なクロスプラットフォーム機能を備えた包括的なPDF操作ツールを提供します。 しかし、座標ベースのグラフィックス・プログラミングのアプローチでは、文書生成タスクに不必要な複雑さが生じます。 すべての要素で、手作業による位置決め、フォントオブジェクトの作成、明示的な色管理が必要です。
IronPdfはPDFの生成をグラフィックプログラミングの練習から、慣れ親しんだHTML/CSS開発に変えます。 NuGetパッケージを置き換え、描画コマンドをHTML要素に変換し、スタイリングとレイアウトにCSSを活用します。
IronPDFの無料トライアルで今すぐ移行を開始し、HTMLベースのドキュメント生成のシンプルさを体験してください。
包括的な実装ガイダンスについては、IronPDFドキュメントとチュートリアルをご覧ください。






