製品比較

.NET Core向けiTextSharp C# HTML to PDF代替ソリューション

チペゴ
チペゴ・カリンダ
2025年2月19日
共有:

PDFを扱う開発者にとって、PDFの生成と操作のための信頼できるライブラリを持つことは不可欠です。 .NETエコシステムには、C# PDFライブラリーが多数存在する可能性があるため、どのライブラリーがあなたのニーズに最適かをどうやって選ぶのでしょうか?

.NETアプリケーションでPDF機能を扱う際、適切なライブラリを選択することは効率的な開発にとって重要です。 この記事は、2つの主要なC# PDFライブラリ、IronPDFiText 7(以前はiTextSharpとして知られていました)を詳細に比較しています。 私たちは、機能、パフォーマンス、ライセンス、さまざまなプロジェクト要件への適合性を探求し、情報に基づいた決定を下すのを支援します。

なぜ .NET PDF ライブラリを選ぶのか?

PDFはレポート、請求書、法的文書で広く使用されており、PDFの生成と操作は多くのアプリケーションにとって不可欠です。 ライブラリを選択する際に考慮すべき重要な要素には以下があります:

  • 統合の容易さ – PDF機能はどれくらい速く実装できますか?
  • HTMLからPDFへのサポート – ウェブコンテンツから簡単に変換できますか?
  • ライセンスとコスト – 無料ですか、それとも商用ライセンスが必要ですか?
  • 機能セット – テキスト抽出、署名、または編集をサポートしていますか?
  • パフォーマンス – どのくらい速くPDFを生成または処理しますか?

IronPDFとiText7の概要

IronPDFの紹介

IronPDFは、.NET開発者向けに特別に設計された商業PDFライブラリです。 それはPDFの生成、操作、変換を簡素化し、C#アプリケーションで最も簡単に使用できるライブラリの一つにしています。

IronPDFは、.NET Core、.NET Framework、および.NET Standardをサポートしており、さまざまな.NET環境との互換性を確保しています。 その高いクロスプラットフォーム互換性により、異なるアプリ環境で作業するチームにとって理想的な選択肢となり、Visual StudioなどのIDEとシームレスに統合されます。 IronPDFは、.NETバージョンに加えて、Java、Python、Node.jsでも利用可能です。

🔹 主な機能:

  • 組み込みのHTML-to-PDFサポート – 追加のアドオンなしで、ウェブページHTML、CSS、JavaScriptをPDFに変換します。
  • PDF編集テキストや画像の追加ヘッダーやフッターの追加により既存のPDFを修正します。
  • PDFセキュリティ – PDFを暗号化し、パスワード保護 を設定して、表示、印刷、または編集の権限を管理します。
  • ウォーターマークと注釈 – 簡単にテキストや画像のウォーターマーク、スタンプ、コメントをドキュメントに適用できます。
  • フォームの入力とデータ抽出 – インタラクティブなPDFフォームにプログラムで入力し、フォームデータを抽出します。

    📌 最適: 追加アドオンや複雑なライセンスの手間をかけず、シンプルでオールインワンのソリューションを求める開発者。

iText7の紹介

iText 7は、文書の作成、暗号化、署名を含む広範なPDF操作機能を提供する強力で柔軟なPDFライブラリです。 しかし、そのコアライブラリはネイティブにHTMLからPDFへの変換をサポートしていません。

🔹 主な機能:

  • 低レベルのPDFカスタマイズ – PDFの構造、メタデータ、レンダリングに関する詳細な制御を提供します。
  • アクセシビリティとコンプライアンス: 長期保存およびアクセシビリティのコンプライアンスのためにPDF/A、PDF/UA、PDF/Xを生成します。
  • HTML-to-PDF 変換: 有料のpdfHTMLアドオンは、HTMLコンテンツをPDFに変換できます。
  • Java & .NET サポート: 主にJava向けに設計されており、.NET用iText 7を介してC#をサポートします。
  • PDFフォーム管理: 対話型PDFフォーム用にAcroFormsやXFA Formsを作成および編集します。

    📌 最適な対象: 高度にカスタマイズ可能なPDFソリューションを必要とし、拡張機能のために追加アドオンを購入することをいとわない開発者。

特徴と利点

特徴とそれに伴うコード例に入る前に、まずIronPDFとiText 7の間の最大の機能的な違いの1つであるHTMLからPDFへの変換を見てみましょう。

  • IronPDF は、HTML、CSS、および JavaScript のレンダリングをネイティブでサポートしており、追加のコンポーネントを必要としません。
  • iText 7は一方で、pdfHTMLアドオンが必要であり、これは商用ライセンスの下での有料機能です。 これは、Web-to-PDF機能を必要とする開発者のコストを増加させます。

    Itextsharp 1 related to 特徴と利点

    HTMLから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)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
        pdf.SaveAs("HtmlToPdf.pdf");
    }
}
using IronPdf;

public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
        pdf.SaveAs("HtmlToPdf.pdf");
    }
}
Imports IronPdf

Public Class Program

	Shared Sub Main(ByVal args() As String)

		Dim renderer As New ChromePdfRenderer()
		Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("example.html")
		pdf.SaveAs("HtmlToPdf.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

入力HTML

Itextsharp 2 related to HTMLからPDFへの変換:

入力HTMLコンテンツ

出力PDF

Itextsharp 3 related to HTMLからPDFへの変換:

IronPDFを使用したHTMLからPDFへの出力

このコード例では、最初に新しいChromePdfRendererインスタンスを作成しました。これは、IronPDFがHTMLをPDFにレンダリングするために使用する強力なレンダリングエンジンにアクセスすることを可能にします。 その後、RenderHtmlFileAsPdf()メソッドにHTMLファイルを渡します。このメソッドは、HTMLをPDFにレンダリングし、PdfDocumentオブジェクトに保存します。 最後に、PDFを指定されたファイルの場所に保存します。

URLをPDFに変換

URLコンテンツをPDFに変換したい開発者向けに、IronPDFをご利用ください。 このライブラリを使用すると、ChromePdfRendererレンダリングエンジンを使用して、ピクセル完璧なPDFドキュメントを作成することができます。これにより、URL to PDFがレンダリングされた際に、すべての元のスタイリングとレイアウトが維持されます。 この例では、このURLを使用して、IronPDFがより複雑なCSSスタイリングをどのように処理できるかを示します。

using IronPdf;
public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        pdf.SaveAs("UrlToPdf.pdf");
    }
}
using IronPdf;
public class Program
{

    static void Main(string[] args)
    {

        ChromePdfRenderer renderer = new ChromePdfRenderer();

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        pdf.SaveAs("UrlToPdf.pdf");
    }
}
Imports IronPdf
Public Class Program

	Shared Sub Main(ByVal args() As String)

		Dim renderer As New ChromePdfRenderer()

		Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
		pdf.SaveAs("UrlToPdf.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

PDF出力:

Itextsharp 4 related to URLをPDFに変換

URL から PDF への出力に IronPDF を使用する

HTML から PDF への例と同様に、IronPDF を使用して URL を PDF に変換する最初のステップは、新しい ChromePdfRenderer インスタンスを作成することです。 メソッドがURLコンテンツをRenderUrlAsPdfを使用してPDF形式にレンダリングし終えたら、結果のPDFを新しいPdfDocumentオブジェクトに保存し、その後SaveAsメソッドを使用してPDFを保存します。

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)
    {
        // Create PdfSignature object
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        var sig = new PdfSignature(cert);
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign and save PDF document
        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)
    {
        // Create PdfSignature object
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        var sig = new PdfSignature(cert);
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign and save PDF document
        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)
		' Create PdfSignature object
		Dim cert As New X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable)

		Dim sig = New PdfSignature(cert)
		sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 350, 250))

		' Sign and save PDF document
		sig.SignPdfFile("product_report.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

出力PDF

Itextsharp 5 related to PDF署名:

IronPDFを使用したデジタル署名の出力

この例では、証明書オブジェクトを読み込み、署名の視覚的表現、またはこの場合ではIronPDF画像を作成し、新しいPdfSignatureオブジェクトを作成して、PDFドキュメント自体の署名を行います。 最後に、SignPdfFile を使用して、PDFドキュメントに署名し保存しました。

IronPDFの提供する機能をさらに探求したい場合は、ぜひその詳細な機能ページや各機能の詳細なコード例を含む使い方ガイドをご覧ください。

iText7の主な機能(コード例付き)

iText7は、PDFドキュメントをカスタマイズおよび強化するための幅広い機能を提供します。 さまざまなPDF規格の広範なフォーマットサポートと高度なPDF操作により、このPDFライブラリには多くの機能が詰め込まれています。 しかし、先に述べたように、iText7 は HTML から PDF への変換など、特定の PDF 関連のタスクを実行するために追加のパッケージを必要とする場合があります。

HTML から PDF への変換:

iText7自体はHTMLからPDFへの変換を行うことができませんが、iText7の商用ライセンス下で提供されている有料アドオンであるpdfHTMLを利用して、IronPDFの例で使用したHTMLファイルをPDFドキュメントに変換することができます。

using iText.Html2pdf;

public class Program
{

    static void Main(string[] args)
    {
        using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
        using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
        {
            ConverterProperties converterProperties = new ConverterProperties();
            HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
            pdf.Close();
        }
    }
}
using iText.Html2pdf;

public class Program
{

    static void Main(string[] args)
    {
        using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
        using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
        {
            ConverterProperties converterProperties = new ConverterProperties();
            HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
            pdf.Close();
        }
    }
}
Imports iText.Html2pdf

Public Class Program

	Shared Sub Main(ByVal args() As String)
		Using htmlSource As FileStream = File.Open("example.html", FileMode.Open)
		Using pdf As FileStream = File.Open("HtmlToPdfOutput.pdf", FileMode.Create)
			Dim converterProperties As New ConverterProperties()
			HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties)
			pdf.Close()
		End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

出力PDF

Itextsharp 6 related to HTML から PDF への変換:

iText7 HTMLからPDFへの出力

この例では、HTMLファイルを読み込み、レンダリングされたPDFを保存するファイルの場所を指定しました。 次に、ConvertToPdf メソッドを使用して、HTMLファイルを簡単にPDFドキュメントに変換できます。

PDFへのURL:

さて、URLをPDFに変換する際、iText7がIronPDFとどのように比較されるかを見ていく時です。 これについては、公平な比較を行うため、前と同じ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
$vbLabelText   $csharpLabel

出力PDF

Itextsharp 7 related to PDFへのURL:

iText7 URLをPDF出力

ここに示されているように、iText7のURLからPDFへの変換アプローチはより手動で複雑です。 まず、URLからHTMLコンテンツをダウンロードし、その後HTML to PDFの例に見られるような同様の手順に従って、URLコンテンツをPDFドキュメントにレンダリングし、保存する必要があります。 出力画像でわかるように、iText7は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;

public partial 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);
            X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());

            // Convert BouncyCastle certificate to iText certificate
            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;

public partial 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);
            X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());

            // Convert BouncyCastle certificate to iText certificate
            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

Partial 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

'INSTANT VB WARNING: Nullable reference types have no equivalent in VB:
'ORIGINAL LINE: string? alias = null;
			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])
			Dim cert As New X509Certificate2(chain(0).Certificate.GetEncoded())

			' Convert BouncyCastle certificate to iText certificate
			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
$vbLabelText   $csharpLabel

出力PDF

Itextsharp 8 related to PDF署名:

iText7 デジタル署名出力

ご覧のとおり、iText7はPDFドキュメントのデジタル署名が可能ですが、プロセスはIronPDFよりもずっと複雑になりがちです。 このコードは PFX 証明書を読み込み、それを使用して PDF にデジタル署名します。 それは秘密鍵と証明書を抽出し、署名者を設定してPDFに分離署名を追加し、署名されたドキュメントを保存します。

競合分析

パフォーマンスとユーザビリティ

IronPDFの主な利点:

IronPDFは、その使いやすさと高性能化の最適化で知られており、HTMLからPDFへの変換などの一般的なタスクを簡素化するよりシンプルなAPIを提供しています。 それは、高度なPDF処理タスクを抽象化する高レベルのメソッドを提供し、開発者が最小限のコードでPDFを生成、編集、操作できるようにします。 マルチスレッドまたは大規模なドキュメント処理のために、IronPDFは並列実行をサポートしています。

  • 使いやすいAPI – 高レベルメソッドがHTMLからPDFへの変換などの一般的なタスクを簡素化します。
  • 最小限のセットアップが必要 – .NETプロジェクトに簡単に統合されます。
  • 組み込みの並列実行 – 大量のPDF生成と変換を処理するように最適化されています。
  • 簡略化されたAPI – 結果を達成するために必要なコード行数が少なくなります。

iText 7 - 強力だが複雑

一方、iText 7は、より詳細で細かなレベルのコントロールを提供しており、広範囲なカスタマイズを必要とする開発者にとって有用です。 これは低レベルのPDF操作を扱うための堅牢なAPIを提供します。しかし、その複雑さから、iText 7はIronPDFと比べて同様の結果を達成するためにより多くのコードを必要とすることがよくあります。

  • 細粒度のPDF制御 – 厳格なコンプライアンスが必要なエンタープライズアプリケーションに最適(例:PDF/A、PDF/UA、電子署名)。
  • 非常にカスタマイズ可能 - 高度な使用ケースに対応した低レベルのPDF操作を提供。
  • 学習曲線が急である – IronPDFと比べて、より多くのセットアップと設定が必要です。
  • よりコード集約的 – 一般的な作業ではしばしばより長い実装が必要です。

ライセンスとコスト

.NETプロジェクトのためにPDFライブラリを選択する際、ライセンスとコストの考慮事項は重要です。 IronPDFiText 7はそれぞれ異なるライセンスモデルを採用しており、適切なものを選択するにはプロジェクトの要件、予算、コンプライアンスのニーズに依存します。

IronPDFのライセンスとコスト

IronPDFは商用ライセンシングモデルに従っており、商用ライセンスの無料トライアルを提供し、開発と評価には無料ですが、完全な本番使用には有料ライセンスが必要です。料金は透明で、使用規模、開発者の数、プロジェクトの種類などの要因によって決まります。

🔹 IronPDF ライセンス:

  • 商用ライセンスモデル(オープンソースの制限なし)。
  • シンプルな価格設定開発者またはチームライセンスに基づく。
  • HTMLからPDFへの変換、PDFセキュリティ、その他の基本機能に追加費用はかかりません
  • シンプルでコスト効果の高いPDFソリューションを必要とするビジネスに最適

    📌 結論: IronPDF は、すべての主要な機能を単一ライセンスに含んでおり、チームや企業にとってコスト効率の高い選択肢です。

iText7のライセンスとコスト

iText7はデュアルライセンスモデルの下で動作し、これには以下が含まれます:

  1. AGPL(GNU Affero General Public License) – オープンソースプロジェクトには無料ですが、iText7を使用するプロジェクト全体がオープンソースであり、AGPLに準拠している必要があります。 これは、プロジェクトに加えられた変更や追加はすべて公開されなければならないことを意味します。

  2. 商用ライセンス – ソースコードを開示したくない独自のソフトウェアや商用アプリケーションに必要です。 価格構造は、使用状況、サポートレベル、および展開規模に基づいて異なります。

    独自のソフトウェアにiText 7を統合しようとする企業には、商用ライセンスが必須です。 コストは特にエンタープライズレベルのソリューションにおいては開発者ごとのスケールで価格設定されているため、かなりのものになる可能性がありますが、それによりプロフェッショナルなサポートへのアクセスが提供され、法的コンプライアンスが保証されます。

    🔹 iText 7がより高価になる理由:

    • 開発者単位の価格設定 – 各開発者が個別のライセンスを必要とするため、チーム全体のコストが増加します。
    • 重要な機能には高価なアドオンが必要です

    • pdfHTML(有料)– HTML-to-PDF変換に必要です。

    • pdfOCR(有料)– 画像からのテキスト認識に必要です。

    • pdfCalligraph (有料) – テキストレンダリングとフォントサポートを改善します。

    • pdfRender(有料)– PDFから画像への変換を追加します。
    • pdf2Data(有料)– PDFから構造化データを抽出します。
    • エンタープライズのコストはすぐに増加します 複数の機能や開発者が必要な場合。

    📌 結論: チームが複数の開発者とHTML-to-PDFやOCRのような主要機能を必要とする場合、iText 7はIronPDFよりもはるかに高価になる可能性があります。IronPDFはこれらの機能を追加費用なしで提供します。

ユースケースシナリオ

小規模プロジェクト vs. エンタープライズプロジェクト

小規模から中規模のプロジェクトで、最小限の設定でPDF機能を迅速に実装する必要がある場合は、IronPDFは使いやすいAPIと包括的な機能セットを備えているため、魅力的な選択肢です。 エンタープライズレベルのプロジェクトで、特定のPDF標準への広範なカスタマイズと遵守が求められる場合、iText7の高度な機能が有益かもしれませんが、IronPDFも、高パフォーマンス、ライセンスオプション、および使いやすさにより、このレベルの作業に適した強力な候補であることが証明されています。

学術利用および商業利用

学術環境やオープンソースプロジェクトでは、iText 7のAGPLライセンスはプロジェクトのライセンスが互換性を備えている限り、無料で使用することができます。 商用アプリケーションの場合、IronPDFとiText 7の両方に商用ライセンスの購入が必要です。 各ライブラリのライセンス条件を確認し、プロジェクトの目的に適合することを確認することをお勧めします。

結論

.NETプロジェクトに適したPDFライブラリを選ぶことは、使いやすさ、機能セット、ライセンスのニーズといった要因に依存する重要な決定です。 IronPDF と iText 7 の両方が強力な PDF 機能を提供しますが、それぞれ異なる要件に対応しています。 これらの2つのライブラリを超えて、Aspose、Syncfusion、およびPDFSharpのような競合他社も競争力のある.NET PDFライブラリを提供しています。 しかしながら、IronPDFはその使いやすいAPI、包括的な機能セット、そしてコスト効率の高さでPDF業界を常にリードしています。

以下に、IronPDFがすべての.NET PDFライブラリのニーズに対して優れた選択肢である理由についての説得力のある議論をまとめました。

IronPDF vs iText7 比較概要

IronPDF 対 iText7 比較サマリー

IronPDFの利点

  • 使いやすさ: IronPDFはシンプルさを重視して設計されており、迅速にPDF機能を.NETアプリケーションに統合する必要がある開発者にとって理想的な選択です。 その直感的なAPIは学習曲線を緩和し、開発時間を短縮します。
  • 包括的なドキュメントとサポート: IronPDFは、詳細なドキュメントと対応の迅速なカスタマーサポートを提供しており、開発者が迅速に習得し、問題を効果的に解決できるようにしています。
  • シームレスなHTMLからPDFへの変換: IronPDFは、CSSやJavaScriptを含むHTMLを高品質なPDFに変換することに優れています。 これは、ウェブベースのコンテンツから動的にPDFを生成する必要があるプロジェクトに特に有益です。
  • 商用ライセンス: 商用アプリケーション向けに、IronPDFは柔軟なライセンスオプションを提供し、オープンソースライセンスに伴う制限なしに遵守を保証します。

iTextの制限

  • 複雑さ: iText 7は高度な機能とカスタマイズ性を提供しますが、PDF操作に不慣れな開発者にとっては、そのAPIが複雑である可能性があります。 これは一般的なタスクの開発時間が、IronPDFのより簡潔なアプローチと比べて長くなる可能性があります。
  • 商業利用のライセンス費用: iText 7のAGPLライセンスは、商業ライセンスを購入しない限り、派生作品をオープンソース化することを要求します。 これは、AGPL条項に従えない専有アプリケーションにとって制限となる可能性があります。
  • Java中心の機能: iText 7は.NETでも利用可能ですが、そのJavaエコシステムでの起源は、特にクロスプラットフォームの問題やJavaベースのツールとの統合に取り組む際に、C#の開発者にとってネイティブではないと感じることがあります。

結論

プロジェクトで、特にウェブコンテンツからの迅速なPDF生成が必要で、使いやすいソリューションを探している場合、IronPDFが最適な選択肢である可能性があります。しかし、アプリケーションに高度なPDF操作やPDF標準への厳密な準拠が求められ、大幅なカスタマイズの柔軟性が必要な場合は、iText7がより適しているかもしれません。 プロジェクトの特定の要件とライセンシング制約を考慮して、ニーズに最適なライブラリを決定してください。

🎯 IronPDFを試してみましょう: IronPDFの強力な機能を自分自身で探索するために無料トライアルをダウンロードしましょう!

今日から無料トライアルでIronPDFをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
IronPDFとEvoPdfの比較
次へ >
HTMLからPDFへのSyncfusion PDFビューア比較