比較

iTextとIronPDFの比較:技術比較ガイド

この比較では、関連する技術的側面から両方のライブラリを検討し、開発者とアーキテクトが .NET PDF のニーズに応じて情報に基づいた決定を下せるよう支援します。

iText/ iTextSharpの概要

iText は、PDF を最初から作成したり、既存のドキュメントを変更したり、テキスト、画像、セキュリティ機能の追加などのタスクを実行したりできる、デュアルライセンスの PDF ライブラリです。 このライブラリは、開発者がPdfWriter 、<コード>PdfDocument</コード、<コード>ドキュメント</コード、<コード>段落</コード、<コード>表</コード、 Cellなどのクラスを使用して PDF コンテンツを構築するプログラム API アプローチを使用します。

iText 7 は、 iText.Kernel.PdfiText.LayoutiText.Layout.ElementiText.Html2pdfなどの名前空間を使用します。 PDF の作成には、 PdfWriterを作成し、それをPdfDocumentにラップし、コンテンツ レイアウト用のDocumentを作成することが含まれます。 テキストはParagraphオブジェクトを介して、テーブルはTableCellオブジェクトを介して、画像はImageDataFactoryImageクラスを介して追加されます。

HTMLからPDFへの変換には、iTextは、HtmlConverter.ConvertToPdf()メソッドでiText.Html2pdf名前空間を介して利用可能な、個別のpdfHTMLアドオンを必要とします。 このアドオンは追加料金で別売りされます。

iText は AGPL ライセンスの下で利用可能であり、Web アプリケーションに AGPL コードを組み込んだソフトウェアはオープン ソースとしてもリリースされる必要があり、そうでない場合は開発者が商用ライセンスを購入する必要があります。 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 / iTextSharpIronPDF
ライセンスAGPL(バイラル)または高価なサブスクリプション商用、永久オプション
HTMLからPDFへ別途pdfHTMLアドオン(有料)内蔵Chromiumレンダラー
オープンソースリスクAGPLの下でオープンソースのウェブアプリケーションを提供すること。ウイルス要件なし
価格設定モデルサブスクリプションのみ永久またはサブスクリプション
永久オプション排除利用可能

AGPLライセンスの罠は、商用ウェブアプリケーションにとって特に問題となります。 商用ライセンスを購入せずにiTextをWebアプリケーションで使用する場合、AGPLは、PDFコードだけでなく、コードベース全体ではなく、アプリケーション全体をオープンソースにすることを要求します。

APIパラダイムの比較

基本的なAPIの設計思想は、ライブラリによって大きく異なります。

アスペクトiTextIronPDF
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);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF:

// 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");
    }
}
$vbLabelText   $csharpLabel

iTextでは、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);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF:

// 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");
    }
}
$vbLabelText   $csharpLabel

iTextでは、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());
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF:

// 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");
    }
}
$vbLabelText   $csharpLabel

iTextでは、出力用にPdfWriterを作成し、出力先のPdfDocumentを作成し、PdfMergerを作成し、ソースファイルを反復してPdfReaderPdfDocumentのインスタンスを作成し、ページ範囲を使って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()を使用してください。

メソッドマッピング

タスクiText7IronPDF
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 <コード>ボーダー</コード

機能比較の概要

フィーチャーiTextIronPDF
プログラムPDFの作成✅ (主なアプローチ)⚠️ (HTML経由)
HTMLからPDFへ⚠️ (pdfHTML アドオンが必要です)✅ (ビルトイン)
CSS3 サポート⚠️ (pdfHTML による基本)✅ (フル)
フレックスボックス/グリッド
JavaScriptの実行
PDFマージ✅ (<コード>PdfMerger</コード>)✅ (<コード>PdfDocument.Merge()</コード>)
テキスト抽出✅ (<コード>PdfTextExtractor</コード>)✅ (<コード>ExtractAllText()</コード>)
永久ライセンス❌ (削除)
AGPLリスクなし❌ (AGPLまたはサブスクリプション)
コミュニティサポート✅ (広範囲)

チームがiTextからIronPDFへの移行を検討するとき

開発チームがiTextからIronPDFへの移行を評価する理由はいくつかあります:

AGPL ライセンスの罠: AGPL ライセンスは商用 Web アプリケーションに対して非常に制限的です。 商用ライセンスを購入せずにiTextをWebアプリケーションで使用する場合、AGPLは、PDFコードだけでなく、コードベース全体ではなく、アプリケーション全体をオープンソースにすることを要求します。 プロプライエタリなソフトウェアを開発しているチームは、多くの場合、このウイルスライセンス要件を受け入れることができません。

サブスクリプションのみの商用ライセンス:iTextでは永久ライセンスが廃止され、商用利用には毎年のサブスクリプション更新が必要になりました。 1回限りの購入を希望するチームは、IronPDFの永久ライセンスオプションの方が予算に適していることに気づくでしょう。

pdfHTML アドオンのコスト:iTextを使用して HTML を PDF に変換するには、開発者は別の pdfHTML アドオンに投資する必要があり、コストと複雑さが増します。 IronPDFは最新のChromiumレンダリングエンジンとHTMLからPDFへの変換を基本製品に含んでいます。

プログラム API の複雑さ:iTextでは、<コード>段落</コード、<コード>表</コード、<コード>セル</コード、およびその他のオブジェクトを使用して、低レベルの PDF を手動で構築する必要があります。 ウェブ開発経験のあるチームはIronPDFのHTML/CSSアプローチがより直感的で生産的であると感じています。

最新の Web 標準: pdfHTML であっても、iText では複雑な CSS と JavaScript のサポートが制限されています。 IronPdfのChromiumエンジンは完全なCSS3、Flexbox、グリッド、JavaScriptの実行を最新のウェブコンテンツに提供します。

簡素化されたコードベース:iTextのプログラムによるアプローチからIronPDFの HTML ファースト パラダイムに変換すると、多くの場合、コードが大幅に削減されます。 TableCellParagraphオブジェクトで数十行を必要とするレポート・テーブルは、CSSスタイリングでシンプルなHTMLテーブルになります。

長所と考慮点

iTextの強み

-包括的な機能セット:広範なPDF操作機能 -幅広い採用:大規模なコミュニティと広範なドキュメント -クロスプラットフォーム:さまざまな.NETプラットフォームで動作します -きめ細かな制御:特殊なニーズに合わせた PDF オブジェクト直接操作

テキストに関する考慮事項

  • AGPLライセンス:ウイルスライセンスでは、オープンソースのWebアプリケーションまたは商用サブスクリプションが必要です -サブスクリプションのみ:永久ライセンスは廃止
  • pdfHTMLアドオン: HTMLからPDFへの変換は別途購入が必要です -プログラムの複雑さ: PDF 座標系の学習曲線が急峻 -限定的なモダンCSS: pdfHTMLでも基本的なCSSをサポート
  • JavaScript なし: HTML コンテンツで JavaScript を実行できません

IronPDFの強み

-永久ライセンス: 1回限りの購入オプション

  • AGPLリスクなし:独自のコードをクローズドソースのままにする
  • HTMLからPDFへの変換機能が内蔵されており、別途アドオンは不要です
  • Chromium エンジン: CSS3、Flexbox、Grid、JavaScript をフルサポート
  • Web開発者向け:使い慣れたHTML/CSSスキルを使用 -よりシンプルなAPI:一般的な操作のための簡潔なメソッド -包括的なリソース:広範なチュートリアルドキュメント

IronPDFについての考察

-商用ライセンス:実稼働環境での使用に必要

  • HTMLファーストパラダイム:プログラムによる構築とは異なるアプローチ

結論

iTextとIronPDFは.NETアプリケーションでのPDF生成において根本的に異なるアプローチを示しています。 iTextは、ParagraphTableCellのようなクラスを使った包括的なプログラムによるPDF作成を提供しますが、AGPLはウェブアプリケーションのオープンソース化を要求し、永久ライセンスは廃止され、HTML-to-PDFはpdfHTMLアドオンを別途購入する必要があるなど、ライセンスに関する重大な問題を抱えています。

IronPdfは、Chromiumエンジンを使用した組み込みのHTML-to-PDF変換、永久ライセンスオプション、バイラルライセンス不要の最新の選択肢を提供します。 HTMLファーストのアプローチにより、ウェブ開発者は既存のスキルをそのまま応用することができ、よりシンプルで保守性の高いコードを作成することができます。

組織が.NET 10、C# 14、そして2026年までのアプリケーション開発を計画する中で、AGPLライセンスのプログラムによるPDF構築と商用ライセンスのHTMLベースのレンダリングのどちらを選択するかは、法令遵守と開発の生産性の両方に大きく影響します。 AGPLリスクの排除、ライセンスの複雑さの軽減、PDF生成のためのウェブ開発スキルの活用を求めるチームは、IronPDFがこれらの要件に効果的に対応することを発見するでしょう。

無料トライアルでIronPDFの評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。