製品比較

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

ジョルディ・バルディア
ジョルディ・バルディア
2025年2月19日
共有:

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

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

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

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

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

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から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フォームを作成および編集します。

    📌 最適な対象: 高度にカスタマイズ可能な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 インスタンスを作成しています。これにより、HTMLをPDFにレンダリングするためにIronPDFが使用する強力なレンダリングエンジンにアクセスできます。 次に、HTMLファイルを RenderHtmlFileAsPdf に渡します。()PdfDocumentオブジェクトに格納されたPDFにHTMLをレンダリングする` method。 最後に、PDFを指定されたファイルの場所に保存します。

URLをPDFに変換

URLコンテンツをPDFに変換したい開発者向けに、IronPDFをご利用ください。 このライブラリを使用すると、ChromePdfRenderer レンダリングエンジンを使用してピクセル単位の正確な PDF ドキュメントを作成でき、レンダリング時にすべての元のスタイルとレイアウトを保持します。URLを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に変換

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

HTMLからPDFへの例と同様に、IronPDFを使用して任意のURLをPDFに変換する最初のステップは、新しいChromePdfRendererインスタンスを最初に作成することです。 メソッドがURLコンテンツをPDF形式にレンダリングし終えたら、RenderUrlAsPdfを使用して結果の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画像を作成し、PDFドキュメント自体の署名を処理する新しいPdfSignatureオブジェクトを作成しました。 最後に、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から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 vs 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

ジョルディ・バルディア
ソフトウェアエンジニア
ジョルディは、Iron Softwareでのスキルを活かしていないときには、ゲームプログラミングをしており、Python、C#、C++に最も堪能です。彼は製品テスト、製品開発、研究の責任を共有しており、継続的な製品改善に大きな価値をもたらしています。この多様な経験は彼を常に挑戦的で魅力的に保ち、彼はIron Softwareで働く一番好きな側面の一つだと言っています。ジョルディはフロリダ州マイアミで育ち、フロリダ大学でコンピューターサイエンスと統計学を学びました。
< 以前
IronPDFとEvoPdfの比較
次へ >
HTMLからPDFへのSyncfusion PDFビューア比較