iTextSharp C# HTML から PDF への代替 .NET Core
Full Comparison
Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.
IronPDF 対 iText / iText
.NET PDF ライブラリの包括的な比較 - 証拠に基づくコンテキストで機能ごとに比較
| 特徴 | iText / iText | IronPDFPDF✦ |
|---|---|---|
| PDF作成と変換 | ||
| HTML/CSSからPDFへ |
$ Paid Add-on
pdfHTMLアドオン経由の HTML → PDF (別パッケージ、AGPL/商用モデル)。 |
✓ Yes
ピクセルパーフェクトな CSS3、Flexbox、グリッド レンダリングが組み込まれた Chromium ベースのエンジン。
|
| JavaScriptの実行 |
? Unknown
pdfHTML では HTML/CSS → PDF 変換について説明していますが、ドキュメントには JS 実行のサポートは記載されていません。
|
✓ Yes
レンダリング中に JS を完全に実行します (動的チャート、SPA、インタラクティブ コンテンツ)。
|
| プログラムによる生成 |
✓ Yes
.NET用のプログラム可能な PDF SDK として位置付けられており、作成、編集、拡張を行うことができます。
|
✓ Yes
HTML テンプレート、文字列、ASPX ビュー、または画像から生成します。レイアウトは Chromium が処理します。
|
| URLからPDFへ |
$ Paid Add-on
URL フェッチを備えた pdfHTML アドオン経由では可能ですが、コア機能ではありません。
|
✓ Yes
RenderUrlAsPdf() 完全な CSS/JS レンダリングを使用して、あらゆるライブ URL をキャプチャします。 |
| DOCXからPDF |
✕ No
ネイティブの Word 変換はありません。iText は PDF ネイティブ SDK です。
|
✓ Yes
DocxToPdfRenderer 構造と書式を保持したまま Word 文書を変換します。 |
| 読み取りと抽出 | ||
| テキスト抽出 |
✓ Yes
PdfTextExtractor.GetTextFromPage() 複数の抽出戦略を備えています。 |
✓ Yes
レイアウトを考慮しながらテキストを抽出します。スキャンしたドキュメントにはIronOCRと組み合わせることができます。
|
| ページを画像にレンダリングする |
? Unknown
OCR ワークフローではレンダリングについて言及されていますが、引用されている iText ドキュメントにはプライマリソースの"PDF → 画像レンダラー"モジュールは示されていません。
|
✓ Built-in
設定可能な DPI による PNG、JPEG、BMP へのネイティブ ラスタライズ。
|
| 内蔵OCR |
$ Paid Add-on
pdfOCR アドオンが利用可能です。インストール ノートには、プラットフォーム固有/ネイティブの依存関係 (Linux/macOS ランタイム要件など) が記載されています。
|
✓ Via IronOCR
スキャンされた PDF で 127 以上の言語の OCR を実行するためのIronOCRとのネイティブ統合。
|
| 編集と操作 | ||
| マージと分割 |
✓ Yes
PdfMerger .NET API のクラス。公式の例では、PdfMerger によるマージについて説明しています。 |
✓ Yes
直感的な API を使用して、1 行の結合、分割、追加、先頭への追加、ページの並べ替えを行います。
|
| ヘッダー、フッター、ページ番号 |
✓ Yes
PDF Association リストには、既存の PDF に"ページ番号"や同様の機能を追加できることが記載されています。
|
✓ Yes
自動ページ番号、日付、カスタム コンテンツを含む HTML ベースのヘッダー/フッター。
|
| ウォーターマーク |
✓ Yes
PDF Association のリストには、"既存の PDF ドキュメントへの透かし"が明示的に含まれています。
|
✓ Yes
ApplyWatermark() HTML/CSS を受け入れ、不透明度、回転、位置を完全に制御できます。 |
| テキスト & 画像のスタンプ |
✓ Yes
iText のキャンバスおよびレイアウト API を介してプログラムによるコンテンツ配置が利用可能。
|
✓ Yes
TextStamper & Google Fonts、配置、ページごとの制御を備えたImageStamper 。 |
| コンテンツを編集する |
✓ Yes
iText は、クリーンアップ モジュールを介して編集注釈のサポートを提供します。
|
✓ Yes
RedactTextOnAllPages() 1 行内の機密テキストを永久に削除します。 |
| セキュリティとコンプライアンス | ||
| 暗号化とパスワード |
✓ Yes
iText のセキュリティ API による完全な暗号化と権限制御。
|
✓ Yes
AES 暗号化、所有者/ユーザー パスワード、きめ細かな権限 (印刷、コピー、注釈)。
|
| デジタル署名 |
✓ Yes
専用のデジタル署名ドキュメントと署名 API (
PdfSigner )。 |
✓ Yes
PdfSignature X509/PFX 証明書をサポートします。 |
| PDF/A および PDF/UA 準拠 |
✓ Yes
ドキュメントでは PDF/A の作成について説明し、制約について説明します (既存のものからの変換は自動ではありません)。
|
✓ Yes
エンタープライズでの使用に適したネイティブ PDF/A アーカイブおよび PDF/UA アクセシビリティ準拠。
|
| プラットフォームと展開 | ||
| クロスプラットフォームサポート |
✓ Yes
.NET Standard 2.0 / .NET Framework 4.6.1 — さまざまな OS for .NET 6 以降で実行されます。
|
✓ Yes
Windows、Linux、macOS、x64、x86、 .NET 6~10、Core、Standard 2.0+、Framework 4.6.2+。
|
| サーバー / Docker / クラウド |
~ Complex
コアインストールには複数のパッケージ (iText + Bouncy Castle アダプター) が必要です。アドオン (pdfHTML/pdfOCR) はさらに依存関係/コンプライアンス手順を追加します。
|
✓ Yes
Docker、Azure、AWS、IIS。公式Dockerイメージとデプロイメントガイド。
|
| セットアップの容易さ |
~ Complex
コアのインストールには複数のパッケージ (Bouncy Castle アダプター) が必要です。HTML/OCR には追加のアドオンと、場合によってはネイティブ依存関係が必要です。
|
✓ Simple
Install-Package IronPDF NuGetコマンド1つで、数分で準備完了です。 |
| ライセンスとサポート | ||
| ライセンスモデル |
~ Complex
デュアルライセンス:AGPLv3(ネットワーク利用におけるソースコード開示義務)または商用ライセンス。AGPLはプロプライエタリアプリには制限がある場合があります。
|
✓ Commercial
永久ライセンス。30 日間の全機能無料トライアル、透かしなし。
|
| 商用サポートとSLA |
✓ Yes
iText サイトには、ライセンス モデルの一部として商用ライセンス + サポート契約が含まれています。
|
✓ 24/5 Support
SLA 保証付きの専用エンジニアリング サポート (電子メール、ライブ チャット、電話)。
|
| ドキュメント |
✓ Yes
インストール ガイド、ナレッジ ベースの記事、API リファレンス (コア + アドオン) が利用可能です。
|
✓ Extensive
完全な API リファレンス、100 以上のハウツー、チュートリアル、コード例、トラブルシューティング、ビデオ。
|
公式iTextドキュメント、PDF Associationリスト、およびNuGetパッケージリファレンスから取得されたデータ。
iTextは強力ですが、AGPLライセンスの複雑さとマルチパッケージ設定のオーバーヘッドがあります。
IronPDFはシンプルなセットアップで完全なカバーを提供します—30
日間無料でお試しください。
PDFを扱う開発者にとって、信頼できるPDF生成と操作のためのライブラリを持つことは不可欠です。 まず、.NETエコシステムでは、選択肢として多数のC#のPDFライブラリが存在します。それでは、どれがあなたのニーズに最適かをどう選択しますか?
PDF機能を備えた.NETアプリケーションで作業する際には、適切なライブラリを選択することが、効率的な開発にとって非常に重要です。 この記事は、主なC# PDFライブラリであるIronPDFとiText(以前はiTextとして知られていた)を詳細に比較しています。 彼らの機能、パフォーマンス、ライセンス、さまざまなプロジェクト要件への適合性を探り、情報に基づいた意思決定を支援します。
なぜ.NET PDFライブラリを選択するのか?
PDFはレポート、請求書、法的文書で広く使用されており、PDFの生成と操作は多くのアプリケーションにとって重要です。 ライブラリを選択する際に考慮すべき重要な要素には次のものがあります:
- 統合の容易さ — PDF機能をどれくらいすばやく実装できますか?
- HTMLからPDFへのサポート — ウェブコンテンツから簡単に変換できるか?
- ライセンスとコスト — 無料か、有料の商用ライセンスが必要か?
- 機能セット — テキスト抽出、署名、編集をサポートしているか?
- パフォーマンス — PDF生成や処理の速さはどうか?
IronPDFとiTextの概要
IronPDFの紹介
IronPDFは特に.NET開発者のために設計された商用PDFライブラリです。 これはPDFの生成、操作、変換を簡素化しており、その使いやすさからC#アプリケーションでの使用が非常に便利です。
IronPDFは.NET Core、.NET Framework、.NET Standardをサポートしており、さまざまな.NET環境での互換性を保証します。 その高いプラットフォーム間の互換性から、異なるアプリ環境で働くチームにとって理想的な選択肢となり、Visual StudioのようなIDEともスムーズに統合されます。 .NETバージョン以外にも、IronPDFはJava、Python、Node.jsでも利用可能です。
主な特徴:
- 組み込みのHTMLからPDFへのサポート — ウェブページ、HTML、CSS、およびJavaScriptを追加モジュールなしでPDFに変換。
- PDF編集 — 既存のPDFにテキスト、画像、ヘッダー、フッターを追加して変更。
- PDFセキュリティ - PDFを暗号化し、パスワード保護を設定し、表示、印刷、編集のための権限を管理します。
- 透かしと注釈 — テキストと画像の透かし、スタンプ、またはコメントを簡単に適用。
- フォームの記入とデータ抽出 - インタラクティブなPDFフォームをプログラムで入力し、フォームデータを抽出します。
おすすめ: 追加モジュールや複雑なライセンスの手間をかけずに、シンプルですべてが揃ったソリューションを求める開発者。
iTextの紹介
iTextは、文書の作成、暗号化、署名を含む広範なPDF操作機能を提供する強力で柔軟なPDFライブラリです。 しかし、そのコアライブラリはHTMLからPDFへの変換をネイティブサポートしていません。
主な機能
- 低レベルのPDFカスタマイズ — PDF構造、メタデータ、レンダリングの詳細な制御を提供。
-
- アクセシビリティとコンプライアンス: 長期的なアーカイブとアクセシビリティコンプライアンスのためにPDF/A、PDF/UA、PDF/Xを生成します。
-
- HTMLからPDFへの変換: 有料のpdfHTMLアドオンによりHTMLコンテンツのPDFへの変換が可能。
- Java & .NETのサポート: 主にJava向けに設計され、iText for .NETを介してC#をサポートしています。
-
- PDFフォーム管理: インタラクティブPDFフォームのためにAcroFormsおよびXFAフォームを作成および編集します。
-
おすすめ対象:高度にカスタマイズ可能なPDFソリューションが必要で、追加機能のためにアドオンを購入する意思のある開発者。
機能と利点
機能と思われるコード例に入る前に、IronPDFとiTextの間で一番大きな機能的な違いであるHTMLからPDFへの変換を見てみましょう。
- IronPDF はHTML、CSS、JavaScriptのレンダリングを追加コンポーネントなしでサポートします。
- iTextの場合、pdfHTMLアドオンが必要で、これは商業ライセンスのもとでの有料機能です。 これはweb-to-PDF機能を必要とする開発者のコストを増加させます。

結論: HTMLからPDFへの変換が必要な場合には、IronPDFがコスト効率の高いソリューションで、標準でこの機能を含んでいます。
IronPDFの主な機能(コード例付き)
IronPDFはPDFドキュメントで作業するための豊富な機能セットを誇ります。 これにはPDFの作成からPDFの操作、セキュリティが含まれます。 このライブラリが提供する豊富な機能の範囲をより明確に理解するために、いくつかの主要な機能を見ていきます。
HTMLからPDFへの変換
HTMLコンテンツを IronPDFの強力なレンダリングエンジンを使用して高品質のPDFドキュメントに変換します。 IronPDFのレンダラーは単にHTMLコンテンツを変換するだけではありません; これにより、すべての元のCSSスタイリングおよびJavaScriptのインタラクティビティを維持できます。
using IronPdf;
public class Program
{
static void Main(string[] args)
{
// Create a new ChromePdfRenderer instance for rendering HTML to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified HTML file as a PDF document
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
// Save the rendered PDF to the specified file path
pdf.SaveAs("HtmlToPdf.pdf");
}
}
using IronPdf;
public class Program
{
static void Main(string[] args)
{
// Create a new ChromePdfRenderer instance for rendering HTML to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified HTML file as a PDF document
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
// Save the rendered PDF to the specified file path
pdf.SaveAs("HtmlToPdf.pdf");
}
}
Imports IronPdf
Public Class Program
Shared Sub Main(ByVal args() As String)
' Create a new ChromePdfRenderer instance for rendering HTML to PDF
Dim renderer As New ChromePdfRenderer()
' Render the specified HTML file as a PDF document
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("example.html")
' Save the rendered PDF to the specified file path
pdf.SaveAs("HtmlToPdf.pdf")
End Sub
End Class
入力HTML

出力PDF

このコード例では、まず新しいChromePdfRendererインスタンスを作成し、IronPDFがHTMLをPDFにレンダリングする際に使用する強力なレンダリングエンジンへのアクセスを提供しました。 次に、HTMLファイルをPdfDocumentオブジェクトに格納されます。 最後に、PDFを指定されたファイルの場所に保存します。
URLからPDFへ
URLコンテンツをPDFに変換したい開発者は、IronPDF以外を探す必要はありません。 このライブラリを使用すれば、URLからPDFをレンダリングする際に、元のスタイリングとレイアウトをすべて維持しながらChromePdfRendererレンダリングエンジンを使用してピクセルパーフェクトなPDFドキュメントを作成できます。 この例では、より複雑なCSSスタイリングを扱えるIronPDFを実証するためにこのURLを利用します。
using IronPdf;
public class Program
{
static void Main(string[] args)
{
// Create a new ChromePdfRenderer instance
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF document
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
// Save the rendered PDF to the specified file path
pdf.SaveAs("UrlToPdf.pdf");
}
}
using IronPdf;
public class Program
{
static void Main(string[] args)
{
// Create a new ChromePdfRenderer instance
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF document
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
// Save the rendered PDF to the specified file path
pdf.SaveAs("UrlToPdf.pdf");
}
}
Imports IronPdf
Public Class Program
Shared Sub Main(ByVal args() As String)
' Create a new ChromePdfRenderer instance
Dim renderer As New ChromePdfRenderer()
' Render the specified URL as a PDF document
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
' Save the rendered PDF to the specified file path
pdf.SaveAs("UrlToPdf.pdf")
End Sub
End Class
PDF出力:

HTMLからPDFへの例と同様に、IronPDFを使用して任意のURLをPDFに変換するための最初のステップは、新しいChromePdfRendererインスタンスを作成することです。 メソッドがURLコンテンツをPDF形式にレンダリングしたら、SaveAsメソッドでPDFを保存します。
PDF 署名
PDFドキュメントにデジタル署名を適用してその信頼性を確認します。 開発者が考慮するかもしれないデジタル署名を適用する方法には、セキュアな証明書でPDFにデジタル署名をすること、PDFに署名の手書き画像を追加すること、またはPDF自体に証明書の画像をスタンプすることがあります。
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;
public class Program
{
static void Main(string[] args)
{
// Load the certificate used for signing the PDF
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);
// Create a PdfSignature instance and set the signature image
var sig = new PdfSignature(cert);
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));
// Sign the existing PDF file and save the signed version
sig.SignPdfFile("product_report.pdf");
}
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;
public class Program
{
static void Main(string[] args)
{
// Load the certificate used for signing the PDF
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);
// Create a PdfSignature instance and set the signature image
var sig = new PdfSignature(cert);
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));
// Sign the existing PDF file and save the signed version
sig.SignPdfFile("product_report.pdf");
}
}
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Imports IronSoftware.Drawing
Public Class Program
Shared Sub Main(ByVal args() As String)
' Load the certificate used for signing the PDF
Dim cert As New X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable)
' Create a PdfSignature instance and set the signature image
Dim sig = New PdfSignature(cert)
sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 350, 250))
' Sign the existing PDF file and save the signed version
sig.SignPdfFile("product_report.pdf")
End Sub
End Class
出力PDF

この例では、証明書オブジェクトをロードし、署名の視覚的表現(あるいは我々の場合はIronPDF画像)を作成し、新しいPdfSignatureオブジェクトを作成して、PDFドキュメント自体の署名を処理します。 最後に、SignPdfFileを使用してPDFドキュメントに署名し保存しました。
IronPDF が提供する機能の詳細についてもっと知りたい場合は、説明が詳しい機能ページや、各機能の詳細なコード例を含む使い方ガイドをご覧ください。
iTextの主要機能(コード例付き)
iTextは、PDFドキュメントをカスタマイズし、向上させるための幅広い機能を提供します。 さまざまなPDF標準への対応や高度なPDF操作のための広範なフォーマットサポートを備えており、このPDFライブラリには多くの機能が詰まっています。 しかし、前述したように、iTextには、HTMLからPDFの変換などの特定のPDF関連タスクを実行するために追加パッケージが必要な場合がある。
HTMLからPDFへの変換
iText自体ではHTMLからPDFへの変換を扱うことができませんが、iTextの商業ライセンスのもとで有料アドオンであるpdfHTMLを活用して、IronPDFの例で使用したHTMLファイルをPDF文書に変換できます。
using iText.Html2pdf;
using System.IO;
public class Program
{
static void Main(string[] args)
{
// Open the HTML file stream
using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
// Create the output PDF file stream
using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
{
// Initialize ConverterProperties for HTML to PDF conversion
ConverterProperties converterProperties = new ConverterProperties();
// Convert the HTML source to a PDF document
HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
// Close the PDF file
pdf.Close();
}
}
}
using iText.Html2pdf;
using System.IO;
public class Program
{
static void Main(string[] args)
{
// Open the HTML file stream
using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
// Create the output PDF file stream
using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
{
// Initialize ConverterProperties for HTML to PDF conversion
ConverterProperties converterProperties = new ConverterProperties();
// Convert the HTML source to a PDF document
HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
// Close the PDF file
pdf.Close();
}
}
}
Imports iText.Html2pdf
Imports System.IO
Public Class Program
Shared Sub Main(ByVal args() As String)
' Open the HTML file stream
Using htmlSource As FileStream = File.Open("example.html", FileMode.Open)
' Create the output PDF file stream
Using pdf As FileStream = File.Open("HtmlToPdfOutput.pdf", FileMode.Create)
' Initialize ConverterProperties for HTML to PDF conversion
Dim converterProperties As New ConverterProperties()
' Convert the HTML source to a PDF document
HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties)
' Close the PDF file
pdf.Close()
End Using
End Using
End Sub
End Class
出力PDF

この例では、HTMLファイルを読み込み、レンダリングされたPDFを保存するファイルの場所を指定しました。 次に、ConvertToPdfメソッドを使用して、HTMLファイルをPDF文書に簡単に変換できます。
URLからPDFへ
次はiTextがIronPDFに対してURLからPDFへの変換の場合どのように測るかを比較する時です。 これには、公平な比較を確保するために前述と同じURLを使用します。
using System;
using System.Net.Http;
using System.IO;
using iText.Html2pdf;
public class Program
{
public static async System.Threading.Tasks.Task Main(string[] args)
{
string url = "https://www.apple.com"; // Replace with your target URL
string outputPdfPath = "output.pdf";
try
{
// Download HTML content from the URL
using (HttpClient client = new HttpClient())
{
string htmlContent = await client.GetStringAsync(url);
// Convert HTML to PDF
using (FileStream pdfStream = new FileStream(outputPdfPath, FileMode.Create))
{
ConverterProperties properties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties);
}
}
Console.WriteLine("PDF created successfully: " + outputPdfPath);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
using System;
using System.Net.Http;
using System.IO;
using iText.Html2pdf;
public class Program
{
public static async System.Threading.Tasks.Task Main(string[] args)
{
string url = "https://www.apple.com"; // Replace with your target URL
string outputPdfPath = "output.pdf";
try
{
// Download HTML content from the URL
using (HttpClient client = new HttpClient())
{
string htmlContent = await client.GetStringAsync(url);
// Convert HTML to PDF
using (FileStream pdfStream = new FileStream(outputPdfPath, FileMode.Create))
{
ConverterProperties properties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties);
}
}
Console.WriteLine("PDF created successfully: " + outputPdfPath);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
Imports System
Imports System.Net.Http
Imports System.IO
Imports iText.Html2pdf
Public Class Program
Public Shared Async Function Main(ByVal args() As String) As System.Threading.Tasks.Task
Dim url As String = "https://www.apple.com" ' Replace with your target URL
Dim outputPdfPath As String = "output.pdf"
Try
' Download HTML content from the URL
Using client As New HttpClient()
Dim htmlContent As String = Await client.GetStringAsync(url)
' Convert HTML to PDF
Using pdfStream As New FileStream(outputPdfPath, FileMode.Create)
Dim properties As New ConverterProperties()
HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties)
End Using
End Using
Console.WriteLine("PDF created successfully: " & outputPdfPath)
Catch ex As Exception
Console.WriteLine("Error: " & ex.Message)
End Try
End Function
End Class
出力PDF

ここで見られるように、iTextのURLからPDFへの変換アプローチはより手動で複雑です。 最初にURLからHTMLコンテンツをダウンロードし、HTMLからPDFへの例で見たような手順に従ってURLコンテンツをPDFドキュメントにレンダリングして保存する必要があります。 出力画像でわかるように、iTextはIronPDFとは違い、元のスタイルやレイアウトを維持することができなかった。
PDF 署名
using System.Security.Cryptography.X509Certificates;
using iText.Kernel.Pdf;
using iText.Signatures;
using iText.Bouncycastle.Crypto;
using iText.Commons.Bouncycastle.Cert;
using iText.Commons.Bouncycastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using iText.Bouncycastle.X509;
using iText.Kernel.Crypto;
using System.IO;
public class Program
{
static void Main(string[] args)
{
string inputPdf = "input.pdf"; // PDF to be signed
string outputPdf = "signed_output.pdf"; // Signed PDF output
string pfxFile = "IronSoftware.pfx"; // Path to your PFX certificate
string password = "Passw0rd"; // Password for PFX file
try
{
// Load your certificate
Pkcs12Store ks = new Pkcs12StoreBuilder().Build();
using (FileStream fs = new FileStream(pfxFile, FileMode.Open, FileAccess.Read))
{
ks.Load(fs, password.ToCharArray());
}
string alias = null;
foreach (string al in ks.Aliases)
{
if (ks.IsKeyEntry(al))
{
alias = al;
break;
}
}
if (alias == null)
{
throw new Exception("Alias not found in the PFX file.");
}
ICipherParameters pk = ks.GetKey(alias).Key;
X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
// Convert BouncyCastle certificates to iText certificates
var itextCertChain = new IX509Certificate[chain.Length];
for (int i = 0; i < chain.Length; i++)
{
itextCertChain[i] = new X509CertificateBC(chain[i].Certificate);
}
// Create output PDF with signed content
using (PdfReader reader = new PdfReader(inputPdf))
using (FileStream os = new FileStream(outputPdf, FileMode.Create, FileAccess.Write))
{
PdfSigner signer = new PdfSigner(reader, os, new StampingProperties().UseAppendMode());
// Set up the external signature (private key + digest algorithm)
IPrivateKey iTextPrivateKey = new PrivateKeyBC(pk);
IExternalSignature pks = new PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256);
IExternalDigest digest = new BouncyCastleDigest();
// Perform the signing (detached signature)
signer.SignDetached(digest, pks, itextCertChain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
Console.WriteLine($"PDF digitally signed successfully: {outputPdf}");
}
catch (Exception ex)
{
Console.WriteLine($"Error signing PDF: {ex.Message}");
}
}
}
using System.Security.Cryptography.X509Certificates;
using iText.Kernel.Pdf;
using iText.Signatures;
using iText.Bouncycastle.Crypto;
using iText.Commons.Bouncycastle.Cert;
using iText.Commons.Bouncycastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using iText.Bouncycastle.X509;
using iText.Kernel.Crypto;
using System.IO;
public class Program
{
static void Main(string[] args)
{
string inputPdf = "input.pdf"; // PDF to be signed
string outputPdf = "signed_output.pdf"; // Signed PDF output
string pfxFile = "IronSoftware.pfx"; // Path to your PFX certificate
string password = "Passw0rd"; // Password for PFX file
try
{
// Load your certificate
Pkcs12Store ks = new Pkcs12StoreBuilder().Build();
using (FileStream fs = new FileStream(pfxFile, FileMode.Open, FileAccess.Read))
{
ks.Load(fs, password.ToCharArray());
}
string alias = null;
foreach (string al in ks.Aliases)
{
if (ks.IsKeyEntry(al))
{
alias = al;
break;
}
}
if (alias == null)
{
throw new Exception("Alias not found in the PFX file.");
}
ICipherParameters pk = ks.GetKey(alias).Key;
X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
// Convert BouncyCastle certificates to iText certificates
var itextCertChain = new IX509Certificate[chain.Length];
for (int i = 0; i < chain.Length; i++)
{
itextCertChain[i] = new X509CertificateBC(chain[i].Certificate);
}
// Create output PDF with signed content
using (PdfReader reader = new PdfReader(inputPdf))
using (FileStream os = new FileStream(outputPdf, FileMode.Create, FileAccess.Write))
{
PdfSigner signer = new PdfSigner(reader, os, new StampingProperties().UseAppendMode());
// Set up the external signature (private key + digest algorithm)
IPrivateKey iTextPrivateKey = new PrivateKeyBC(pk);
IExternalSignature pks = new PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256);
IExternalDigest digest = new BouncyCastleDigest();
// Perform the signing (detached signature)
signer.SignDetached(digest, pks, itextCertChain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
Console.WriteLine($"PDF digitally signed successfully: {outputPdf}");
}
catch (Exception ex)
{
Console.WriteLine($"Error signing PDF: {ex.Message}");
}
}
}
Imports System.Security.Cryptography.X509Certificates
Imports iText.Kernel.Pdf
Imports iText.Signatures
Imports iText.Bouncycastle.Crypto
Imports iText.Commons.Bouncycastle.Cert
Imports iText.Commons.Bouncycastle.Crypto
Imports Org.BouncyCastle.Pkcs
Imports Org.BouncyCastle.Crypto
Imports iText.Bouncycastle.X509
Imports iText.Kernel.Crypto
Imports System.IO
Public Class Program
Shared Sub Main(ByVal args() As String)
Dim inputPdf As String = "input.pdf" ' PDF to be signed
Dim outputPdf As String = "signed_output.pdf" ' Signed PDF output
Dim pfxFile As String = "IronSoftware.pfx" ' Path to your PFX certificate
Dim password As String = "Passw0rd" ' Password for PFX file
Try
' Load your certificate
Dim ks As Pkcs12Store = (New Pkcs12StoreBuilder()).Build()
Using fs As New FileStream(pfxFile, FileMode.Open, FileAccess.Read)
ks.Load(fs, password.ToCharArray())
End Using
Dim [alias] As String = Nothing
For Each al As String In ks.Aliases
If ks.IsKeyEntry(al) Then
[alias] = al
Exit For
End If
Next al
If [alias] Is Nothing Then
Throw New Exception("Alias not found in the PFX file.")
End If
Dim pk As ICipherParameters = ks.GetKey([alias]).Key
Dim chain() As X509CertificateEntry = ks.GetCertificateChain([alias])
' Convert BouncyCastle certificates to iText certificates
Dim itextCertChain = New IX509Certificate(chain.Length - 1){}
For i As Integer = 0 To chain.Length - 1
itextCertChain(i) = New X509CertificateBC(chain(i).Certificate)
Next i
' Create output PDF with signed content
Using reader As New PdfReader(inputPdf)
Using os As New FileStream(outputPdf, FileMode.Create, FileAccess.Write)
Dim signer As New PdfSigner(reader, os, (New StampingProperties()).UseAppendMode())
' Set up the external signature (private key + digest algorithm)
Dim iTextPrivateKey As IPrivateKey = New PrivateKeyBC(pk)
Dim pks As IExternalSignature = New PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256)
Dim digest As IExternalDigest = New BouncyCastleDigest()
' Perform the signing (detached signature)
signer.SignDetached(digest, pks, itextCertChain, Nothing, Nothing, Nothing, 0, PdfSigner.CryptoStandard.CMS)
End Using
End Using
Console.WriteLine($"PDF digitally signed successfully: {outputPdf}")
Catch ex As Exception
Console.WriteLine($"Error signing PDF: {ex.Message}")
End Try
End Sub
End Class
出力PDF

ご覧の通り、iTextはPDF文書をデジタル署名することができるが、そのプロセスはIronPDFよりもはるかに複雑である傾向があります。 このコードはPFX証明書をロードし、それを使用してPDFにデジタル署名します。 プライベートキーと証明書を抽出し、署名者を設定し、PDFに対してデタッチド署名を追加し、署名されたドキュメントを保存します。
競合分析
パフォーマンスと使いやすさ
IronPDFの主な利点
IronPDFは使いやすさと高パフォーマンスで最適化されていることから知られており、HTMLからPDFへの変換などの一般的なタスクを簡素化するAPIを提供しています。 高レベルのメソッドにより、複雑なPDF処理タスクを抽象化し、開発者はPDFを少ないコードで生成、編集、操作できます。 マルチスレッドまたは大規模なドキュメント処理のために、IronPDFは並列実行をサポートしています。
- 使いやすいAPI — 高レベルのメソッドがHTMLからPDFへの変換などの一般的なタスクを簡素化。
- 最小のセットアップが必要 — .NETプロジェクトに簡単に統合。
- ビルトインの並列実行 — 大量のPDF生成と変換の処理に最適化。
- 簡素化されたAPI — 結果を達成するためのコード行を削減。
iText - 強力だが複雑
一方、iTextはより詳細かつ粒度の細かい制御を提供し、カスタマイズが必要な開発者にとっては利点となり得る。 低レベルのPDF操作に対して強力なAPIを提供します。 しかし、iTextの複雑さのため、似たような結果を得るためにはIronPDFと比較してより多くのコードが必要です。
- 粒度の高いPDF制御 — 厳格なコンプライアンスを必要とする企業アプリケーション(例:PDF/A、PDF/UA、デジタル署名)に理想的。
- 高度なカスタマイズ可能性 — 高度なユースケース向けの低レベルのPDF操作を提供。
- 急勾配な学習曲線 — IronPDFに比較して、より多くのセットアップと構成が必要。
- より多くのコードが必要になることが多い — 一般的なタスクはしばしばより長い実装を必要とします。
ライセンスとコスト
.NETプロジェクトのPDFライブラリを選択する際には、ライセンスとコストの考慮が重要です。 IronPDFとiTextは異なるライセンスモデルを採用しており、プロジェクトの要件、予算、およびコンプライアンスのニーズに応じて適切なものを選択することになります。
IronPDFのライセンスとコスト
IronPDFは商用ライセンスモデルを採用しており、無料の試用版が商用ライセンスには提供されているものの、開発および評価目的には無料ですが、完全なプロダクションでの使用には有料ライセンスが必要です。 価格は使用規模、開発者数、プロジェクトタイプなどの要因に基づいて透明に決まります。
IronPDFのライセンス:
- 商用ライセンスモデル(オープンソースの制限なし)。
- 開発者またはチームライセンスに基づく明確な価格設定。
- HTMLからPDF、PDFセキュリティ、その他のコア機能に追加料金はありません。
- シンプルでコスト効果の高いPDFソリューションが必要な企業に最適。
結論: IronPDFはすべての主要機能を単一のライセンスに含んでおり、チームや企業にとってコスト効果の高い選択肢です。
iTextライセンスとコスト
iTextは二重ライセンスモデルを採用しており、以下を含みます:
- AGPL(GNU Affero General Public License) - オープンソースプロジェクトに対しては無料ですが、iTextを使用するすべてのプロジェクトがオープンソースであり、AGPLに準拠している必要があります。 これは、プロジェクトに加えられた修正または追加が公に共有されなければならないことを意味します。
- 商用ライセンス ー ソースコードを開示したくないプロプライエタリソフトウェアまたは商用アプリケーションには必要です。 価格構造は使用、サポートレベル、展開規模に基づいて異なります。
iTextを独自ソフトウェアに統合しようとする企業にとっては、商業ライセンスが必須です。 コストは特にエンタープライズソリューションでは重要であり、開発者ごとにスケールされて価格が決められますが、プロフェッショナルサポートへのアクセスが提供され、法的コンプライアンスが保証されます。
-
なぜiTextがより高価になり得るのか:
- 開発者あたりの価格設定 — 各開発者は個別のライセンスが必要で、チーム全体のコストが増加。
- 重要な機能には高価なアドオンが必要です:
- pdfHTML(有料) — HTMLからPDFへの変換に必要。
- pdfOCR(有料) — 画像からのテキスト認識に必要。
- pdfCalligraph(有料) — テキストレンダリングやフォントサポートを改善。
- pdfRender(有料) — PDFから画像への変換を追加。
- pdf2Data(有料) — PDFから構造化データを抽出。
- 複数の機能と開発者が必要な場合、企業コストは急速に加算される。
結論: 複数の開発者が必要で、HTMLからPDFへの変換やOCRなどの主要機能が必要な場合、iTextは追加コストをかけずにこれらの機能を提供するIronPDFよりも大幅に高価になる可能性があります。
使用ケースシナリオ
小規模対エンタープライズプロジェクト
迅速なPDF機能の実装を要求し、最小限の構成で済ませたい小中規模のプロジェクトにとって、IronPDFはその使いやすいAPIと包括的な機能セットにより魅力的な選択肢です。 エンタープライズレベルのプロジェクトで、PDF標準への厳しい準拠と高度なカスタマイズが必要な場合、iTextの高度な機能は恩恵を受けるかもしれませんが、IronPDFもこのレベルの作業に適した候補で、その高いパフォーマンスとライセンスオプション、そして使いやすさを兼ね備えています。
学術および商業利用
学術環境やオープンソースプロジェクトでは、iTextのAGPLライセンスにより、プロジェクトのライセンスが互換性がある限り無料で使用できます。 商業アプリケーションにおいて、IronPDFとiTextの両方とも商業ライセンスの購入が必要です。 それぞれのライブラリのライセンス条件を確認することで、プロジェクトの目標に対する準拠性を確保することをお勧めします。
結論
.NETプロジェクトに最適なPDFライブラリを選択することは、使いやすさ、機能セット、ライセンスの必要性などの要因によって影響を受ける重要な決定です。 IronPDFとiTextの両者は強力なPDF機能を提供しますが、それぞれ異なる要件に対応しています。 これら2つのライブラリ以外にも、Aspose、Syncfusion、PDFSharpのような競争力のある.NET PDFライブラリを提供する競合他社が存在します。 しかし、IronPDFは、使いやすいAPI、包括的な機能セット、およびコスト効率でPDF業界をリードし続けています。
以下に、IronPDFがすべて for .NET PDFライブラリのニーズに対して優れた選択肢である理由を示す説得力のある議論を要約しました。

IronPDFの利点
- 使いやすさ: IronPDFは簡易性に重点を置いて設計されており、.NETアプリケーションにPDF機能を迅速に統合する必要がある開発者に最適な選択です。 その直感的なAPIは学習曲線を短縮し、開発時間を加速します。
- 包括的なドキュメントとサポート: IronPDFは詳細なドキュメントと活発なカスタマーサポートを提供し、開発者が迅速に状況を把握し、問題を効果的にトラブルシュートできるようにします。
- シームレスなHTMLからPDFへの変換: IronPDFはHTML、CSS、JavaScriptを含む高品質のPDFへの変換に秀でています。 これは、ウェブベースのコンテンツからPDFを動的に生成する必要があるプロジェクトに特に有益です。
- 商用ライセンス: 商用アプリケーションに対して、IronPDFはフレキシブルなライセンスオプションを提供し、オープンソースライセンスによる制約なしに準拠を確保します。
iTextの制約
- 複雑さ: iTextは高度な機能とカスタマイズ性を提供していますが、そのAPIはPDF操作に不慣れな開発者にとって複雑である可能性があります。 これにより、IronPDFのより直接的なアプローチと比べて一般的なタスクの開発時間が長くなる可能性があります。
- 商業利用のライセンス費用: iTextのAGPLライセンスでは、派生作品をオープンソースにすることが要求されますが、商業ライセンスを購入することでその制限を回避できます。 これは、AGPLの条件に従えないプロプライエタリアプリケーションの制約となるかもしれません。
- Java中心の機能: iTextは.NETでも利用可能ですが、そ for Javaエコシステムにおけるルーツにより、クロスプラットフォームの問題やJavaベースのツールとの統合を行う際にC#開発者にはややなじみがなく感じるかもしれません。
最終考察
プロジェクトが特にWebコンテンツからの迅速なPDF生成が必要で、使いやすいソリューションを探している場合はIronPDFがより良い選択かもしれません。しかし、アプリケーションが高度なPDF操作やPDF標準への厳密な準拠を求め、徹底的にカスタマイズする柔軟性が必要な場合は、iTextが適した選択となるかもしれません。 プロジェクトの具体的な要件とライセンスの制約を考慮して、ニーズに最適なライブラリを判断してください。
IronPDFを試してみよう: 無料試用版をダウンロードし、IronPDFの強力な機能を自分で体験してみましょう!
[[i: (iTextはその所有者の登録商標です。 このサイトは、iTextと提携しておらず、承認されてもおらず、後援されてもいません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。)]]
よくある質問
C# で HTML を PDF に変換するにはどうすればいいですか?
IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。
IronPDFとiText 7の主な違いは何ですか?
IronPDFはスムーズなHTMLからPDFへの変換と簡潔な商業ライセンスモデルを提供していますが、iText 7はHTMLからPDFへの変換に有料のアドオンが必要で、デュアルライセンスモデルに従います。IronPDFは使いやすさで知られていますが、iText 7は高度なPDF操作を提供しますが、学習曲線が急です。
なぜ.NETプロジェクトにIronPDFを選ぶべきですか?
IronPDFは迅速でコスト効率の高いPDF実装に理想的で、使いやすさ、包括的なドキュメント、および追加費用なしでのHTMLからPDFへの変換を提供します。複数 for .NETバージョンをサポートし、PDF編集やセキュリティなどの広範な機能を提供します。
IronPDFは複雑なPDF文書を生成するのに適していますか?
はい、IronPDFはフォーム入力、注釈、データ抽出などの機能を備え、複雑なPDF文書の生成をサポートします。その広範な機能により、さまざまなプロフェッショナルなPDFアプリケーションに適しています。
IronPDFのライセンスオプションはどのようになっていますか?
IronPDFは商業ライセンスモデルを採用しており、それを使用するには有料ライセンスが必要です。このシンプルなモデルは、iText 7のようなデュアルライセンスシステムに関連する複雑さを排除します。
.NET CoreプロジェクトにIronPDFを統合できますか?
はい、IronPDFは.NET Coreプロジェクトに統合できます。.NET Core、.NET Framework、.NET Standardをサポートし、さまざまな開発環境に対して柔軟性があります。
IronPDFはPDFセキュリティ機能をどのように処理しますか?
IronPDFは暗号化、パスワード保護、デジタル署名を含む強力なPDFセキュリティ機能を提供し、機密文書情報の保護に役立ちます。
他のライブラリと比較してIronPDFはなぜユーザーフレンドリーですか?
IronPDFは、その簡潔なAPI、最小限のセットアップ要件、および包括的なドキュメントにより、PDF生成の経験が限られている開発者でも簡単に実装できるため、ユーザーフレンドリーと見なされています。
IronPDFでのHTMLからPDFへの変換には追加コストはありますか?
いいえ、IronPDFには組み込みのHTMLからPDFへの変換機能があり、他のPDFライブラリの一部が有料アドオンを必要とするのに対し、追加のコンポーネントやコストが不要です。
性能と速度の観点からIronPDFはどのように比較されますか?
IronPDFは性能と速度に最適化されており、迅速かつ信頼性の高いPDF生成と操作を提供し、大量のPDF処理を行うアプリケーションにとって重要です。



