フッターコンテンツにスキップ
製品比較

Byte ArrayからC# iTextSharpでPDFを作成(対 IronPDF)

現代の.NETアプリケーションでは、PDFファイルの作成と管理は一般的な要件です。たとえばレポート、請求書、またはデジタル記録を生成する場合などです。 Developers often turn to third-party PDF libraries for this task, and two of the most popular options in the .NET ecosystem are IronPDF and iText 7 (the successor to iTextSharp).

それぞれのライブラリは、さまざまな使用例に強力なツールセットを提供します。 [バイト配列](https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/dd831853(v=vs.120)からC#でPDFを生成するのに最適なのはどれでしょうか? この記事では、比較、コード例、.NET開発者が正しい選択をするための洞察を提供します。

企業向けアプリケーションや小規模な内部ツールを構築する際に適切なPDFライブラリの選択は、開発時間の節約や堅牢な出力の保証に役立ちます。 各ライブラリが提供するものを探りましょう。

PDFライブラリの紹介

PDFライブラリは何のために使用されるのですか?

C#のPDFライブラリを使用すると、開発者はPDFファイルをプログラム的に生成、操作、読み取ることができます。 さまざまな使用例を持ちます、例えば:

  • レポートや請求書のエクスポート
  • ウェブフォームから動的コンテンツを生成
  • HTMLページやテンプレートをPDFに変換
  • ページ番号、チャート、画像などの視覚要素をPDFファイルに追加
  • 文書の結合や分割
  • PDFのデジタル署名

また、データの携帯性やPDF/Aなどの標準のアーカイブまたはアクセシビリティ要件に準拠する上で重要な役割を果たします。

iTextSharpとIronPDF: 主要候補

使用可能な.NET PDFライブラリの中で、iTextSharpIronPDFはそれぞれ独自の強みを持つ主要なソリューションとして浮上しています:

  • iTextSharpはJavaのiTextに基づく成熟したオープンソースライブラリで、急な学習曲線とライセンスの条件がありますが、堅牢なPDF制御を提供します。
  • IronPDFは、モダンな商用ライブラリで、シンプルさ、スピード、およびウェブ統合に焦点を当てており、HTMLやASP.NETビューを直接PDFファイルに変換できます。

適切なライブラリ選択が重要な理由

2つのライブラリの選択は単なる好みの問題ではありません。それは生産性、保守性、パフォーマンス、さらには法的なライセンス遵守にまで影響を与えます。 迅速な展開、頻繁なフォーマット変更、またはHTMLテンプレートからのPDFレンダリングを求めるプロジェクトは、迅速な開発の恩恵を受け、企業レベルのアプリケーションは標準の遵守と長期の維持可能性を優先するかもしれません。

機能比較

iText 7 for .NET(iTextSharpの後継)

iText 7iTextSharpの正式な後継で、完全に再設計されたアーキテクチャを提供します。 これは、法的、金融、政府のようなコンプライアンス重視の業界でPDFを作成、編集、および検証するための強力で拡張可能なライブラリです。 iText 7スイートは、PDF/A、PDF/UA、デジタル署名、墨消し、およびフォーム作成のサポートを含みます。

まだAGPLライセンスのオープンソースですが、商用プロジェクトには商用ライセンスが利用可能です。

iText 7の主な特徴

  • 現代的なAPIで、古い構造を持つiTextSharpを置き換える
  • モジュラーサポート: HTML to PDF、PDF/A、フォーム、墨消し、デジタル署名
  • 企業向けアプリケーションのための高性能
  • PDF/A、アクセシビリティ、コンプライアンスに最適

ご注意コアPDF操作のためにitext7を使用する必要があり、html2pdfといったオプションのアドオンを個別に含めることができます。

インストール (NuGet)

iText 7のPDF生成用コアパッケージをダウンロードするには:

Install-Package itext7

NuGet パッケージ マネージャーコンソール経由でiText 7をインストール

iText 7は、ソリューション画面のパッケージマネージャを介してインストールすることもできます。 これを行うには、まずツールドロップダウンメニューを開き、「NuGet パッケージ マネージャ > ソリューションの NuGet パッケージを管理」を見つけます。

Visual Studioのツールドロップダウンメニュー

その後、「iText 7」を検索し、「インストール」をクリックするだけです。

iText 7 NuGet パッケージページ

コード例:バイト配列を使用してiText 7でPDFドキュメントを作成

using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIText7()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIText7() As Byte()
		Using ms = New MemoryStream()
			Dim writer = New PdfWriter(ms)
			Dim pdf = New iText.Kernel.Pdf.PdfDocument(writer)
			Dim doc = New Document(pdf)

			doc.Add(New Paragraph("Hello from iText 7 for .NET!"))

			doc.Close() ' Always close the document to finalize content
			Return ms.ToArray()
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

PDFファイルの出力

iText 7 PDF出力

説明

  • PdfWriterは、コンテンツをMemoryStreamに書き込みます。
  • PdfDocumentは、PDFの内部構造を管理します。
  • Documentは、高レベルのコンテンツ(テキスト、画像、テーブル)を追加するために使用されます。
  • doc.Close()を呼び出した後、PDFコンテンツは完全に書き込まれ、バイト配列として返される準備が整います。

この例は、iTextSharpと比較してiText 7の<強力でモジュラーかつ読みやすいAPI>を示しています。ただし、pdfhtmlを含めない限り、HTML/CSSのレンダリングにネイティブサポートがない点が欠点です。

iText 7の利点と欠点

利点:

  • 包括的なPDF制御\ iText 7は、テーブル、フォーム、デジタル署名などのPDF要素を完全に制御します。 これにより、PDF/AやPDF/UAなどの特定のPDF標準を必要とするコンプライアンス重視のアプリケーションに最適です。

  • モジュラーかつスケーラブル\ iText 7はモジュラー設計を採用しており、必要な特定のモジュールのみをインストールできます(例: HTMLからPDFへの変換のためのpdfhtml)。 これにより、すべての機能を使用しない場合は、軽量な実装が可能になります。

  • 複雑なPDF規格をサポート\ iText 7は、ISO規格であるPDF/A(アーカイブ)、PDF/UA(アクセシビリティ)、PDF/X(印刷)をサポートしており、コンプライアンスが重要なプロフェッショナルおよび法的環境に適しています。

  • 豊富なドキュメントとサポート\ iText 7は、包括的なドキュメントと大規模なコミュニティを持っています。 また、会社はプロフェッショナルサポートを提供しており、開発者が必要なときに支援を受けられます。

  • 無料版利用可能(AGPL)\ 開発者は、iText 7をAGPLライセンスの下で無料で使用でき、オープンソースプロジェクトや個人的な使用に最適です。

欠点:

  • 商用利用のためのAGPLライセンス\ iText 7は無料版を提供していますが、商用利用者はAGPLライセンスに従わなければならず、iText 7を使用したソフトウェアのソースコードを公開するか、商用ライセンスを購入する必要があります。

  • 急な学習曲線\ iText 7のAPIは、より複雑かつ機能豊富であるため、IronPDFのようなシンプルなライブラリに比べて学習曲線が急です。 開発者は、その低レベルの文書構造とモジュール基盤のアーキテクチャを習得する必要があります。

  • 単純なタスクには過剰\ iText 7は、IronPDFのようにプロセスを簡素化するライブラリと比較して、単純な文書作成や基本的なHTMLからPDFへの変換など、基本的なPDFタスクには煩雑に感じるかもしれません。

  • HTMLからPDFへの変換には外部モジュールが必要\ iText 7のHTMLからPDFへの変換は、追加のpdfhtmlモジュールを通じてのみ利用可能であり、別途インストールが必要で、IronPDFほどスムーズに現代のウェブコンテンツを処理できない可能性があります。

IronPDF for .NET: 強力なPDFライブラリ

IronPDFは、開発者の生産性に焦点を当てたPDF文書生成を簡素化するために設計された高レベルの.NETライブラリです。 特にHTMLコンテンツとスタイリングのレンダリングに効果的であり、モダンなウェブからPDFへのワークフローに最適です。

主な特徴:

  • バイト配列からPDFファイルを作成し、Adobe ReaderをインストールせずにPDF文書を操作
  • 完全なChromiumエンジンを使用した直接的なHTMLからPDFへのレンダリングでHTMLコンテンツからPDF文書を作成
  • MVCビュー、Razorページ、ローカルおよびリモートURLで動作
  • 画像ファイル、JavaScript、CSS、およびレスポンシブレイアウトをアウトオブザボックスでサポート
  • 簡単に使用できる構文と最小限のセットアップ
  • 永続的なライセンスとAGPL制約なし

IronPDFのインストール

IronPDFもまた、NuGetを介してインストール可能で、NuGet パッケージ マネージャーコンソールで次のコマンドを実行してインストールします:

Install-Package IronPdf

パッケージ マネージャーコンソール経由でIronPDFをインストール

または、NuGetパッケージマネージャでソリューション画面からインストールすることができます。 これを行うには、「ツール > NuGetパッケージマネージャ > ソリューションのNuGetパッケージを管理」へ移動します。

Visual Studioのツールメニューのドロップダウン

その後、「IronPDF」を検索し、「インストール」をクリックします。

IronPDF NuGet パッケージ管理画面

インストール後、フルHTMLページのPDFへのレンダリングを数秒で開始できます—追加のモジュールは必要ありません。 モダンなCSS、JavaScript、インタラクティブなウェブコンテンツを追加設定なしでサポートします。

コード例:バイト配列でIronPDFを使用してPDFドキュメントを作成

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIronPdf()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		Dim pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>")
		Return pdfDoc.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

PDFファイルの出力

IronPDF出力

説明

  • using IronPdfステートメントは、すべてのPDF関連クラスへアクセスするためにIronPDFライブラリをインポートします。
  • var renderer = new ChromePdfRenderer()は、ヘッドレスChromiumエンジンによる新しいHTMLからPDFレンダラーを作成します。
  • renderer.RenderHtmlAsPdf(...)は、指定されたHTML文字列をPDF文書に変換します。 また、ファイルパスやURLを渡すこともできます。
  • pdfDoc.BinaryDataは、保存、ストリーミング、またはデータベース保存のために、最終的なPDFをバイト配列として返します。

IronPDFの利点と欠点

利点:

  • 簡単なHTMLからPDFへのレンダリング\ 完全なスタイリングでHTML、CSS、JavaScriptコンテンツをまっすぐにPDFにレンダリング、複雑なレイアウトコードや追加モジュールは不要です。

  • クイックスタートと直感的なAPI\ クリーンな構文と完全な.NET Coreおよび.NET Frameworkの互換性を持ち、わずか数行のコードでフルスタイルのPDFファイルを作成します。

  • ウェブテクノロジーの包括的なサポート\ IronPDFは、JavaScript、モダンCSS、SVG、メディアクエリをサポートしており、Chromiumのようなヘッドレスブラウザを内部で使用しなければ多くのライブラリが苦しむ領域をカバーしています。

  • ビルトインの画像とアセット処理\ 追加設定なしで、画像、ローカルファイル、さらにはリモートURLからアセットを簡単に含むことができます。

  • 永続ライセンスとAGPLなし\ iText 7とは異なり、IronPDFは、オープンソースのAGPL義務の制約なしで商用ライセンスを柔軟に提供します。

  • MVCとRazorビューのために優秀\ ASP.NETアプリケーションで.cshmtl Razor Viewsをシームレスに印刷可能なPDFに変換します。

欠点:

商用利用にはライセンスが必要\ 無料トライアルがありますが、IronPDFはオープンソースではありません。 予算の厳しいプロジェクトはライセンスコストを評価する必要があります。

  • 初期パッケージサイズが大きい\ ヘッドレスChromiumエンジンをバンドルしているため、NuGetパッケージは一部の代替品よりも重いです。

実用的なコード例の比較

このセクションの以下のコード例は、これらのライブラリの実際の使用を示しています。それにより、IronPDFとiText 7を同じタスクで比較します。 両方のライブラリは、URLからPDFの生成、画像をPDFとしてレンダリング、スタイル付きHTMLをPDFに変換するという同じシナリオで評価されますが、その過程でPDFコンテンツの扱いにはバイト配列が使用されます。 これは開発者が各ライブラリがこれら共通の使用例にどのようにアプローチするかを評価することを可能にします。

1. バイト配列を使用してURLからシンプルなPDFを生成

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfFromUrlWithIronPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfFromUrlWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		renderer.RenderingOptions.EnableJavaScript = True
		renderer.RenderingOptions.WaitForJavaScript(5000)
		renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

		Dim pdf = renderer.RenderUrlAsPdf("https://www.apple.com")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

出力PDF

URLからPDFへのIronPDF出力

IronPDFは、完全なJavaScriptとCSSのサポートを備えたウェブページのためのピクセルパーフェクトレンダリングをヘッドレスChromiumエンジンを使用して提供します。

iText 7

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports System.Net.Http
Imports System.Threading.Tasks
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = Await pdfGenerator.GeneratePdfFromUrlWithIText7Async()

		' Save the PDF to a file
		File.WriteAllBytes("itext7-from-url.pdf", pdfBytes)
	End Function
End Class

Friend Class PdfGenerator
	Public Async Function GeneratePdfFromUrlWithIText7Async() As Task(Of Byte())
		Dim httpClient As New HttpClient()
		Dim html As String = Await httpClient.GetStringAsync("https://www.apple.com")

		Dim stream = New MemoryStream()
		HtmlConverter.ConvertToPdf(html, stream)
		Return stream.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

出力

iText 7 URLからPDFへの出力

iText 7は、HttpClientを使用して生のHTMLをフェッチし、HtmlConverterを使用してレンダリングしますが、JavaScriptの実行をサポートしていません(iTextの公式ドキュメントで、JavaScriptの事前処理にSeleniumや同様のブラウザオートメーションの使用を推奨しているため確認済み)で、CSSスタイリングが制限されています。 iText7は、バージョン7.1.15(2021年)で部分的なflexboxサポートを追加しましたが、多くのCSS3プロパティは、特に複雑なモダンレイアウトにおいて未サポートのままです。

2. バイト配列を使用して画像から新しいPDFファイルを作成

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim pdf = ImageToPdfConverter.ImageToPdf("example.png")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

出力

IronPDF image to PDF output

IronPDFのImageToPdfConverterツールを使用した、簡単な画像からPDFの生成。 これにより、PNGファイルやJPGなどの画像から簡単にPDFファイルを作成できます。

iText 7

using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.IO.Image
Imports iText.Layout.Element
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("iText-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim ms = New MemoryStream()
		Dim writer = New PdfWriter(ms)
		Dim pdfDoc = New iText.Kernel.Pdf.PdfDocument(writer)
		Dim document As New Document(pdfDoc)

		Dim img = New Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"))
		document.Add(img)
		document.Close()

		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

出力

iText 7 PDF with image output

ImageDataFactoryを使用した文書レイアウトの手動作成と明示的な画像挿入。

3. スタイル付きHTMLコンテンツをバイト配列でPDFに変換

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>"

		Dim pdf = (New ChromePdfRenderer()).RenderHtmlAsPdf(html)
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

出力

IronPDF スタイル付きHTMLからPDFへの出力

IronPDFはそのChromiumエンジンのおかげで、タグや外部スタイルシート内のCSSを完全にサポートしています。

iText 7 + pdfHTML

using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the new document to the specified file location
		File.WriteAllBytes("iText-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>"

		Dim ms = New MemoryStream()
		Dim properties As New ConverterProperties()
		HtmlConverter.ConvertToPdf(New MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties)
		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

出力

iText 7 スタイル付きHTMLからPDFへの出力

HTML変換タスクを処理するためには有料のアドオンであるpdfHTMLのインストールが必要です。

比較概要

機能 IronPDF iText 7 (pdfHTML付き)
URLをPDFにレンダリング 完全なChromiumレンダリング HTMLをフェッチし、ネイティブJSのサポートなし
画像を追加 HTML経由で埋め込むか専用の画像スタンプツールで 手動の画像ファクトリ
スタイル付きHTMLをレンダリング 完全なCSSサポート CSSサポートはpdfHTMLを通してのみ
バイト配列として返却 はい はい
セットアップの複雑さ 簡単 中度(手動レイアウト)
出力品質 ピクセルパーフェクト 良好だが静的

結論:どの.NETライブラリを選択すべきか?

Choosing between IronPDF and iText 7 depends on your project’s needs — but when it comes to developer experience, ease of use, and modern rendering accuracy, IronPDF clearly stands out.

If you're working with dynamic HTML content, web rendering, or need to create PDF files from URLs with full JavaScript and CSS support, IronPDF's Chromium-based engine delivers unmatched fidelity. その直感的なAPIと迅速なセットアップにより、特にバイト配列、ファイルストリーム、あるいはウェブベースのPDF生成での実際の生産環境を前提とした迅速な開発と実際のプロダクション使用に最適です。

一方、iText 7は、ドキュメントの構造を細かに制御し、細かい操作を必要とする開発者に最適な、強力で高評価のライブラリです。ただし、学習曲線が急で、現代的なHTMLレンダリング機能が不足しています。 結論:

IronPDFを選んでください。 * 低レベルのPDF作成ツールが必要で詳細な制御が可能ですか? iText 7がお勧めです。 >> IronPDFを始める準備はできましたか?\

無料トライアルをダウンロードして、C#で数行のコードでプロフェッショナルでバイト配列ベースのPDFを簡単に作成する方法を確認してください。

ご注意iText 7はその所有者の登録商標です。

このサイトはiText 7と提携、承認、または後援されていません。すべての製品名、ロゴ、およびブランドはそれぞれの所有者の財産です。} This site is not affiliated with, endorsed by, or sponsored by iText 7. All product names, logos, and brands are property of their respective owners. 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

C#でバイト配列をPDFに変換するにはどうすればよいですか?

IronPDFを使用して、C#でバイト配列をPDFに変換できます。`PdfDocument.FromBytes`メソッドを使用してバイト配列をIronPDFドキュメントに読み込むだけで、データを解析してPDFドキュメントを生成します。

HTMLからPDFへの変換にIronPDFを使用する利点は何ですか?

IronPDFは最新のCSSとJavaScriptをサポートするヘッドレスChromiumエンジンを使用しているため、HTMLからPDFに変換する際に優れています。これにより、動的なウェブコンテンツをピクセルパーフェクトなPDFドキュメントにレンダリングするのに最適です。

PDF生成のためにIronPDFをiText 7より優先する主な利点は何ですか?

IronPDFはHTMLをPDFに変換するためのシンプルなAPIと迅速なセットアップを提供し、CSSとJavaScriptをフルサポートします。特に迅速な開発とウェブコンテンツ統合を必要とするアプリケーションに適しています。

iText 7はPDFの準拠をどのように扱っていますか?

iText 7はPDF/A、PDF/UA、およびPDF/Xなどの標準をサポートする準拠に厳しい業界向けに設計されており、PDF作成に対して強力な制御を提供するため、準拠が非常に重要なアプリケーションに適しています。

.NETプロジェクトにIronPDFをインストールする手順は何ですか?

IronPDFをインストールするには、Visual StudioでNuGetパッケージマネージャーを使用できます。パッケージマネージャーコンソールで`Install-Package IronPdf`コマンドを実行して、プロジェクトに追加します。

IronPDFはASP.NETのビューからPDFを作成できますか?

はい、IronPDFはASP.NETのビューを直接PDFドキュメントにレンダリングできます。この機能により、開発者は複雑なレイアウトとスタイルを持つウェブページを簡単にPDFに変換できます。

どのような種類のアプリケーションがIronPDFの使用から最も恩恵を受けますか?

レポートや請求書のような動的ウェブコンテンツをPDFに変換する必要があるアプリケーションは、IronPDFの使用から最も恩恵を受けます。迅速なセットアップとウェブ技術サポートにより、頻繁な更新やモダンなデザインを必要とするプロジェクトに最適です。

iText 7のモジュラーアーキテクチャはその利用にどのように影響しますか?

iText 7のモジュラーアーキテクチャにより、HTML変換やデジタル署名のような特定のPDF機能を必要に応じて追加できます。これにより柔軟性が提供されますが、各モジュールに対する追加の学習やインストールが必要になることがあります。

IronPDFとiText 7のライセンスの違いは何ですか?

IronPDFはAGPLの制約なしで商用アプリケーションに適した永続的なライセンスを提供します。一方、iText 7はオープンソースプロジェクト向けにAGPLライセンスで提供されており、商用利用には有料ライセンスが必要です。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。