PDFSharpとIronPDFの比較:技術比較ガイド
PDFSharpvs IronPDF:.NETにおける低レベルの描画とHTMLベースのPDF生成
.NET開発者がプログラムでPDFドキュメントを作成する必要がある場合、一般的にPDFSharpとIronPDFを検討します。 PDFSharpは座標ベースの描画アプローチでPDFを作成するための一般的な選択肢であり、IronPDFは最新のCSSをサポートしたHTMLからPDFへの変換を提供します。 この比較では、両ライブラリを検証し、アーキテクチャの違い、APIパターン、さまざまな開発シナリオへの適合性を分析します。
PDFSharpとは何ですか?
PDFSharpは、低レベルのPDF作成ライブラリであり、開発者がプログラム的な座標ベースのアプローチによってPDF文書を生成することを可能にします。 MITライセンスの下でリリースされたPDFSharpは、開発者コミュニティにライセンス費用なしで使用と変更の自由を与えます。
PDFSharpは、主にPDFをゼロから描画し、コンパイルするためのツールとして機能します。 ライブラリはGDI+スタイルのAPIを使用しており、開発者はX,Y座標を使用して各要素を配置します。 このアプローチでは、キャンバスに絵を描くのと同じように、テキスト、画像、線、長方形の正確な位置を計算する必要があります。
PDFSharpの主な特徴は以下のとおりです:
- 座標ベースの描画: すべての要素は、明示的なX,Yの位置決めを必要とします。
- MITライセンス:使用、変更、配布は自由です。
- GDI+スタイルAPI:
XGraphics、XFont、XBrush、XPenクラスを使用します。 - 手動ページ管理:開発者はページの作成とオーバーフローを手動で処理する
- HTMLサポートなし:HTML/CSSを直接PDFに変換できません。
- 軽量:外部依存がなく、デプロイを簡素化します。
PDFSharpは、HTMLからPDFへのコンバータであると誤解されることがありますが、そうではありません。 その目的は、プログラムによるPDF文書作成に特化しています。 HTMLレンダリング機能を提供することを目的としたアドオンHtmlRenderer.PdfSharpがありますが、CSS 2.1のみをサポートし、フレックスボックスやグリッドなどの最新のCSS機能には対応しておらず、壊れたテーブルレンダリングなどの制限があります。
IronPDFとは何ですか?
IronPDFは、包括的な.NETライブラリで、埋め込まれたChromiumレンダリングエンジンを使用してネイティブのHTMLからPDFへの変換を提供します。ChromePdfRenderer クラスは、HTML5、CSS3、および JavaScript を完全にサポートし、フレックスボックスやグリッドのようなモダンなレイアウト機能を含む HTML コンテンツを変換します。
PDFSharpの座標ベースのアプローチとは異なり、IronPDFは開発者がドキュメント作成にウェブ技術を活用することを可能にします。 開発者は、X,Yの位置を計算する代わりに、HTMLとCSSを書いて、文書の構造とスタイルを定義します。 Chromiumエンジンは、テキストの流れ、改ページ、要素の配置を自動的に処理します。
アーキテクチャの比較
PDFSharpとIronPDFの基本的な違いは、文書作成に対するアプローチにあります:手動による座標ベースの描画とHTMLベースのレンダリングです。
| アスペクト | PDFSharp | IronPDF |
|---|---|---|
| ドキュメント作成 | 座標ベースの図面 | HTML/CSSテンプレート |
| レイアウトシステム | マニュアルX,Yポジショニング | CSS フロー/フレックスボックス/グリッド |
| 改ページ | 手計算 | 自動 + CSS コントロール |
| テーブル | セルを個別に描画 | HTML <コード><テーブル><コード></コード |
| スタイリング。 | コードベースのフォント/カラー | CSSスタイルシート |
| メンテナンス | 修正が難しい | HTML/CSSの編集 |
| ラーニングカーブ | GDI+の知識が必要 | ウェブスキルの移転 |
| HTMLからPDFへのサポート。 | なし | はい(HTML5/CSS3サポート) |
| モダンCSSサポート | なし(CSS 2.1のみアドオン経由) | はい(フルCSS3) |
| ライセンス | MIT (無料) | 商用 |
| 更新情報 | 頻度 | レギュラー |
ウェブ開発の経験を持つ開発者にとって、IronPdfのHTMLベースのアプローチは既存のスキルをPDF生成に移行します。 個々のピクセルをきめ細かく制御する必要がある開発者や、GDI+の背景を持つ開発者にとっては、PDFSharpはなじみのあるパターンを提供します。
HTMLからPDFへの変換
HTMLコンテンツをPDFに変換することは、これらのライブラリ間の基本的な能力差を示しています。
PDFSharpのHTMLからPDFへのアプローチ:。
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
//PDFSharpdoes not have built-in HTML to PDF conversion
// You need to manually parse HTML and render content
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 12);
// Manual text rendering (no HTML support)
gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.TopLeft);
document.Save("output.pdf");
}
}// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
//PDFSharpdoes not have built-in HTML to PDF conversion
// You need to manually parse HTML and render content
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 12);
// Manual text rendering (no HTML support)
gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.TopLeft);
document.Save("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFのHTMLからPDFへのアプローチ:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
//IronPDFhas native HTML to PDF rendering
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
//IronPDFhas native HTML to PDF rendering
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFSharpはHTMLをPDFに変換することはできません。 このライブラリでは、開発者自身がHTMLを解析し、座標を使って各要素を描画する手動レンダリングが必要です。 IronPdfのChromePdfRendererはネイティブでHTML文字列を受け入れ、埋め込まれたChromiumエンジンを通して完全なCSSサポートでレンダリングします。
この能力の差は、開発時間に大きく影響します。PDFSharpでスタイル付きドキュメントを作成するにはすべての要素の位置を計算する必要がありますが、IronPDFの開発者は標準的なHTML/CSSを記述します。 HTMLからPDFへの変換に関する詳しいガイダンスについては、HTML to PDFチュートリアルをご覧ください。
既存のPDFにテキストを追加する
既存のPDFを修正してテキストを追加することで、文書操作のさまざまなアプローチを示します。
PDFにテキストを追加するPDFSharp:。
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
PdfPage page = document.Pages[0];
// Get graphics object
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 20, XFontStyle.Bold);
// Draw text at specific position
gfx.DrawString("Watermark Text", font, XBrushes.Red,
new XPoint(200, 400));
document.Save("modified.pdf");
}
}// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
PdfPage page = document.Pages[0];
// Get graphics object
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Arial", 20, XFontStyle.Bold);
// Draw text at specific position
gfx.DrawString("Watermark Text", font, XBrushes.Red,
new XPoint(200, 400));
document.Save("modified.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFにテキストを追加するIronPDF:。
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
var pdf = PdfDocument.FromFile("existing.pdf");
// Add text stamp/watermark
var textStamper = new TextStamper()
{
Text = "Watermark Text",
FontSize = 20,
Color = IronSoftware.Drawing.Color.Red,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("modified.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
// Open existing PDF
var pdf = PdfDocument.FromFile("existing.pdf");
// Add text stamp/watermark
var textStamper = new TextStamper()
{
Text = "Watermark Text",
FontSize = 20,
Color = IronSoftware.Drawing.Color.Red,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("modified.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFSharpは、PdfReader.Open()を使って既存のPDFを読み込み、XGraphicsオブジェクトを取得して、DrawString()を使って特定のX,Y座標にテキストを描画します。 開発者は正確な位置を計算する必要があります。
IronPDFはPdfDocument.FromFile()を使ってPDFを読み込み、VerticalAlignment.MiddleやHorizontalAlignment.Centerのようなアライメントプロパティを持つTextStamperオブジェクトを作成します。 ApplyStamp()メソッドは、これらのアライメント設定に基づいて位置決めを処理します。 包括的な透かしのオプションについては、透かしのドキュメントを参照してください。
画像でPDFを作成する
PDFに画像を追加することで、座標ベースとHTMLベースのアプローチの間の異なるパラダイムを示します。
画像付きPDFを作成するPDFSharp:。
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Load and draw image
XImage image = XImage.FromFile("image.jpg");
// Calculate size to fit page
double width = 200;
double height = 200;
gfx.DrawImage(image, 50, 50, width, height);
// Add text
XFont font = new XFont("Arial", 16);
gfx.DrawString("Image in PDF", font, XBrushes.Black,
new XPoint(50, 270));
document.Save("output.pdf");
}
}// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Load and draw image
XImage image = XImage.FromFile("image.jpg");
// Calculate size to fit page
double width = 200;
double height = 200;
gfx.DrawImage(image, 50, 50, width, height);
// Add text
XFont font = new XFont("Arial", 16);
gfx.DrawString("Image in PDF", font, XBrushes.Black,
new XPoint(50, 270));
document.Save("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com画像付きPDFを作成するIronPDF:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create PDF from HTML with image
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Image in PDF</h1>
<img src='image.jpg' style='width:200px; height:200px;' />
<p>Easy image embedding with HTML</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Alternative: Add image to existing PDF
var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
{
VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
};
existingPdf.ApplyStamp(imageStamper);
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create PDF from HTML with image
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Image in PDF</h1>
<img src='image.jpg' style='width:200px; height:200px;' />
<p>Easy image embedding with HTML</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Alternative: Add image to existing PDF
var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
{
VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
};
existingPdf.ApplyStamp(imageStamper);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFSharpでは、XImage.FromFile()で画像を読み込み、gfx.DrawImage(image, x, y, width, height)で特定の座標に描画する必要があります。 テキストは、計算された座標を使用して画像に対して相対的に配置する必要があります。
IronPdfは標準的なHTMLの<img>タグとCSSスタイルを使って画像を埋め込むことができます。 Chromiumエンジンは、CSSプロパティによって画像の読み込み、サイズ調整、位置決めを行います。 また、ImageStamperは、既存のPDFにアライメントベースの位置合わせで画像を追加することができます。
APIマッピングリファレンス
PDFSharpからIronPdfへの移行を検討しているチームにとって、APIマッピングを理解することは開発工数の見積もりに役立ちます。
コアクラス
| PDFSharp | IronPDF | ノート |
|---|---|---|
new PdfDocument(). | ChromePdfRenderer.RenderHtmlAsPdf()のようになります。 | HTMLから作成 |
document.AddPage()。 | 自動翻訳 | HTMLコンテンツから作成されたページ |
XGraphics.FromPdfPage()を使用しています。 | 不要 | HTML要素の使用 |
| <コード>document.Save()</コード | <コード>pdf.SaveAs()</コード | 類似機能 |
| <コード>PdfReader.Open()</コード | PdfDocument.FromFile()を使用してください。 | 既存のPDFを開く |
| <コード>document.Pages.Count</コード | <コード>pdf.PageCount</コード | ページ数 |
図面から HTML 要素へのマッピング
| PDFSharp API | IronPDF HTMLと同等のもの | ノート |
|---|---|---|
| <コード>XGraphics.DrawString()</コード | HTML <p>、<h1>など。 | CSSを使用したポジション |
| <コード>XGraphics.DrawImage()</コード | HTML <img>タグ | CSSを使用したポジション |
| <コード>XGraphics.DrawLine()</コード | CSSボーダーまたはSVG | <hr> または CSS ボーダー |
| <コード>XGraphics.DrawRectangle()</コード | CSSまたはSVG | <div> ボーダー付き |
| <コード>XFont</コード | CSS font-family、font-size。 | 標準CSS |
XBrush、XPen。 | CSSカラー/ボーダー | <コード>カラー</コード>, <コード>背景色</コード |
| <コード>XRect</コード | CSSポジショニング | margin, padding, width, height. |
名前空間の変更
| PDFSharp | IronPDF |
|---|---|
| <コード>PdfSharp.Pdf</コード | IronPdf(アイアンPDF |
| <コード>PdfSharp.Drawing</コード | 不要(HTML/CSSを使用) |
| <コード>PdfSharp.Pdf.IO</コード | IronPdf(アイアンPDF |
最も大きな変更点は、PdfSharp.Drawing-IronPDFが座標ベースの描画をHTML/CSSレイアウトに置き換えたことです。
座標計算問題
PDFSharp の GDI+ アプローチは、大きな開発オーバーヘッドを生み出します:
- 各要素の正確なX,Y位置を計算する:各テキストブロック、画像、図形の位置決めは手作業が必要です。
- ページのはみ出しに対してコンテンツの高さを手動で追跡する:開発者は、コンテンツがページの境界を超えたときに検出しなければなりません。
- 行の折り返しやテキストの計測を自分で行う:長いテキストでは改行位置を計算する必要がある
- ボーダー計算で表をセルごとに描画する: 各表のセルには、個別の位置決めとボーダー描画が必要です。
- 手動改ページで複数ページのドキュメントを管理する:ページ境界の検出と処理は手動です。
IronPDFはChromiumレイアウトエンジンを活用することで、このような懸念を解消します。テキストは自然に流れ、表は自動的にリサイズされ、改ページは適切な位置で行われます。
機能比較の概要
| フィーチャー | PDFSharp | IronPDF |
|---|---|---|
| ライセンス | MIT (無料) | 商用 |
| HTMLからPDFへのサポート。 | なし | はい(HTML5/CSS3サポート) |
| モダンCSSサポート | なし(CSS 2.1のみ) | はい(フルCSS3) |
| ドキュメント API | 低レベル(座標が必要です) | ハイレベル(簡易API) |
| フレックスボックス/グリッドサポート | なし | はい |
| 自動改ページ | いいえ(マニュアル) | はい |
| 更新情報 | 頻度 | レギュラー |
| 外部依存関係について | なし | Chromiumエンジン |
| テキスト測定 | MeasureString()によるマニュアル | 自動翻訳 |
| テーブルレンダリング | セル単位のマニュアル | HTML <コード><テーブル><コード></コード |
最新のCSSレイアウト、自動ページ分割、HTMLテンプレートベースの生成を必要とするアプリケーションは、IronPdfのアプローチから大きな恩恵を受けます。
チームがPDFSharpからIronPDFへの移行を検討するとき
PDFSharpの代替としてIronPDFを評価するチームにはいくつかの要因があります:
開発時間の短縮:PDFSharpでは、要素ごとにX,Yの位置を計算する必要があります。 座標計算や改ページ処理に多大な時間を費やしているチームでは、HTML/CSSベースの生成が劇的に速くなることがよくあります。
モダンCSSの要件:PDFSharpは、フレックスボックス、グリッド、CSS3セレクタのような最新のCSS機能をレンダリングすることはできません。 現代的なウェブレイアウトを必要とするアプリケーションはIronPDFのChromiumエンジンを使用する必要があります。
保守性の懸念:座標ベースのPDFSharpコードは修正が困難です-1つの要素を変更すると、後続の要素の位置を調整しなければならないことがよくあります。 HTML/CSSテンプレートは、更新が非常に簡単です。
ウェブ開発スキルの移転: HTML/CSSの専門知識を持つチームは、GDI+スタイルの描画APIを学ぶのではなく、既存のスキルをIronPDFによるPDF生成に応用することができます。
複雑な文書の要件:テーブル、混合コンテンツ、または動的レイアウトを含むドキュメントは、座標ベースの位置決めではますます難しくなります。 HTMLテンプレートは、より自然に複雑さを処理します。
積極的なメンテナンスの必要性:PDFSharpは頻繁に更新されません。 定期的なセキュリティパッチや機能アップデートを必要とするチームは、IronPDFのアクティブな開発から利益を得ることができます。
インストールの比較
PDFSharpのインストール:。
Install-Package PdfSharpInstall-Package PdfSharp外部依存のない軽量なもの。
IronPDFのインストール:。
Install-Package IronPdfInstall-Package IronPdfIronPDFはライセンスキーの設定が必要です:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"IronPdfのChromiumエンジンは包括的なレンダリング機能を提供しますが、PDFSharpの軽量なアプローチよりもフットプリントが大きくなります。 このライブラリは、.NET Framework、.NET Core、.NET 5+、および.NET 10とC# 14への前方互換性をサポートしています。
決定する
PDFSharpとIronPDFのどちらを選択するかはプロジェクトの要件によります:
次のような場合にPDFSharpを検討してください: プロジェクトが、追加の依存関係なしにドキュメントのレンダリングを細かく制御する必要がある、予算の制約で商用ライセンスが禁止されている、座標ベースの位置決めに慣れている、ドキュメントがHTML/CSSレンダリングを必要としない。
IronPDFをご検討ください: CSS3をサポートした最新のHTMLからPDFへの変換が必要な場合、チームにウェブ開発のスキルがある場合、自動的なテキストフロー、テーブル、改ページの処理が必要な場合、開発時間の短縮が重要な場合、積極的なメンテナンスとサポートが必要な場合などです。
IronPDFを始めよう
IronPDFをPDF生成のニーズに合わせて評価する:
1.NuGet経由でインストールします:IronPdfをインストールします。 2.使い始めのドキュメントを確認してください。 3.変換パターンについては、HTML to PDF チュートリアルを参照してください。 4.完全なメソッドのドキュメントについては、APIリファレンスを確認してください。
IronPDFチュートリアルは、基本的な変換から高度なPDF操作まで、一般的なシナリオをカバーする包括的な例を提供します。
結論
PDFSharpとIronPDFは.NET PDF生成の分野で異なるニーズに対応しています。PDFSharpは、 予算の制約があり、 座標ベースの描画が許容されるような、 追加の依存関係を伴わない文書レンダリングの細かい制御を必要とするプロジェクトに適しています。 しかし、最新のウェブ標準や、HTMLを介して配信される動的なコンテンツを必要とするプロジェクトには不十分です。
IronPDFはCSS3、HTML5、高レベルのドキュメント操作をサポートする堅牢な機能のおかげで、最新のHTMLからPDFへの変換が必要な状況ではPDFSharpを凌駕します。 このツールには商用ライセンスが付属していますが、生産性の向上と最新の機能により、投資を正当化することができます。
コストの制約、最新のウェブサポートの必要性、複雑な文書設計など、プロジェクトの要件を理解することが、これら2つのライブラリの選択の指針になります。 PDFSharpの座標ベースの性質は、IronPDFのHTMLベースのアプローチが排除する開発オーバーヘッドを生み出しますが、PDFSharpのMITライセンスと軽量なフットプリントは適切な使用例にとって魅力的です。
これらのライブラリのいずれかを選択する際には、要件(HTML/CSSサポートのニーズ、開発スケジュール、メンテナンスの考慮事項、予算)を総合的に評価してください。 アーキテクチャの違いは基本的なものであり、PDF生成ワークフローのあらゆる側面に影響を与えます。