iTextとIronPDFの比較:技術比較ガイド
iTextvs IronPDF:ライセンス、APIパラダイム、.NETでのモダンPDF生成
.NET開発者がPDFライブラリを評価する場合、iText(iText 7と従来のiTextSharpを含む)は、広範なPDF操作機能を備えた包括的な選択肢として浮上します。 AGPLライセンスでは、iTextを使用するWebアプリケーションはコードベース全体をオープンソース化するか、高価な商用サブスクリプションを購入する必要があります。 IronPdfは異なるアプローチを提供します: 永久ライセンスオプション、組み込みのHTMLからPDFへの変換、最新のChromiumレンダリングエンジンを備えた商用ライブラリです。
この比較では、プロの開発者やアーキテクトが.NET PDFの要件について十分な情報を得た上で決定できるように、技術的に関連する次元で両ライブラリを検証します。
iText/iTextSharpを理解する
iText はデュアルライセンスの PDF ライブラリで、ゼロから PDF を生成したり、既存のドキュメントを変更したり、テキストや画像、セキュリティ機能の追加などの操作をサポートします。 このライブラリは、PdfWriter、PdfDocument、Document、Paragraph、Table、Cellのようなクラスを使用して開発者がPDFコンテンツを構築する、プログラムAPIアプローチを使用しています。
iText 7 では、iText.Kernel.Pdf、iText.Layout、iText.Layout.Element、iText.Html2pdf などの名前空間を使用します。 PDFの作成は、PdfWriterを作成し、それをPdfDocumentでラップし、次にコンテンツレイアウト用のDocumentを作成するというパターンに従います。 テキストはParagraphオブジェクトを介して、テーブルはTableとCellオブジェクトを介して、画像はImageDataFactoryとImageクラスを介して追加されます。
HTMLからPDFへの変換には、iTextは、HtmlConverter.ConvertToPdf()メソッドでiText.Html2pdf名前空間を介して利用可能な、個別のpdfHTMLアドオンを必要とします。 このアドオンは別売りです。
iTextはAGPLライセンスのもとで利用可能です。AGPLのコードをWebアプリケーションに組み込んだソフトウェアは、オープンソースとしてもリリースするか、開発者が商用ライセンスを購入しなければなりません。 iTextは永久ライセンスを廃止しており、商用利用には年間サブスクリプションの更新が必要です。
IronPDFの理解
IronPDFはプログラムによるPDF作成よりもHTMLやCSSでの作業を好む.NET開発者のためにデザインされた商用PDFライブラリです。 このライブラリは最新のChromiumレンダリングエンジンを使用しており、HTML5、CSS3、JavaScript、およびFlexboxやGridのような最新のレイアウトシステムを正確にレンダリングします。
IronPDFはRenderHtmlAsPdf()、RenderUrlAsPdf()、RenderHtmlFileAsPdf()のようなメソッドを持つChromePdfRendererクラスを主要なPDF生成メカニズムとして使用します。 このライブラリは、SaveAs()で保存したり、BinaryDataとしてアクセスできるPdfDocumentオブジェクトを返します。 コンフィギュレーションは、用紙サイズ、マージン、ヘッダー、フッターにRenderingOptionsプロパティを使用します。
IronPDFは永続ライセンスとサブスクリプションライセンスの両方を提供しており、バイラルライセンスの要件はありません。 HTMLからPDFへの変換は、個別のアドオンを必要とせず、基本製品に組み込まれています。
ライセンスとビジネス モデルの比較
これらのライブラリの最も大きな違いは、ライセンスとビジネスへの影響です。
| フィーチャー | iText 7 / iTextSharp | IronPDF |
|---|---|---|
| ライセンス | AGPL(バイラル)または高価なサブスクリプション | 商用、永久オプション |
| HTMLからPDFへ。 | 別途pdfHTMLアドオン(有料) | 内蔵Chromiumレンダラー |
| オープンソースリスク | AGPLの下でオープンソースのウェブアプリケーションを提供すること。 | ウイルス要件なし |
| 価格設定モデル | サブスクリプションのみ | 永久またはサブスクリプション |
| 永久オプション | 排除 | 利用可能 |
AGPLライセンスの罠は、商用ウェブアプリケーションにとって特に問題となります。 商用ライセンスを購入せずにiTextをWebアプリケーションで使用する場合、AGPLは、PDFコードだけでなく、コードベース全体ではなく、アプリケーション全体をオープンソースにすることを要求します。
APIパラダイムの比較
基本的なAPIの設計思想は、ライブラリによって大きく異なります。
| アスペクト | iText | IronPDF |
|---|---|---|
| APIパラダイム。 | プログラム(段落、表、セル) | CSSによるHTMLファースト |
| CSSサポート | 基本的なCSS(pdfHTMLアドオン経由) | フルCSS3、フレックスボックス、グリッド |
| JavaScript(ジャバスクリプト | なし | 完全な実行 |
| ラーニングカーブ | スティープ(PDF座標系) | ウェブ開発者フレンドリー |
| コンテンツ構築 | マニュアル低レベルオブジェクト | HTMLテンプレート |
iTextは、明示的なオブジェクト構築によってプログラムでPDFを構築します。 IronPDFはHTML/CSSを使用しているため、ウェブ開発者は既存のスキルをそのまま適用することができます。
コードの比較:一般的なPDF操作
HTMLからPDFへの変換
最も基本的な操作では、さまざまなアプローチとアドオンの要件を示します。
iText(pdfHTMLアドオンが必要です):。
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiTextでは、iText.Html2pdf名前空間(pdfHTMLアドオンから)を別途必要とし、手動でFileStreamを作成し、ストリームに直接書き込むためにHtmlConverter.ConvertToPdf()を呼び出します。
IronPDFはChromePdfRendererを作成し、HTML文字列でRenderHtmlAsPdf()を呼び出し、SaveAs()で保存します。 Chromiumエンジンは、アドオンを追加することなく、CSS3とJavaScriptを完全にサポートします。
高度なHTMLレンダリングオプションについては、HTMLからPDFへの変換ガイドをご覧ください。
テキストと画像でPDFを作成する
プログラムによるPDFの構築は、パラダイムの違いを最も明確に示しています。
iテキスト:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiTextでは、PdfWriterを作成し、それをPdfDocumentでラップし、レイアウト用にDocumentを作成し、ParagraphオブジェクトとImageDataFactoryで作成したImageオブジェクトを追加する必要があります。 各要素には、明示的な構築と設定が必要です。
IronPDFは標準的なHTML-見出し、段落、<img>タグ-を使用します。 Chromiumエンジンがレンダリングを処理するため、大幅に少ないコードで同じ結果が得られます。
複数のPDFをマージする
ドキュメントのマージは、APIの複雑さの違いを示しています。
iテキスト:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiTextでは、出力用にPdfWriterを作成し、出力先のPdfDocumentを作成し、PdfMergerを作成し、ソースファイルを反復してPdfReaderとPdfDocumentのインスタンスを作成し、ページ範囲を使ってmerger.Merge()を呼び出し、すべてのオブジェクトの廃棄を管理する必要があります。
IronPDFはPdfDocument.FromFile()でドキュメントをロードし、リストを作成し、静的なPdfDocument.Merge()メソッドを呼び出します。 操作はかなり簡潔です。
PDF操作についてはIronPDFチュートリアルをご覧ください。
APIマッピングリファレンス
iText の移行を評価したり、機能を比較したりする開発者向けに、同等の操作を示すマッピングです:
クラスマッピング
| iText 7 クラス | iTextSharpクラス | IronPDF 同等物 |
|---|---|---|
| <コード>PdfWriter</コード | <コード>PdfWriter</コード | <コード>ChromePdfRenderer</コード |
| <コード>PdfDocument</コード | <コード>ドキュメント</コード | <コード>PdfDocument</コード |
| <コード>ドキュメント</コード | <コード>ドキュメント</コード | ChromePdfRenderer.RenderHtmlAsPdf()のようになります。 |
| <コード>段落</コード | <コード>段落</コード | HTML <p>、<h1>など。 |
| <コード>表</コード | <コード>PdfPTable</コード | HTML <コード><テーブル><コード></コード |
| <コード>セル</コード | <コード>PdfPCell</コード | HTML <td>、<th>。 |
| <コード>イメージ</コード | <コード>イメージ</コード | HTML <img> |
| <コード>リスト</コード | <コード>リスト</コード | HTML <ul>、<ol>。 |
| <コード>リストアイテム</コード | <コード>リストアイテム</コード | HTML <li> |
| <コード>PdfReader</コード | <コード>PdfReader</コード | PdfDocument.FromFile()を使用してください。 |
| <コード>PdfMerger</コード | 該当なし | PdfDocument.Merge()を使用してください。 |
| <コード>PdfTextExtractor</コード | <コード>PdfTextExtractor</コード | pdf.ExtractAllText()を使用してください。 |
メソッドマッピング
| タスク | iText7 | IronPDF |
|---|---|---|
| HTMLからPDFを作成 | HtmlConverter.ConvertToPdf()を使用してください。 | <コード>renderer.RenderHtmlAsPdf()</コード |
| URLからPDFを作成 | HTMLのダウンロード + 変換 | renderer.RenderUrlAsPdf()を使用してください。 |
| ファイルからPDFを作成 | HtmlConverter.ConvertToPdf(File.ReadAllText())。 | renderer.RenderHtmlFileAsPdf()を使用してください。 |
| ファイルに保存 | document.Close() (ストリーム経由) | <コード>pdf.SaveAs()</コード |
| バイトに保存 | <コード>memoryStream.ToArray()</コード></コード | <コード>pdf.BinaryData</コード |
| 既存のPDFを開く | new PdfDocument(new PdfReader(path))とします。 | PdfDocument.FromFile()を使用してください。 |
| PDFのマージ | <コード>PdfMerger.Merge()</コード | PdfDocument.Merge()を使用してください。 |
| テキスト抽出 | PdfTextExtractor.GetTextFromPage()。 | pdf.ExtractAllText()を使用してください。 |
スタイルマッピング
| iText 7 メソッド | IronPDF 同等物 |
|---|---|
SetTextAlignment(TextAlignment.CENTER)を設定してください。 | CSS <コード>text-align: center |
SetFontSize(12)を設定してください。 | CSS フォントサイズ: 12px |
| <コード>SetBold()</コード | CSS <コード>font-weight: bold |
| <コード>SetBackgroundColor()</コード | CSS <コード>背景色</コード |
| <コード>SetBorder()</コード | CSS <コード>ボーダー</コード |
機能比較の概要
| フィーチャー | iText | IronPDF |
|---|---|---|
| プログラムPDFの作成 | ✅ (主なアプローチ) | ⚠️ (HTML経由) |
| HTMLからPDFへ | ⚠️ (pdfHTML アドオンが必要です) | ✅ (ビルトイン) |
| CSS3 サポート | ⚠️ (pdfHTML による基本) | ✅ (フル) |
| フレックスボックス/グリッド | ❌ | ✅ |
| JavaScriptの実行 | ❌ | ✅ |
| PDFマージ | ✅ (<コード>PdfMerger</コード>) | ✅ (<コード>PdfDocument.Merge()</コード>) |
| テキスト抽出 | ✅ (<コード>PdfTextExtractor</コード>) | ✅ (<コード>ExtractAllText()</コード>) |
| 永久ライセンス | ❌ (削除) | ✅ |
| AGPLリスクなし | ❌ (AGPLまたはサブスクリプション) | ✅ |
| コミュニティサポート | ✅ (広範囲) | ✅ |
チームがiTextからIronPDFへの移行を検討するとき
開発チームがiTextからIronPDFへの移行を評価する理由はいくつかあります:
AGPLライセンスの罠: AGPLライセンスは、商用ウェブアプリケーションにとって非常に制限的です。 商用ライセンスを購入せずにiTextをWebアプリケーションで使用する場合、AGPLは、PDFコードだけでなく、コードベース全体ではなく、アプリケーション全体をオープンソースにすることを要求します。 プロプライエタリなソフトウェアを開発しているチームは、多くの場合、このウイルスライセンス要件を受け入れることができません。
サブスクリプションのみの商用ライセンス: iTextは永久ライセンスを廃止し、商用利用には年間サブスクリプションの更新が必要になりました。 1回限りの購入を希望するチームは、IronPDFの永久ライセンスオプションの方が予算に適していることに気づくでしょう。
pdfHTMLアドオンのコスト:iTextでHTMLをPDFに変換するには、開発者は別途pdfHTMLアドオンに投資しなければなりません。 IronPDFは最新のChromiumレンダリングエンジンとHTMLからPDFへの変換を基本製品に含んでいます。
プログラムAPIの複雑さ:iTextでは、Paragraph、Table、Cell、およびその他のオブジェクトを使用して、低レベルのPDFを手動で作成する必要があります。 ウェブ開発経験のあるチームはIronPDFのHTML/CSSアプローチがより直感的で生産的であると感じています。
最新のWeb標準:pdfHTMLがあっても、iTextは複雑なCSSやJavaScriptのサポートが限られています。 IronPdfのChromiumエンジンは完全なCSS3、Flexbox、グリッド、JavaScriptの実行を最新のウェブコンテンツに提供します。
簡素化されたコードベース:iTextのプログラム的アプローチからIronPdfのHTMLファーストパラダイムに変換すると、コードが大幅に少なくなることがよくあります。 Table、Cell、Paragraphオブジェクトで数十行を必要とするレポート・テーブルは、CSSスタイリングでシンプルなHTMLテーブルになります。
長所と考慮点
iTextの強み
- 包括的な機能セット:広範なPDF操作機能
- 幅広い採用:大規模なコミュニティと豊富なドキュメント
- クロスプラットフォーム:さまざまな.NETプラットフォームで動作
- 細かい制御:特殊なニーズのためのPDFオブジェクトの直接操作
テキストに関する考慮事項
- AGPLライセンス:バイラルライセンスは、オープンソースウェブアプリケーションまたは商用サブスクリプションを必要とします。
- サブスクリプションのみ:永久ライセンスは廃止
- pdfHTMLアドオン: HTML-to-PDFは別途購入が必要です。
- プログラム的な複雑さ:PDF座標系による急な学習曲線
- Limited Modern CSS: pdfHTMLでも基本的なCSSをサポートします。
- JavaScriptは使用しないでください:HTMLコンテンツでJavaScriptを実行できない
IronPDFの強み
IronPDFについての考察
- 商用ライセンス:本番使用時に必要です。
- HTMLファーストのパラダイム:プログラムによる構築とは異なるアプローチ
結論
iTextとIronPDFは.NETアプリケーションでのPDF生成において根本的に異なるアプローチを示しています。 iTextは、Paragraph、Table、Cellのようなクラスを使った包括的なプログラムによるPDF作成を提供しますが、AGPLはウェブアプリケーションのオープンソース化を要求し、永久ライセンスは廃止され、HTML-to-PDFはpdfHTMLアドオンを別途購入する必要があるなど、ライセンスに関する重大な問題を抱えています。
IronPdfは、Chromiumエンジンを使用した組み込みのHTML-to-PDF変換、永久ライセンスオプション、バイラルライセンス不要の最新の選択肢を提供します。 HTMLファーストのアプローチにより、ウェブ開発者は既存のスキルをそのまま応用することができ、よりシンプルで保守性の高いコードを作成することができます。
組織が.NET 10、C# 14、そして2026年までのアプリケーション開発を計画する中で、AGPLライセンスのプログラムによるPDF構築と商用ライセンスのHTMLベースのレンダリングのどちらを選択するかは、法令遵守と開発の生産性の両方に大きく影響します。 AGPLリスクの排除、ライセンスの複雑さの軽減、PDF生成のためのウェブ開発スキルの活用を求めるチームは、IronPDFがこれらの要件に効果的に対応することを発見するでしょう。
無料トライアルでIronPDFの評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。