Iron Suite for .NET
10 .NETライブラリ。1つの完全なドキュメントスイート。
ABCpdf vs IronPDF:技術比較ガイド
.NET開発者がPDFドキュメントの作成、編集、操作を必要とする場合、技術評価でよく取り上げられるライブラリが2つあります。WebSupergooのABCpdf for .NETとIron SoftwareのIronPDFです。どちらもC#アプリケーションでPDFドキュメントの作成、編集、変換が可能ですが、アーキテクチャ、API設計、ライセンス方式、プラットフォーム対応に違いがあります。
この比較では、両ライブラリを技術的に関連する観点から検証し、プロフェッショナルな開発者やアーキテクトが.NETのPDF要件に最適な選択をできるよう支援します。
ABCpdf for .NETの概要
ABCpdf for .NETは、WebSupergooによって開発された長年の実績を持つPDFライブラリです。このライブラリは複数のHTMLレンダリングエンジン(バージョン管理されたABCChromeビルドでデフォルトはABCChrome146、Gecko、WebKit、レガシーのMSHtml/Tridentエンジン―Windowsに組み込まれたInternet Explorerコンポーネントを使用)をサポートしており、開発者は好みのHTMLレンダリングエンジンを選択できます。この柔軟性により、特にエンタープライズのWindows環境で複雑なPDF生成タスクに強みを発揮しています。
ABCpdfはドキュメント中心のAPIモデルを採用しており、PDFドキュメントを表す最上位オブジェクトであるDocクラスがほとんどのPDF操作の主要なエントリーポイントとなります。特化したタスクはWebSupergoo.ABCpdf14.Operations名前空間などのクラスで処理されます。開発者はDocインスタンスを作成し、オプションを設定し、コンテンツを追加し、結果を保存します。
IronPDFの概要
IronPDFは、Chromiumを基盤とした.NET用PDFライブラリで、HTMLからPDFへの変換、PDF操作、ドキュメント処理機能を提供します。ライブラリは、ChromePdfRendererがHTMLからPDFへの変換を担当し、PdfDocumentが既存PDFの操作を管理するなど、レンダリングとドキュメント操作を明確に分離したクラス設計となっています。
IronPDFはバンドルされたChromiumエンジンでHTMLをレンダリングし、コード上でエンジン設定は不要です。標準のIronPdfパッケージはChromium 109を、IronPdf.UpdatedChromeパッケージはChromium 131を搭載しています。リソース管理には標準の.NET IDisposableパターンをサポートしています。
アーキテクチャとレンダリングエンジンの比較
両ライブラリとも現在はChromiumベースのHTMLエンジンをデフォルトとしていますが、エンジンの選択とパッケージング、オブジェクトモデル、プラットフォーム対応にアーキテクチャ上の違いがあります。
| 項目 | ABCpdf for .NET | IronPDF |
|---|---|---|
| レンダリングエンジン | 設定可能:ABCChrome(バージョン管理ビルド)、Gecko、WebKit、MSHtml | Chromiumのみ。標準(Chromium 109)または更新版(Chromium 131)のランタイムパッケージ |
| エンジン設定 | 任意:doc.HtmlOptions.Engineでビルドを固定 | パッケージで選択(IronPdfまたはIronPdf.UpdatedChrome);コード上でのエンジン設定なし |
| HTML/CSS対応 | 選択したエンジンに依存 | HTML、CSS、JavaScriptの対応はバンドルされたChromiumバージョンに依存 |
| オブジェクトモデル | 中心は単一のDocクラス | ChromePdfRenderer+PdfDocumentで分離 |
| オブジェクトライフサイクル | DocはIDisposableを実装(using var doc = new Doc(););Clear()で再利用可能 | レンダリングは使い捨てのPdfDocumentを返す |
| クロスプラットフォーム | Windows優先;ABCpdf 13以降Linux対応(x64、Ubuntu;HTML変換にはABCpdf.ABCChrome146.Linuxパッケージが必要);macOSは非対応 | Windows、Linux、macOS、Dockerにネイティブ対応 |
ABCpdfは開発者が特定のレンダリングエンジンを固定できます。デフォルト以外のエンジンはメインのABCpdf NuGetパッケージには含まれておらず、フルMSIインストーラーまたは個別のNuGetパッケージから入手します(MSHtmlはWindowsに組み込まれたInternet Explorerコンポーネントを使用)。IronPDFはChromiumエンジンのみで、バージョンはインストールするパッケージで決まります。プラットフォームごとのパッケージ(Windows用IronPdf、Linux用IronPdf.Linux、macOS用IronPdf.MacOs)は各自のChromiumランタイムを含み、Windowsでは標準のIronPdfパッケージ(Chromium 109、古いWindows Server向け)をIronPdf.UpdatedChrome(Chromium 131)に置き換えることができます。更新版パッケージはsubgridなど新しいCSSを正しくレンダリングしますが、32ビットプロセス、Windows Server 2012、SingleProcessモードは非対応のため、チームはパッケージを選択しテンプレートをテストする必要があります。
API設計とコードパターン
API設計の思想は両ライブラリで大きく異なります。ABCpdfはほとんどの操作をDocクラスに集中させているのに対し、IronPDFはレンダリングとドキュメント操作を分離しています。
URLからPDFへの変換
ABCpdf for .NET:
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf14;
using WebSupergoo.ABCpdf14.Objects;
class Program
{
static void Main()
{
using var doc = new Doc();
doc.HtmlOptions.Engine = EngineType.Chrome146; // optional: this is the default
// AddImageUrl draws the first page only; AddImageToChain adds each following page
int id = doc.AddImageUrl("https://www.example.com");
while (doc.Chainable(id))
{
doc.Page = doc.AddPage();
id = doc.AddImageToChain(id);
}
doc.Save("output.pdf");
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using System;
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
}
}
動作上の違いとして、AddImageUrl()はレンダリング結果の最初のページのみを描画し、ループでAddImageToChain()を呼び出して追加ページを連結します(WebSupergooのドキュメントに記載)。RenderUrlAsPdf()は1回の呼び出しでドキュメント全体をページ分割します。
URLからPDFへの詳細なオプションはURLからPDFへのドキュメントをご覧ください。
HTML文字列からPDFへの変換
ABCpdf for .NET:
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf14;
using WebSupergoo.ABCpdf14.Objects;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
using var doc = new Doc();
doc.HtmlOptions.Engine = EngineType.Chrome146; // optional: this is the default
// As with URLs, AddImageHtml draws the first page and AddImageToChain the rest
int id = doc.AddImageHtml(html);
while (doc.Chainable(id))
{
doc.Page = doc.AddPage();
id = doc.AddImageToChain(id);
}
doc.Save("output.pdf");
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using System;
using IronPdf;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
高度なHTMLレンダリングシナリオについてはHTML文字列からPDFへのガイドをご参照ください。
PDF結合操作
ABCpdf for .NET:
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf14;
using WebSupergoo.ABCpdf14.Objects;
class Program
{
static void Main()
{
using var doc1 = new Doc();
doc1.Read("document1.pdf");
using var doc2 = new Doc();
doc2.Read("document2.pdf");
doc1.Append(doc2);
doc1.Save("merged.pdf");
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using System;
using System.Collections.Generic;
using IronPdf;
class Program
{
static void Main()
{
using var pdf1 = PdfDocument.FromFile("document1.pdf");
using var pdf2 = PdfDocument.FromFile("document2.pdf");
using var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
結合の意味合いが異なります。doc1.Append(doc2)は2番目のドキュメントを1番目の末尾に追加しますが、IronPDFの静的PdfDocument.Merge()は新しいドキュメントを返します。
追加の結合操作についてはPDF結合ドキュメントをご覧ください。
メソッド対応表リファレンス
ABCpdfからの移行や機能比較を検討する開発者向けに、両ライブラリで最も近い操作を対応付けて示します。
基本ドキュメント操作
| 操作 | ABCpdfメソッド | IronPDFメソッド |
|---|---|---|
| エントリオブジェクト作成 | new Doc()(PDFドキュメント) | new ChromePdfRenderer()(レンダラー) |
| HTMLからPDF | doc.AddImageHtml(html)(最初のページ;追加はAddImageToChain()) | renderer.RenderHtmlAsPdf(html) |
| URLからPDF | doc.AddImageUrl(url)(最初のページ;追加はAddImageToChain()) | renderer.RenderUrlAsPdf(url) |
| 既存PDFの読み込み | doc.Read(path) | PdfDocument.FromFile(path) |
| PDFの保存 | doc.Save(path) | pdf.SaveAs(path) |
| バイト取得 | doc.GetData() | pdf.BinaryData |
| PDF結合 | doc.Append(doc2) | PdfDocument.Merge(pdf1, pdf2) |
| ページ数取得 | doc.PageCount | pdf.PageCount |
| テキスト抽出 | doc.GetText("Text")(現在ページ;doc.PageNumberでループ) | pdf.ExtractAllText() |
| 透かし追加 | doc.PageNumberでページループ+doc.AddText() | pdf.ApplyWatermark(html) |
| オーナーパスワード設定 | doc.Encryption.OwnerPassword | pdf.SecuritySettings.OwnerPassword |
| ユーザーパスワード設定 | doc.Encryption.Password | pdf.SecuritySettings.UserPassword |
設定オプション
| ABCpdf設定 | IronPDF相当 |
|---|---|
doc.HtmlOptions.Engine = EngineType.Chrome146 | Chromiumバージョンはパッケージ(IronPdfまたはIronPdf.UpdatedChrome)で決定 |
doc.MediaBox.String = "A4"; doc.Rect.String = doc.MediaBox.String; | RenderingOptions.PaperSize = PdfPaperSize.A4 |
doc.MediaBox.String = "Letter"(デフォルト) | RenderingOptions.PaperSize = PdfPaperSize.Letter |
doc.Rect.Inset(x, y) | RenderingOptions.MarginTop/Bottom/Left/Right |
doc.HtmlOptions.BrowserWidth | RenderingOptions.PaperFit.UseResponsiveCssRendering(width) |
doc.HtmlOptions.Timeout(ミリ秒) | RenderingOptions.Timeout(秒) |
doc.HtmlOptions.UseScript | RenderingOptions.EnableJavaScript |
主な技術的相違点
オブジェクトライフサイクルパターン
ABCpdfのDocはIDisposableを実装しており、WebSupergoo自身の例でもusing宣言で自動的に破棄されるように作成されています。DocはまたClear()を提供しており、リソースを解放し新規作成状態に戻すことで、1つのDocを複数ドキュメントで再利用するコードにも対応します。
// NuGet: Install-Package ABCpdf
using WebSupergoo.ABCpdf14;
public static class AbcPdfExample
{
// Returns the rendered PDF as bytes; the Doc is disposed automatically by 'using'
public static byte[] RenderHtml(string html)
{
using var doc = new Doc();
int id = doc.AddImageHtml(html);
while (doc.Chainable(id))
{
doc.Page = doc.AddPage();
id = doc.AddImageToChain(id);
}
return doc.GetData();
}
}
IronPDFはこの2つの役割を分離しており、レンダラーがPdfDocumentを生成し、そのままusing文で利用できます。
// NuGet: Install-Package IronPdf
using IronPdf;
public static class IronPdfExample
{
// Returns the rendered PDF as bytes; the PdfDocument is disposed automatically by 'using'
public static byte[] RenderHtml(string html)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 20; // millimetres
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;
}
}
どちらの例も、独立したプログラムではなく自身のコードから呼び出すメソッドです。
ページインデックスの慣習
ABCpdfは1始まりのページ番号(doc.PageNumber = 1が最初のページ)を使用しますが、IronPDFは0始まりのインデックス(pdf.Pages[0]が最初のページ)を採用しています。また、ABCpdfのdoc.Pageプロパティはページ番号ではなくページのオブジェクトIDを保持しているため、ページ操作コードを移植する際はプロパティの選択とオフセット調整の両方が必要です。
座標系
ABCpdfはデフォルトでポイント単位(1インチ=72ポイント)のdoc.Rectで位置を測定し、Unitsプロパティでミリメートルなど他の単位にも切り替え可能です。ページサイズはdoc.MediaBoxで個別に設定します。IronPDFはRenderingOptionsでページ余白をミリメートル単位で設定します。したがって、ABCpdfのdoc.Rect.Inset(20, 20)(各辺を20ポイント=約7mmインセット)は、IronPDFでは個別の余白プロパティに変換されます。
ライセンスとデプロイメントの考慮事項
これら.NET PDFライブラリのライセンスモデルは構造が異なります。
| 項目 | ABCpdf for .NET | IronPDF |
|---|---|---|
| 価格モデル | ティア制、$329~$24,950(ティアによる) | ティア制永続ライセンス、$999(Lite)~$4,799(Unlimited)で公開 |
| ライセンス設定 | コードベース:XSettings.InstallLicense("KEY") | コードベース:IronPdf.License.LicenseKey = "KEY" |
| ティアの複雑さ | 機能はエディション(Standard/Professional)で異なる;ライセンスタイプはデプロイ範囲で決定 | ティアは開発者数、拠点数、プロジェクト数で拡張;再配布(OEM/SaaS)や公開API(SDK)利用は別途ライセンス |
ABCpdfの購入ページには、Standard($329)とProfessional($495)のシングルコンピュータライセンス、Professional Five License Pack($1,485)、Professional RedistributionまたはEnterprise License($4,950)、Professional Group License($24,950)、四半期ごとのSaaSサブスクリプション($265)、オプションのエスクロー契約が記載されています。Standardエディションは32ビットプロセスに限定され、64ビット対応はProfessionalエディションからとなるため、チームはデプロイモデルに合わせてエディションとライセンスタイプを選定する必要があります。
IronPDFの価格も、開発者数、拠点数、プロジェクト数だけでなく、ソフトウェアの配布方法によって決まります。基本ライセンスは組織内利用をカバーし、IronPDFを商用ソフトウェアや有料SaaS製品に組み込む場合はロイヤリティフリーのOEM再配布ライセンスが必要です(ライセンスページに記載)。また、IronPDFの機能を他の開発者に公開APIとして提供する場合はSDKライセンスが必要です。ABCpdf同様、IronPDFのライセンスキーもアプリケーション起動時にコードで設定します。
クロスプラットフォーム対応
ABCpdfはWindows優先のアーキテクチャで設計されました。Linux対応はABCpdf 13で追加されましたが、条件付きです:x64のみ、サポートされるUbuntuリリース(22.04、24.04、26.04)、HTML変換にはメインライブラリに加えてABCpdf.ABCChrome146.Linuxパッケージが必要、XPSやOffice読み込みモジュール、EMF入出力、System.Drawing APIなど一部機能は引き続きWindows専用です。WebSupergooは開発プラットフォームとしてWindows、デプロイ先としてWindowsまたはUbuntu Linuxを記載しており、macOSはサポート対象に含まれていません。
IronPDFは、Windows、Linux、macOS、Docker環境にネイティブ対応しており、これがコア設計の一部となっています。現在の長期サポートリリースである.NET 10に対応しているため、macOSで開発したり、さまざまなLinux環境にデプロイするチームにとって重要です。
ドキュメントと開発者体験
ABCpdfのドキュメントは充実しており、APIツリーとしてクラス、プロパティ、メソッドごとにページが用意され、多くにC#例が付属しています。HTMLレンダリング、座標、セキュリティなどのトピックごとの実例や概念ガイドもあります。
IronPDFは、豊富なコード例と最新のドキュメント、HTMLからPDFへのチュートリアルを提供し、現代的なドキュメント作成手法に従っています。APIリファレンスでは詳細なメソッドドキュメントが参照できます。
ABCpdfからIronPDFへの移行を検討する場合
ABCpdf for .NETからIronPDFへの移行を検討するチームは、以下の点を考慮することが多いです。
エンジンファミリーの集約: ABCpdfは複数のエンジンファミリー(バージョン管理されたABCChromeビルド、Gecko、WebKit、MSHtml)を提供しますが、IronPDFはChromiumファミリー1つのみ(標準と更新版ランタイムパッケージ)です。チームは依然としてパッケージを選択しテンプレートをテストしますが、テスト対象のエンジンファミリーは1つです。
責務の分離: レンダリングとドキュメント操作を別オブジェクトに分けたい開発者は、単一のDocオブジェクトで両方を扱うよりも、IronPDFのChromePdfRenderer+使い捨てPdfDocumentを好みます。
クロスプラットフォーム要件: macOSで開発したり、ABCpdfがサポートするUbuntu x64以外のLinuxディストリビューションにデプロイするプロジェクトは、IronPDFのネイティブなクロスプラットフォーム設計の恩恵を受けます。
ライセンスモデル: エディションやプロセスのビット数ではなく、開発者数、拠点数、プロジェクト数で公開された永続的な価格体系を好むチームは、IronPDFのモデルの方が予算化しやすいと感じるかもしれません。どちらのベンダーも、ソフトウェアの配布やSaaS製品としての提供は別途ライセンスが必要です。
最新.NETとの統合
両ライブラリとも最新の.NETバージョンをサポートしています。IronPDFは.NET Framework 4.6.2以降、.NET Core 3.1以降、.NET 5~.NET 10に対応しており、.NETエコシステムの進化に合わせて継続的な互換性が期待できます。
IronPDFはRenderHtmlAsPdfAsync()のような非同期レンダリングメソッドも提供していますが、ABCpdfのDoc APIは全て同期的です。ただし、同期=シングルスレッドという意味ではなく、WebSupergooはABCpdfが完全なマルチスレッド対応であり、IISなど高性能なマルチスレッド環境向けに設計されていると説明しているため、どちらのライブラリも並列でドキュメント処理が可能です。
まとめ
ABCpdf for .NETとIronPDFは、どちらもC#開発者向けにPDF生成・操作機能を提供します。ABCpdfは設定可能なレンダリングエンジンと長年の.NETエコシステムでの実績を持ち、IronPDFは単一の組み込みChromiumエンジン、ネイティブなクロスプラットフォーム対応、レンダリングとドキュメントオブジェクトの明確な分離という現代的なAPI設計を提供します。
選択はプロジェクト固有の要件―既存のABCpdf投資、クロスプラットフォーム展開の必要性、API設計の好み、ライセンス条件―によって決まります。
無料トライアルでIronPDFの評価を始め、完全なドキュメントを参照して、要件への適合性を確認してください。