比較

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+スタイルAPIXGraphicsXFontXBrushXPen クラスを使用します。
  • 手動ページ管理:開発者はページの作成とオーバーフローを手動で処理する
  • 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ベースのレンダリングです。

アスペクトPDFSharpIronPDF
ドキュメント作成座標ベースの図面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.com
$vbLabelText   $csharpLabel

IronPDFの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.com
$vbLabelText   $csharpLabel

PDFSharpは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.com
$vbLabelText   $csharpLabel

PDFにテキストを追加する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.com
$vbLabelText   $csharpLabel

PDFSharpは、PdfReader.Open()を使って既存のPDFを読み込み、XGraphicsオブジェクトを取得して、DrawString()を使って特定のX,Y座標にテキストを描画します。 開発者は正確な位置を計算する必要があります。

IronPDFはPdfDocument.FromFile()を使ってPDFを読み込み、VerticalAlignment.MiddleHorizontalAlignment.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
$vbLabelText   $csharpLabel

画像付き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.com
$vbLabelText   $csharpLabel

PDFSharpでは、XImage.FromFile()で画像を読み込み、gfx.DrawImage(image, x, y, width, height)で特定の座標に描画する必要があります。 テキストは、計算された座標を使用して画像に対して相対的に配置する必要があります。

IronPdfは標準的なHTMLの<img>タグとCSSスタイルを使って画像を埋め込むことができます。 Chromiumエンジンは、CSSプロパティによって画像の読み込み、サイズ調整、位置決めを行います。 また、ImageStamperは、既存のPDFにアライメントベースの位置合わせで画像を追加することができます。

APIマッピングリファレンス

PDFSharpからIronPdfへの移行を検討しているチームにとって、APIマッピングを理解することは開発工数の見積もりに役立ちます。

コアクラス

PDFSharpIronPDFノート
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 APIIronPDF 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-familyfont-size標準CSS
XBrushXPenCSSカラー/ボーダー<コード>カラー</コード>, <コード>背景色</コード
<コード>XRect</コードCSSポジショニングmargin, padding, width, height.

名前空間の変更

PDFSharpIronPDF
<コード>PdfSharp.Pdf</コードIronPdf(アイアンPDF
<コード>PdfSharp.Drawing</コード不要(HTML/CSSを使用)
<コード>PdfSharp.Pdf.IO</コードIronPdf(アイアンPDF

最も大きな変更点は、PdfSharp.Drawing-IronPDFが座標ベースの描画をHTML/CSSレイアウトに置き換えたことです。

座標計算問題

PDFSharp の GDI+ アプローチは、大きな開発オーバーヘッドを生み出します:

  • 各要素の正確なX,Y位置を計算する:各テキストブロック、画像、図形の位置決めは手作業が必要です。
  • ページのはみ出しに対してコンテンツの高さを手動で追跡する:開発者は、コンテンツがページの境界を超えたときに検出しなければなりません。
  • 行の折り返しやテキストの計測を自分で行う:長いテキストでは改行位置を計算する必要がある
  • ボーダー計算で表をセルごとに描画する: 各表のセルには、個別の位置決めとボーダー描画が必要です。
  • 手動改ページで複数ページのドキュメントを管理する:ページ境界の検出と処理は手動です。

IronPDFはChromiumレイアウトエンジンを活用することで、このような懸念を解消します。テキストは自然に流れ、表は自動的にリサイズされ、改ページは適切な位置で行われます。

機能比較の概要

フィーチャーPDFSharpIronPDF
ライセンス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 PdfSharp
Install-Package PdfSharp
SHELL

外部依存のない軽量なもの。

IronPDFのインストール:

Install-Package IronPdf
Install-Package IronPdf
SHELL

IronPDFはライセンスキーの設定が必要です:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

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生成ワークフローのあらゆる側面に影響を与えます。