Syncfusion PDFとIronPDFの比較:技術比較ガイド
SyncfusionのPDFフレームワークを理解する
Syncfusion PDF Frameworkは、C#を使用してPDFドキュメントを作成、編集、保護するための幅広い機能を提供する包括的なライブラリです。 SyncfusionのEssential Studioの一部として提供され、複数のプラットフォームにわたって1000以上のコンポーネントが含まれています。
このフレームワークは、PDF文書の作成と操作、さまざまなソースからのPDFファイルの変換、高度なセキュリティ対策の実装をサポートする広範な機能セットを提供します。 しかし、最も大きな特徴の1つは、単体では購入できないことです。開発者はSyncfusionのコンポーネント・スイート全体を購入する必要があります。 この要件は、PDFの機能のみに関心のあるチームにとっては面倒なものです。
さらに、Syncfusionは無料のコミュニティライセンスを提供していますが、収益が100万ドル未満で、開発者が5人未満の小規模企業のみが利用できるという制限があります。 さまざまなライセンスを必要とするさまざまなデプロイメントがあるため、ライセンス条件が複雑になる可能性があります。
IronPDFの理解
IronPDFは、PDF機能をスタンドアロン製品として提供することで、集中的なアプローチを提供します。 Syncfusionの座標ベースのグラフィックスAPIとは異なり、IronPDFはHTML/CSSファーストのアプローチを採用しており、開発者は使い慣れたウェブテクノロジーを使ってPDFコンテンツを作成し、それをネイティブのChromiumエンジンでレンダリングします。
IronPDFは、Syncfusion PDF Frameworkのレイヤーライセンスとは対照的に、デプロイの複雑さやシナリオに依存しない明確な条件を提供することでライセンスを簡素化します。 ライブラリは、複数の依存関係を必要とせず、単一のNuGetパッケージとしてインストールされます。
バンドルライセンスの問題
Syncfusionのライセンスモデルは、PDF機能のみを必要とするチームにとって大きな課題となります:
- サイトのみの購入: PDFライブラリを単体で購入することはできません-Essential Studio全体を購入する必要があります。
- コミュニティライセンスの制限: 無料レベルでは、収益が100万ドル未満であることと、開発者が5人未満であることの両方が必要です。
- 複雑なデプロイメントライセンス:ウェブ、デスクトップ、サーバーのデプロイメントに異なるライセンスを提供する。
- 年間更新が必要: 年間コストのサブスクリプションモデル
- 開発者1人あたりの価格: 費用はチームサイズに比例します。
- スイートの肥大化:あなたが必要としないかもしれない1000以上のコンポーネントが含まれています。
ライセンスと購入モデルの比較
| アスペクト | シンクフュージョンPDF | IronPDF |
|---|---|---|
| 購入モデル | スイートバンドルのみ | スタンドアロン |
| ライセンス | 複雑な階層 | 開発者ごとのシンプルな |
| コミュニティ制限 | <$1Mかつ<5人の開発者 | 無料トライアル、その後ライセンス |
| デプロイメント | 複数のライセンスタイプ | 1つのライセンスで |
| APIスタイル | 座標ベースのグラフィック | HTML/CSSファースト |
| HTMLサポート | BlinkBinariesが必要です | ネイティブChromium |
| CSSサポート | 制限的 | フルCSS3/フレックスボックス/グリッド |
| 依存関係 | 複数のパッケージ | 単一のNuGet |
API設計理念
Syncfusion PDFとIronPDFの基本的な違いはAPIの設計アプローチにあります。
Syncfusion PDF:座標ベースのグラフィックス
Syncfusion PDFは、開発者がテキスト、図形、画像の正確な位置を指定する、伝統的な座標ベースのグラフィックモデルを使用しています:
// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Drawing;
using System.IO;
class Program
{
static void Main()
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
// Add a page
PdfPage page = document.Pages.Add();
// Create a font
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);
// Draw text
page.Graphics.DrawString("Hello, World!", font, PdfBrushes.Black, new PointF(10, 10));
// Save the document
FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
document.Save(fileStream);
document.Close(true);
fileStream.Close();
}
}// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Drawing;
using System.IO;
class Program
{
static void Main()
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
// Add a page
PdfPage page = document.Pages.Add();
// Create a font
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);
// Draw text
page.Graphics.DrawString("Hello, World!", font, PdfBrushes.Black, new PointF(10, 10));
// Save the document
FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
document.Save(fileStream);
document.Close(true);
fileStream.Close();
}
}Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Graphics
Imports Syncfusion.Drawing
Imports System.IO
Module Program
Sub Main()
' Create a new PDF document
Dim document As New PdfDocument()
' Add a page
Dim page As PdfPage = document.Pages.Add()
' Create a font
Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 12)
' Draw text
page.Graphics.DrawString("Hello, World!", font, PdfBrushes.Black, New PointF(10, 10))
' Save the document
Dim fileStream As New FileStream("Output.pdf", FileMode.Create)
document.Save(fileStream)
document.Close(True)
fileStream.Close()
End Sub
End Moduleこのアプローチには以下が必要です:
document.Pages.Add()による手動ページ管理PdfStandardFontでフォントオブジェクトを作成するPointF(10,10)による明示的な座標位置決め- 手動ストリーム管理と明示的な
Close()呼び出し - 異なる名前空間に対する複数のusing文
IronPDF:HTML/CSSファーストのアプローチ
IronPDFはコンテンツ作成にHTMLとCSSを使用し、開発者がすでに知っているウェブ技術を活用しています:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
// Save the document
pdf.SaveAs("Output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
// Save the document
pdf.SaveAs("Output.pdf");
}
}Imports IronPdf
Imports IronPdf.Rendering
Class Program
Shared Sub Main()
' Create a PDF from HTML string
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>")
' Save the document
pdf.SaveAs("Output.pdf")
End Sub
End ClassRenderHtmlAsPdf メソッドは、HTMLコンテンツを直接PDFに変換します。 Chromiumエンジンは、座標計算、手動フォントオブジェクト、ストリーム管理を行わず、レイアウトを自動的に処理します。
HTMLからPDFへの変換
ウェブコンテンツをPDF文書に変換すると、アプローチや複雑さに大きな違いがあることがわかります。
SyncfusionのPDF HTML変換について
Syncfusion PDFは、明示的なドキュメントとストリーム管理を必要とする別のHTMLコンバータを使用しています:
// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf;
using System.IO;
class Program
{
static void Main()
{
// Initialize HTML to PDF converter
HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();
// Convert URL to PDF
PdfDocument document = htmlConverter.Convert("https://www.example.com");
// Save the document
FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
document.Save(fileStream);
document.Close(true);
fileStream.Close();
}
}// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf;
using System.IO;
class Program
{
static void Main()
{
// Initialize HTML to PDF converter
HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();
// Convert URL to PDF
PdfDocument document = htmlConverter.Convert("https://www.example.com");
// Save the document
FileStream fileStream = new FileStream("Output.pdf", FileMode.Create);
document.Save(fileStream);
document.Close(true);
fileStream.Close();
}
}Imports Syncfusion.HtmlConverter
Imports Syncfusion.Pdf
Imports System.IO
Module Program
Sub Main()
' Initialize HTML to PDF converter
Dim htmlConverter As New HtmlToPdfConverter()
' Convert URL to PDF
Dim document As PdfDocument = htmlConverter.Convert("https://www.example.com")
' Save the document
Dim fileStream As New FileStream("Output.pdf", FileMode.Create)
document.Save(fileStream)
document.Close(True)
fileStream.Close()
End Sub
End Moduleこのアプローチには以下が必要です:
HtmlToPdfConverterクラスの分離- HTMLレンダリング用BlinkBinaries
- 手動による
FileStreamの作成と管理 - 明示的な
document.Close(true)呼び出し - 複数のクリーンアップ作業
IronPDFのHTML変換
IronPdfは合理化されたURLからPDFへの変換を提供します:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Create a PDF from a URL
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save the PDF
pdf.SaveAs("Output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Create a PDF from a URL
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save the PDF
pdf.SaveAs("Output.pdf");
}
}Imports IronPdf
Class Program
Shared Sub Main()
' Create a PDF from a URL
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
' Save the PDF
pdf.SaveAs("Output.pdf")
End Sub
End ClassRenderUrlAsPdf メソッドはURLに移動し、ネイティブのChromiumエンジンを使ってJavaScriptを実行しながらページをレンダリングし、結果をキャプチャします。 別個のコンバーター・クラス、ストリーム管理、明示的なクリーンアップはありません。
PDFマージ操作
複数のPDFドキュメントをマージすることで、2つのライブラリの複雑さの違いを示しています。
シンクフュージョンPDFMerge (英語
Syncfusion PDFでは、ストリーム管理とページごとのインポートを手動で行う必要があります:
// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using System.IO;
class Program
{
static void Main()
{
// Load the first PDF document
FileStream stream1 = new FileStream("Document1.pdf", FileMode.Open, FileAccess.Read);
PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument(stream1);
// Load the second PDF document
FileStream stream2 = new FileStream("Document2.pdf", FileMode.Open, FileAccess.Read);
PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument(stream2);
// Merge the documents
PdfDocument finalDocument = new PdfDocument();
finalDocument.ImportPageRange(loadedDocument1, 0, loadedDocument1.Pages.Count - 1);
finalDocument.ImportPageRange(loadedDocument2, 0, loadedDocument2.Pages.Count - 1);
// Save the merged document
FileStream outputStream = new FileStream("Merged.pdf", FileMode.Create);
finalDocument.Save(outputStream);
// Close all documents
finalDocument.Close(true);
loadedDocument1.Close(true);
loadedDocument2.Close(true);
stream1.Close();
stream2.Close();
outputStream.Close();
}
}// NuGet: Install-Package Syncfusion.Pdf.Net.Core
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using System.IO;
class Program
{
static void Main()
{
// Load the first PDF document
FileStream stream1 = new FileStream("Document1.pdf", FileMode.Open, FileAccess.Read);
PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument(stream1);
// Load the second PDF document
FileStream stream2 = new FileStream("Document2.pdf", FileMode.Open, FileAccess.Read);
PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument(stream2);
// Merge the documents
PdfDocument finalDocument = new PdfDocument();
finalDocument.ImportPageRange(loadedDocument1, 0, loadedDocument1.Pages.Count - 1);
finalDocument.ImportPageRange(loadedDocument2, 0, loadedDocument2.Pages.Count - 1);
// Save the merged document
FileStream outputStream = new FileStream("Merged.pdf", FileMode.Create);
finalDocument.Save(outputStream);
// Close all documents
finalDocument.Close(true);
loadedDocument1.Close(true);
loadedDocument2.Close(true);
stream1.Close();
stream2.Close();
outputStream.Close();
}
}Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Parsing
Imports System.IO
Class Program
Shared Sub Main()
' Load the first PDF document
Dim stream1 As New FileStream("Document1.pdf", FileMode.Open, FileAccess.Read)
Dim loadedDocument1 As New PdfLoadedDocument(stream1)
' Load the second PDF document
Dim stream2 As New FileStream("Document2.pdf", FileMode.Open, FileAccess.Read)
Dim loadedDocument2 As New PdfLoadedDocument(stream2)
' Merge the documents
Dim finalDocument As New PdfDocument()
finalDocument.ImportPageRange(loadedDocument1, 0, loadedDocument1.Pages.Count - 1)
finalDocument.ImportPageRange(loadedDocument2, 0, loadedDocument2.Pages.Count - 1)
' Save the merged document
Dim outputStream As New FileStream("Merged.pdf", FileMode.Create)
finalDocument.Save(outputStream)
' Close all documents
finalDocument.Close(True)
loadedDocument1.Close(True)
loadedDocument2.Close(True)
stream1.Close()
stream2.Close()
outputStream.Close()
End Sub
End Classこのアプローチには以下が必要です:
- ドキュメントごとに
FileStream<//code> オブジェクトを分けてください。 - 既存のPDFを読むための
PdfLoadedDocument。 - ページ・インデックスを使用した手動
ImportPageRange()呼び出し - 結果の新しい
PdfDocumentの作成 - クリーンアップのための6つの別々の
Close()コール - 重要な定型コード
IronPDFMerge (英語)
IronPdfは宣言的マージ操作を提供します:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Load PDF documents
var pdf1 = PdfDocument.FromFile("Document1.pdf");
var pdf2 = PdfDocument.FromFile("Document2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
// Save the merged document
merged.SaveAs("Merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Load PDF documents
var pdf1 = PdfDocument.FromFile("Document1.pdf");
var pdf2 = PdfDocument.FromFile("Document2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
// Save the merged document
merged.SaveAs("Merged.pdf");
}
}Imports IronPdf
Imports System.Collections.Generic
Class Program
Shared Sub Main()
' Load PDF documents
Dim pdf1 = PdfDocument.FromFile("Document1.pdf")
Dim pdf2 = PdfDocument.FromFile("Document2.pdf")
' Merge PDFs
Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
' Save the merged document
merged.SaveAs("Merged.pdf")
End Sub
End ClassPdfDocument.Merge() メソッドはドキュメントのリストを受け取り、結合した結果を返します。 ストリーム管理も、ページインデックス計算も、手動クリーンアップもありません。
完全な API マッピング
Syncfusion PDFからIronPDFへの移行を評価するチームはこれらのマッピングを参照することができます:
コア ドキュメントクラス
| Syncfusion | IronPDF |
|---|---|
PdfDocument</code | ChromePdfRenderer / PdfDocument</code |
PdfPage</code | 該当なし(HTMLでページを生成) |
PdfLoadedDocument</code | PdfDocument.FromFile()を使用してください。 |
PdfLoadedPage</code | pdf.Pages[index]</code |
グラフィックスとドローイング
| Syncfusion PdfGraphics | IronPDF |
|---|---|
graphics.DrawString()</code | HTMLテキスト要素 |
graphics.DrawLine()</code | CSSボーダーまたは<hr>を使用してください。 |
graphics.DrawRectangle()</code | <div>とCSSの組み合わせ |
graphics.DrawImage()</code | <img>タグ |
graphics.DrawPath()</code | SVG <パス> |
フォントとテキスト
| Syncfusion | IronPDF |
|---|---|
PdfStandardFont</code | CSS font-family</code |
PdfTrueTypeFont</code | CSS @font-face</code |
PdfFontFamily.Helveticaを使用してください。 | font-family: Helvetica |
PdfFontStyle.Bold</code | font-weight: bold フォントウェイト: 太字. |
PdfFontStyle.Italic</code | フォントスタイル:イタリック</code |
色とブラシ
| Syncfusion | IronPDF |
|---|---|
PdfBrushes.Black</code | 色:黒</code |
PdfSolidBrush</code | CSS カラー / 背景色</code |
PdfLinearGradientBrush(英語 | CSS リニアグラディエント()</code |
PdfColor</code | CSSカラー値 |
テーブル
| Syncfusion PdfGrid | IronPDF |
|---|---|
new PdfGrid(). | HTML <テーブル> |
grid.DataSource = data. | データからHTMLを構築する |
grid.Columns.Add(). | <th>要素 |
grid.Rows.Add(). | <tr>要素 |
PdfGridCell</code | <td>要素 |
セキュリティ
| Syncfusion | IronPDF |
|---|---|
document.Security.UserPassword。 | pdf.SecuritySettings.UserPassword。 |
document.Security.OwnerPassword。 | pdf.SecuritySettings.OwnerPassword。 |
ドキュメント.セキュリティ.パーミッション | pdf.SecuritySettings.Allow*のようにします。 |
PdfPermissionsFlags.Print</code | AllowUserPrinting</code |
PdfPermissionsFlags.CopyContent。 | AllowUserCopyPasteContentを許可します。 |
HTML変換
| Syncfusion | IronPDF |
|---|---|
HtmlToPdfConverter</code | ChromePdfRenderer</code |
converter.Convert(url). | renderer.RenderUrlAsPdf(url)のようにします。 |
converter.Convert(html, baseUrl). | renderer.RenderHtmlAsPdf(html). |
BlinkConverterSettings</code | ChromePdfRenderOptions</code |
settings.EnableJavaScriptを使用してください。 | RenderingOptions.EnableJavaScript。 |
機能比較の概要
| 特徴/側面 | Syncfusion PDFフレームワーク | IronPDF |
|---|---|---|
| 購入モデル | Essential Studioの一部 | スタンドアロン |
| ライセンスについて | コミュニティ制限付き商用 | 簡易商用 |
| 展開の複雑さ | 複雑な | ストレート |
| スイートの要件 | はい(スイート全体) | なし |
| PDFにフォーカス。 | 幅広い; より大きなスイートの一部 | 狭い; PDFフォーカス |
| APIスタイル | 座標ベース | HTML/CSSファースト |
| CSSサポート | 制限的 | フルCSS3/フレックスボックス/グリッド |
| レンダリングエンジン | 必要なBlinkBinaries | ネイティブChromium |
チームがシンクフュージョンPDFへの移行を検討するとき
開発チームがSyncfusion PDFに代わるものを評価するのには、いくつかの要因があります:
スイートバンドル要件は、PDF機能のみが必要な場合に、Essential Studio全体の購入を強制します。 これには、PDF生成のみに焦点を当てたプロジェクトには不要かもしれない1000以上のコンポーネントが含まれます。
コミュニティライセンスの制限により、無料での使用は、収益が100万ドル未満かつ開発者が5人未満の企業に制限されています。 いずれかの基準を超える組織は、商用ライセンスを購入する必要があります。
複雑なデプロイメントライセンスは、ウェブ、デスクトップ、サーバーのデプロイメントに異なるライセンスタイプを必要とし、管理上のオーバーヘッドと潜在的なコンプライアンス上の懸念を追加します。
座標ベースのAPIの複雑さは、手作業による位置計算、フォントオブジェクトの管理、明示的なストリーム処理を必要とするため、HTML/CSSのアプローチに比べて開発時間が長くなります。
複数のパッケージの依存関係により、単一の統一パッケージではなく、機能ごとに別々のパッケージ(Syncfusion.Pdf.Net.Core、Syncfusion.HtmlToPdfConverter.Net.Windows、Syncfusion.Pdf.Imaging.Net.Core)をインストールする必要があります。
インストールの比較
SyncfusionのPDFインストール
#複数のパッケージmay be needed
dotnet add package Syncfusion.Pdf.Net.Core
dotnet add package Syncfusion.HtmlToPdfConverter.Net.Windows
dotnet add package Syncfusion.Pdf.Imaging.Net.Core
dotnet add package Syncfusion.Licensing#複数のパッケージmay be needed
dotnet add package Syncfusion.Pdf.Net.Core
dotnet add package Syncfusion.HtmlToPdfConverter.Net.Windows
dotnet add package Syncfusion.Pdf.Imaging.Net.Core
dotnet add package Syncfusion.Licensingライセンス登録:
// Must register before any Syncfusion calls
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY");// Must register before any Syncfusion calls
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY");' Must register before any Syncfusion calls
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY")IronPDFのインストール
# Single package
dotnet add package IronPdf# Single package
dotnet add package IronPdfライセンス構成:
// One-time at startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-KEY";// One-time at startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-KEY";' One-time at startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-KEY"結論
Syncfusion PDF FrameworkとIronPDFは異なる組織背景や開発嗜好に対応しています。 Syncfusionは、Essential Studioの一部として包括的なスイートを提供しており、PDF機能以外にも複数のコンポーネントタイプを必要とするSyncfusionエコシステムに既に投資している組織に最適です。 座標ベースのグラフィックスAPIは、明示的な位置決めに慣れている開発者にきめ細かい制御を提供します。
IronPdfはHTML/CSSファーストのアプローチでPDF生成に特化したスタンドアローンのソリューションを提供します。 レイアウトに使い慣れたWeb技術を使用できることと、簡素化されたライセンスとシングルパッケージのインストールを組み合わせることで、PDF開発ワークフローにおける一般的な摩擦点に対処しています。
Syncfusion PDFからIronPDFへの移行を評価する場合、チームはライセンスの複雑さ、APIの好み、スイートバンドルモデルがニーズに合っているかどうかなど、具体的な要件を考慮する必要があります。 最新のウェブベースのドキュメント生成ワークフローで2026年に.NET 10とC# 14をターゲットとするチームにとって、IronPDFのHTML/CSSアプローチとネイティブのChromiumエンジンは現代の開発プラクティスに沿った機能を提供します。
実装ガイダンスについては、HTMLからPDFへのIronPDFチュートリアルと、最新の.NETアプリケーションのためのPDF生成パターンをカバーするドキュメントをご覧ください。