C#でPDFSharpからIronPDFに移行する方法
PDFSharpからIronPDFに移行することで、PDF生成のワークフローが手動による座標ベースの描画から最新のHTML/CSSテンプレートに変わります。 このガイドでは、面倒なGDI+スタイルの位置決めをWeb技術に置き換える完全なステップバイステップの移行パスを提供し、開発時間を劇的に短縮し、標準的なHTML/CSSスキルによってPDF生成を保守可能にします。
なぜPDFSharpからIronPDFに移行するのか
PDFSharpを理解する
PDFSharpは低レベルのPDF作成ライブラリとして有名で、開発者はプログラム的なアプローチでPDFドキュメントを生成することができます。 MITライセンスの下でリリースされたPDFSharpは、開発者コミュニティに使用と改変の自由を与えています。 PDFSharpは、主にPDFをゼロから描画してコンパイルするためのツールとして機能します。
PDFSharpは、HTMLからPDFへのコンバータであると誤解されることがありますが、そうではありません。 その目的は、プログラムによるPDF文書作成に特化しています。 HTMLレンダリング機能を提供することを目的としたアドオンHtmlRenderer.PdfSharpがありますが、CSS 2.1のみをサポートしており、フレックスボックスやグリッドのような最新のCSS機能には対応していません。
座標計算問題
PDFSharpのGDI+アプローチは、あなたがしなければならないことを意味します:
- 各要素の正確なX,Y位置を計算する。
- ページのオーバーフローのためにコンテンツの高さを手動で追跡する
- 行の折り返しやテキスト測定を自分で処理する
- ボーダー計算でセルごとに表を描く
- 手動改ページで複数ページのドキュメントを管理
PDFSharpのアーキテクチャは、座標を使った位置決めに関する深い理解を必要とし、複雑なレイアウトを作成する際にしばしば課題となります。
PDFSharpとIronPDFの比較
| フィーチャー | PDFSharp | IronPDF |
|---|---|---|
| ライセンス | MIT (無料) | 商用 |
| HTMLからPDFへのサポート。 | なし | はい(HTML5/CSS3サポート) |
| モダンCSSサポート | なし(CSS 2.1のみ) | はい(フルCSS3) |
| ドキュメント作成 | 座標ベースの図面 | HTML/CSSテンプレート |
| レイアウトシステム | マニュアルX,Yポジショニング | CSS フロー/フレックスボックス/グリッド |
| 改ページ | 手計算 | 自動 + CSS コントロール |
| テーブル | セルを個別に描画 | HTML <コード><テーブル><コード></コード |
| スタイリング。 | コードベースのフォント/カラー | CSSスタイルシート |
| ドキュメント API | 低レベル(座標が必要です) | ハイレベル(簡易API) |
| 更新情報 | 頻度 | レギュラー |
IronPDFはHTMLドキュメントを完全な忠実度でPDFに変換する必要があるシナリオで輝きを放ちます。 この.NETライブラリは、HTML5とCSS3をサポートしており、最新のWeb標準に対応しています。 HTMLからPDFへのネイティブ機能により、開発者は既存のWebコンテンツや最新のWebツールでデザインされたテンプレートを活用することができます。
2025年と2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFはウェブ開発スキルを活用しながら座標計算を排除する最新のアプローチを提供します。
始める前に
前提条件
- .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGetアクセス: NuGetパッケージをインストールする機能
- IronPDFライセンス: ironpdf.comからライセンスキーを取得します。
NuGetパッケージの変更
# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting
# Add IronPDF
dotnet add package IronPdf# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting
# Add 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";PDFSharpの使用法を特定する。
# Find allPDFSharpusages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .# Find allPDFSharpusages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .完全な API リファレンス
名前空間の変更
// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Editing;// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Editing;コア API マッピング
| PDFSharp API | IronPDF API | ノート |
|---|---|---|
new PdfDocument(). | ChromePdfRenderer.RenderHtmlAsPdf()のようになります。 | HTMLから作成 |
document.AddPage()。 | 自動翻訳 | HTMLコンテンツから作成されたページ |
XGraphics.FromPdfPage()を使用しています。 | 不要 | HTML要素の使用 |
| <コード>XGraphics.DrawString()</コード | HTML <p>、<h1>など。 | CSSを使用したポジション |
| <コード>XGraphics.DrawImage()</コード | HTML <img>タグ | CSSを使用したポジション |
| <コード>XFont</コード | CSS font-family、font-size。 | 標準CSS |
XBrush、XPen。 | CSSカラー/ボーダー | <コード>カラー</コード>, <コード>背景色</コード |
| <コード>document.Save()</コード | <コード>pdf.SaveAs()</コード | 類似機能 |
| <コード>PdfReader.Open()</コード | PdfDocument.FromFile()を使用してください。 | 既存のPDFを開く |
コード移行の例
例1: HTMLからPDFへの変換
翻訳前(PDFSharp):
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;
class Program
{
static void Main()
{
//PDFSharpdoes not have built-inHTMLから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);
// マニュアル 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-inHTMLから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);
// マニュアル 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");
}
}翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
//IronPDFhas nativeHTMLからPDFへrendering
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello from IronPDF</h1><p>EasyHTMLから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 nativeHTMLからPDFへrendering
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello from IronPDF</h1><p>EasyHTMLからPDFへconversion</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}この例では、2つのライブラリの最も大きな違いを強調しています。 PDFSharpは、"HTMLからPDFへの変換を内蔵していない"と明言しています。PdfDocumentを手動で作成し、PdfPageを追加し、XGraphicsオブジェクトを取得し、XFontを作成し、XRect座標でDrawString()を使用する必要があります。
IronPdfはChromePdfRendererを通してネイティブのHTMLからPDFへのレンダリングを提供します。 RenderHtmlAsPdf()メソッドはHTML文字列を受け取り、内部でChromiumエンジンを使って変換します。 IronPdfは簡単にHTMLファイルをPDFに変換し、HTML5とCSS3で定義されたすべてのスタイルを保持し、座標計算の必要性を排除します。 包括的な例については、HTML to PDF documentationを参照してください。
例2: 既存の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");
}
}翻訳後(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");
}
}PDFSharpは、PdfReader.Open()でPDFを開き、PdfDocumentOpenMode.Modifyを指定し、ページにアクセスし、XGraphicsオブジェクトを作成し、スタイルを持つXFontを作成し、正確なX,Y座標(200, 400)を指定するXPointでDrawString()を使用する必要があります。
IronPDFはPdfDocument.FromFile()、宣言的なプロパティ(Text, FontSize, Color, VerticalAlignment, HorizontalAlignment)を持つTextStamperオブジェクト、そしてApplyStamp()によってこれを簡素化します。 座標計算の必要はありません。アライメントを指定するだけで、IronPDFが位置決めを行います。 スタンピング機能にはIronPdf.Editing名前空間が必要です。
例3: 画像で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");
}
}翻訳後(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);
}
}PDFSharpでは、新しいPdfDocumentを作成し、PdfPageを追加し、XGraphicsを取得し、ファイルからXImageを読み込み、幅と高さを計算し、正確な座標(50, 50, 200, 200)でDrawImage()を使用し、DrawString()でテキストを追加します。
IronPDFは標準的なHTMLを使用し、<img>タグとCSSスタイリング(style='width:200px; 高さ:200px;')。 座標計算は不要で、CSSがレイアウトを処理します。 IronPDFはImageStamperも提供しており、既存のPDFに画像を追加することができます。 詳しくは、チュートリアルをご覧ください。
重要な移行に関する注意事項
パラダイムシフト:座標からHTML/CSSへ
最も大きな変更点は、座標ベースの描画からHTML/CSSへの移行です:
// PDFSharp: マニュアル positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));
// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
<h1>Invoice</h1>
<p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);// PDFSharp: マニュアル positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));
// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
<h1>Invoice</h1>
<p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);フォントの移行
// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);
// IronPDF: CSS font properties
var html = @"
<style>
h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);
// IronPDF: CSS font properties
var html = @"
<style>
h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";ドキュメントの読み込みの変更
// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");保存メソッドの変更
// PDFSharp: document.Save()
document.Save("output.pdf");
// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");// PDFSharp: document.Save()
document.Save("output.pdf");
// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");ページのアクセス変更
// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];
// IronPDF:自動翻訳page handling or pdf.Pages[0]
// Pages are created automatically from HTML content// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];
// IronPDF:自動翻訳page handling or pdf.Pages[0]
// Pages are created automatically from HTML content移行後の新機能
IronPDFに移行することで、PDFSharpが提供できない機能を得ることができます:
ネイティブ HTML から PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");URLをPDFに
var pdf = renderer.RenderUrlAsPdf("https://example.com");var pdf = renderer.RenderUrlAsPdf("https://example.com");PDFマージ
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);HTMLによるウォーターマーク
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");機能比較の概要
| フィーチャー | PDFSharp | IronPDF |
|---|---|---|
| 座標ベースの図面 | ✓ | ✗ (HTMLを使用) |
| HTMLからPDFへ | ✗ | ✓ |
| CSS3 サポート | ✗ | ✓ |
| フレックスボックス/グリッドレイアウト | ✗ | ✓ |
| テキストスタンプ | マニュアル XGraphics | テキストスタンパー |
| 画像スタンプ | マニュアル XImage | イメージスタンパー |
| PDFのマージ | マニュアル | ✓ |
| URLからPDFへ | ✗ | ✓ |
| 最新のウェブレンダリング | ✗ | Chromium エンジン |
| 自動改ページ | ✗ | ✓ |
移行チェックリスト
移行前
- コードベース内のすべてのPDFSharpの使用状況を一覧表示する
- 生成される文書の種類(レポート、請求書、証明書)を識別する
- カスタムグラフィックや描画操作をメモします -IronPDFライセンス キーの保存を計画する (環境変数を推奨)
- まずはIronPDFの試用ライセンスでテストしてください
パッケージの変更
PdfSharpNuGetパッケージを削除するPdfSharp-wpfNuGet パッケージが使用されている場合は削除しますPdfSharp.ChartingNuGet パッケージが使用されている場合は削除しますIronPdfNuGet パッケージをインストールします:dotnet add package IronPdf
コードの変更
- 名前空間のインポートを更新します (
using PdfSharp.Pdf;→using IronPdf;) - スタンプ機能のために
using IronPdf.Editing;を追加します - 座標ベースのレイアウトをHTML/CSSに変換する -<コード>XFont</コードCSSフォントプロパティに置き換える
XBrush/XPenCSS の色/境界線に置き換えるXGraphics.DrawString()を HTML テキスト要素に置き換えますXGraphics.DrawImage()を HTML に置き換える<img>タグPdfReader.Open()をPdfDocument.FromFile()に置き換えますdocument.Save()をpdf.SaveAs()に置き換えます- テーブル描画コードをHTMLテーブルに変換する
移行後
- 生成されたPDFの視覚的な比較
- 複数ページのドキュメントをテストする
- フォントレンダリングを確認する
- 必要に応じて新しい機能(HTMLからPDF、結合、透かし)を追加します






