製品比較

レポート .NET と IronPDF の比較

チペゴ
チペゴ・カリンダ
2024年4月29日
共有:

この記事では、PDFファイルを扱うために使用される二つの人気があるC#ライブラリを詳しく見ていきます:IronPDF - C#開発者のための.NET PDFライブラリReport.NET。 これらのツールは、C#アプリケーションを通じてPDFドキュメントを作成、修正、または操作する必要がある開発者にとって不可欠です。 両方のライブラリはPDFの取り扱いをより簡単かつ効率的にするためのさまざまな機能を提供しますが、それぞれ異なる方法で実現します。

IronPDFとReport.NETを使用すると、開発者は動的にドキュメントを生成し、コンテンツを編集し、PDFからテキストや画像を取得することができます。 また、フォーム処理、デジタル署名の追加、アプリケーションがプラットフォーム間でPDFを扱う際に文書の完全性を損なわないようにすることもサポートしています。 これにより、デバイスやオペレーティングシステムに関係なく、PDFは意図した通りに表示され、機能することが保証されます。

この比較を通して、各ライブラリが提供する具体的な機能、それらの動作方法、使用例を示すコードスニペット、およびライセンス条件について詳しく解説します。 この比較は、各ライブラリの機能を開発者に明確に理解してもらい、プロジェクトの要件に最適なものを選択する際の助けとなることを目的としています。 IronPDFReport.NETの機能と違いを分解し、開発者にとってのシンプルさと実用的な洞察に焦点を当てましょう。

1. Report.NET C# ライブラリ

Report.NETは、開発者が.NETアプリケーション内で直接PDFドキュメントを作成、管理、および操作するのを支援するために設計された堅牢なC#ライブラリです。 このツールは、PDFの生成および操作における簡潔なアプローチで知られており、ゼロから複雑なPDF文書を作成したり、既存のPDFを修正したりすることができます。 その機能は単純なテキストの追加から画像や図形の組み込みまで幅広く、プロジェクトにPDF機能を実装しようとする開発者にとって多用途な選択肢となります。

レポート.NETの主要機能 1.1

ドキュメントの作成および編集

Report.NETは、新しいPDFドキュメントの作成および既存のドキュメントの編集において優れています。 開発者は、テキスト、画像、およびグラフィックスを簡単に追加でき、詳細で視覚的に魅力的なドキュメントを作成することができます。

コンテンツ管理における柔軟性

このライブラリは、テキストの書式設定、画像の配置、グラフィック要素など、ドキュメントの内容を正確に制御することができます。 このレベルのコントロールにより、最終的なPDFが意図どおりの外観になります。

1.1.3 使いやすさ

シンプルさに重点を置いて、Report.NETはPDF生成プロセスを簡素化し、プログラミングの文脈でPDFを扱うことに不慣れな人々でもアクセス可能にしています。

1.1.4 プラットフォーム間の互換性

Report.NETは、.NET Coreを含む.NETプラットフォーム全体でシームレスに動作するように設計されており、アプリケーションがオペレーティングシステムに関係なくPDFを生成および管理できるようにします。

1.1.5 カスタマイズとスタイリング

このライブラリはPDFドキュメントの広範なカスタマイズオプションを提供しており、開発者がレイアウト、スタイル、全体的な外観を調整して、特定のニーズに合わせることができます。

1.1.6 オープンソース

オープンソースツールとして、Report.NETはコミュニティからの貢献を受けているため、常に最新の状態が保たれ、新しい機能も追加され続けます。このコミュニティのサポートにより、開発者は豊富な知識とリソースにアクセスできることを意味します。

2. IronPDF C# ライブラリ

IronPDF は、.NET アプリケーション内で PDF ドキュメントの作成、操作、およびレンダリングを容易にするために作成された包括的な .NET ライブラリです。 このツールは、HTMLからのPDF生成と既存のPDFファイルの直接編集の両方を処理できる点で際立っています。 レポートの作成に非常に役立ちます。 IronPDFは、SQL Server Reporting Servicesともスムーズに統合されます。 IronPDFを使用して、レポート作成ツールとレポートビューアを作成するエンドユーザーレポートデザイナーを作成できます。

IronPDFの主な特徴

2.1.1 HTMLからPDFへの変換

IronPDFの主な強みの一つは、HTMLおよびCSSをPDFドキュメントに変換できる能力です。 この機能は、元のデザインとレイアウトを保持しながらウェブコンテンツをポータブルな形式に変換しようとしている開発者にとって非常に貴重です。

PDF操作 2.1.2

IronPDFは、開発者にPDFドキュメントを編集および操作するためのツールを提供することに優れています。 これには、ページの追加または削除、テキストの変更、画像の埋め込みが含まれます。 IronPDFを使用してレポートからレポートデータを抽出することもできます。

2.1.3 フォーム処理

このライブラリはPDFフォームの作成と編集をサポートしており、ユーザーがドキュメントと動的に対話できるようにします。 この機能は、アンケートやアプリケーションフォームなど、エンドユーザーからの入力が必要なアプリケーションにとって重要です。

2.1.4 セキュリティ機能

IronPDFを使用すると、暗号化やパスワード保護のようなセキュリティ対策を実装するのは簡単です。 これらの機能により、PDFドキュメント内の機密情報が不正アクセスから安全に保たれます。

2.1.5 印刷とレンダリング

IronPDFは、開発者が画面上での表示と物理印刷の両方のPDFをレンダリングできるようにし、どちらの場合も高品質な出力を保証します。 これにより、さまざまなプレゼンテーションや配布のニーズに合わせてドキュメントを準備することが容易になります。

2.1.6 クロスプラットフォームのサポート

IronPDFは、さまざまな.NETプラットフォームで動作し、.NETコード標準に準拠しており、互換性の問題なく多様な環境での開発を容易にします。

2.1.7 包括的なドキュメントとサポート

IronPDFは、詳細なドキュメントと専用のサポートによってサポートされており、開発者がライブラリの機能を把握し、アプリケーションに効率的に統合するのを支援します。

2.1.8 高度なPDF編集

IronPDFは、多くの高度な編集機能を提供します。 これには、PDF文書を結合および分割する機能が含まれており、大量の情報を整理したり、特定のセクションを抽出して別々に使用するのに特に便利です。

カスタムヘッダーとフッター

このライブラリはPDFドキュメント内のヘッダーのカスタマイズとフッターを可能にします。 この機能は、ページ全体に一貫したブランド、ページ番号、またはドキュメントタイトルを追加するために不可欠であり、出力のプロの外観を向上させます。

3. Visual Studioでコンソールプロジェクトを作成する

Visual Studio IDEでコンソールアプリケーションを作成することは、いくつかのステップで構成される簡単なプロセスです。

3.1 Visual Studio を起動する

Microsoft Visual Studioを開くことから始めます。 インストールされていない場合は、公式Microsoftウェブサイトからダウンロードしてインストールする必要があります。 インストールした後、Visual Studio を起動します。

3.2 新しいプロジェクトを作成する

Visual Studio を開くと、スタートウィンドウが表示されます。 ここで、「新しいプロジェクトを作成」オプションを選択して、新しいコンソールアプリケーションのセットアップを開始します。

レポート.NETとIronPDFの比較: 図1 - Visual Studioを開き、「新しいプロジェクトの作成」オプションをクリックします。

3.3 プロジェクトタイプの選択

「新しいプロジェクトを作成」ウィンドウでは、さまざまなプロジェクトテンプレートが表示されます。 検索ボックスに「console」と入力してオプションをフィルタリングし、リストから「Console App」を選択します。使用したいプログラミング言語に対応するテンプレート(例:C#)を必ず選択してください。

Report .NET と IronPDF の比較: 図2 - 次に、C# プログラミング言語で「Console App」プロジェクトタイプを選択します。

プロジェクトの構成

コンソールアプリテンプレートを選択したら、「次へ」をクリックしてプロジェクト構成画面に進みます。 ここでは、プロジェクトに関する詳細を提供する必要があります。

  • プロジェクト名: プロジェクトの目的を反映した意味のある名前を付けてください。

    • 場所: プロジェクトファイルをコンピューターのどこに保存するか選択してください。

    ![レポート .NET と IronPDF の比較: 図3 - コンソールアプリケーションプロジェクトのプロジェクト名と場所を指定します。 デフォルトではソリューション名はプロジェクト名と同じですが、変更することもできます。

  • ソリューション名: デフォルトではプロジェクト名と同じですが、同じソリューションに複数のプロジェクトを含める予定がある場合は変更できます。

    • フレームワーク: ターゲットにしたい.NET Frameworkのバージョンを選択してください。 迷った場合は、最新バージョンを選んでください。

    ![レポート .NET と IronPDF の比較: 図4 - 選択する .NET Framework のバージョン] 不明な場合は、最新バージョンを選択してください。

プロジェクトの作成

必要な情報をすべて入力した後、「作成」ボタンをクリックしてください。 Visual Studio は、指定に基づいて新しいコンソール アプリケーション プロジェクトを生成します。 このプロセスにはしばらく時間がかかる場合があります。

IronPDFライブラリのインストール

IronPDFの機能をプロジェクトで活用するためには、まずライブラリをインストールする必要があります。これを実現するための方法は複数あり、開発ワークフローや好みに応じて適した方法を選ぶことができます。 以下は、IronPDFライブラリをVisual Studioプロジェクトにインストールするための3つの一般的な方法です。

NuGetパッケージマネージャーを使用してインストール

Visual Studio の NuGet パッケージ マネージャー UI は、パッケージを閲覧、選択、およびインストールするための簡単な方法を提供します。

  1. Visual Studio で、Solution Explorer 内のプロジェクトに移動し、右クリックして「Manage NuGet Packages...」オプションを選択します。

  2. 「ブラウズ」タブをクリックし、検索ボックスに「IronPDF」と入力してください。

  3. 検索結果でIronPDFパッケージを見つけ、それを選択し、「インストール」ボタンをクリックしてください。 Visual Studio は、ダウンロードとインストールを自動的に処理します。

    Report .NET と IronPDF の比較: 図 5 - NuGet パッケージ マネージャーの検索バーで「IronPdf」と検索し、プロジェクトを選択してインストールボタンをクリックして、ソリューションに対して NuGet パッケージの管理を使用して IronPDF をインストールします。

NuGetパッケージマネージャーコンソールを使用してインストールする方法 (バージョン 4.2)

コマンドラインツールを好む方にとって、NuGetパッケージマネージャーコンソールは強力な代替手段です。

  1. コンソールを開く: Visual Studio の「ツール」メニューに進み、「NuGet パッケージ マネージャー」>「パッケージ マネージャー コンソール」に移動します。

    1. インストールコマンド:コンソールで次のコマンドを入力し、Enterキーを押します:
Install-Package IronPdf

このコマンドは、NuGetに最新バージョンのIronPDFをプロジェクトにダウンロードしてインストールするように指示します。

NuGetウェブサイトを使用したインストール 4.3

パッケージを手動でダウンロードしたい場合や特定のバージョンのIronPDFが必要な場合は、NuGetウェブサイトが良い選択肢です。

  1. NuGetのウェブサイトを訪問: nuget.orgにアクセスして、「IronPDF」で検索してください。

  2. パッケージのダウンロードIronPDFページから、必要なバージョンを選択し、.nupkg ファイルをダウンロードしてください。

  3. 手動インストール:ダウンロードが完了したら、パッケージを手動でプロジェクトに追加できます。 Visual Studioでは、「ツール」メニューに移動し、「オプション」 > 「NuGetパッケージマネージャー」 > 「パッケージソース」を選択します。 新しいソースを追加して、.nupkg ファイルをダウンロードしたフォルダーを指示します。最後に、Visual Studioのパッケージ マネージャー UI またはコンソールを使用して、ローカル ソースからパッケージをインストールします。

5. Report.NET ライブラリのインストール

ウェブブラウザを開き、Report.NET GitHubリポジトリ(https://github.com/ritchiecarroll/Report.NET/tree/master)にアクセスしてください。 このページには、Report.NETライブラリの最新バージョンとそのソースコードが含まれています。

ライブラリをダウンロード

リポジトリのページで「Code」ボタンを見つけてクリックしてください。 ドロップダウンメニューから「Download ZIP」を選択して、リポジトリ全体をZIPファイルとしてダウンロードします。このファイルをコンピュータの便利な場所に保存し、内容を展開してください。

プロジェクトにReport.NETを追加する方法 5.2

ZIPファイルを抽出した後、抽出されたファイルの中にReport.NETライブラリのソースコードが見つかります。 Visual StudioプロジェクトでReport.NETを使用するには、次の手順に従ってください。

  1. プロジェクトを開く: Visual Studio を起動し、Report.NET を追加したいプロジェクトを開きます。

    1. ライブラリを手動で追加する:プロジェクトにライブラリを含める方法はいくつかあります:

      • コンパイル済みアセンブリとして: GitHubリポジトリにコンパイルされたDLLファイルが含まれている場合は、このDLLをプロジェクトに参照として追加するだけで済みます。 プロジェクトのソリューションエクスプローラーで「参照」を右クリックし、「参照の追加...」を選択して、DLLファイルを参照して選択します。
    • ソースファイルの含み: ソースコードを直接含めることを好む場合、またはコンパイル済みのDLLが提供されていない場合、プロジェクトにソースコードファイルを追加できます。 ソリューションエクスプローラーでプロジェクトを右クリックし、「追加」 > 「既存の項目...」を選択して、ZIPから抽出したReport.NETのソースコードファイルをナビゲートおよび選択します。
  2. 互換性を確保する: お使いのプロジェクトがReport.NETで必要とされる互換性のある.NET Frameworkバージョンを対象としていることを確認してください。

6. IronPDFとReport.NET C#の高度な機能の比較

6.1 IronPDF C# の高度な機能

IronPDF は、幅広いPDF関連タスクを容易に処理するように設計された高度な機能群を備えています。

6.1.1 HTMLをPDFに変換

IronPDFは、CSSやJavaScriptを含むHTMLコンテンツを取り込み、直接PDFドキュメントにレンダリングすることができます。 これは、ウェブページやHTMLテンプレートがブラウザで表示される通りにPDFに変換できることを意味します。

6.1.1.1 HTML文字列をPDFに変換

IronPDFはHTML文字列からPDFへの直接変換を可能にします。 これは、開発者が文字列変数として保存されたHTMLコードを使用して、IronPDFを使ってPDFファイルにレンダリングできることを意味します。この機能は、アプリケーションによってHTMLコンテンツが動的に生成または変換される場合に特に便利です。

using IronPdf;
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
PDF.SaveAs("HtmlStringToPdf.pdf");
using IronPdf;
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
PDF.SaveAs("HtmlStringToPdf.pdf");
Imports IronPdf
Private Renderer = New IronPdf.HtmlToPdf()
Private PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>")
PDF.SaveAs("HtmlStringToPdf.pdf")
$vbLabelText   $csharpLabel

6.1.1.2 HTMLファイルからPDFへ

同様に、IronPDFは既存のHTMLファイルをPDFドキュメントに変換することができます。 これは、ファイルシステムからHTMLファイルを読み込み、IronPDFを使用して同じ書式と構造を持つPDFドキュメントを作成することで行われます。

using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHTMLFileAsPdf("invoice.html");
PDF.SaveAs("HtmlFileToPdf.pdf");
using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHTMLFileAsPdf("invoice.html");
PDF.SaveAs("HtmlFileToPdf.pdf");
Imports IronPdf
Private Renderer = New ChromePdfRenderer()
Private PDF = Renderer.RenderHTMLFileAsPdf("invoice.html")
PDF.SaveAs("HtmlFileToPdf.pdf")
$vbLabelText   $csharpLabel

Report .NET と IronPDF の比較: 図6 - IronPDF を使用した HTML ファイルから PDF 出力

6.1.1.3 URLからPDFへの変換

IronPDFは、ライブURLからPDFをレンダリングすることも可能です。 これにより、開発者はウェブアドレスを入力でき、IronPDFがそのURLからHTMLコンテンツを取得し、PDFとしてレンダリングします。

using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com");
PDF.SaveAs("UrlToPdf.pdf");
using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com");
PDF.SaveAs("UrlToPdf.pdf");
Imports IronPdf
Private Renderer = New ChromePdfRenderer()
Private PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com")
PDF.SaveAs("UrlToPdf.pdf")
$vbLabelText   $csharpLabel

Report .NET と IronPDF の比較: 図7 - IronPDFを使用したURLからPDFへの変換出力

6.1.2 PDFの編集

IronPDFを使用すると、既存のPDFドキュメントを編集できます。 これには、文章、画像、およびページの追加やページの削除が含まれます。 PDFドキュメントからテキストを検索して置き換えることもできます。

using IronPdf;
var document = PdfDocument.FromFile("original_document.pdf");
const int targetPageIndex = 1;
const string oldString = "Hello, World!";
const string newString = "Greetings, Universe!";
document.ReplaceTextOnPage(targetPageIndex, oldString, newString);
document.SaveAs("modified_document.pdf");
using IronPdf;
var document = PdfDocument.FromFile("original_document.pdf");
const int targetPageIndex = 1;
const string oldString = "Hello, World!";
const string newString = "Greetings, Universe!";
document.ReplaceTextOnPage(targetPageIndex, oldString, newString);
document.SaveAs("modified_document.pdf");
Imports IronPdf
Private document = PdfDocument.FromFile("original_document.pdf")
Private Const targetPageIndex As Integer = 1
Private Const oldString As String = "Hello, World!"
Private Const newString As String = "Greetings, Universe!"
document.ReplaceTextOnPage(targetPageIndex, oldString, newString)
document.SaveAs("modified_document.pdf")
$vbLabelText   $csharpLabel

Report .NET と IronPDF の比較: 図 8 - 出力: IronPDFを使用して既存のPDFを編集

6.1.3 テキストと画像の抽出

このライブラリは、PDFファイルからテキストと画像を抽出できます。Crystal Reports のように、インデックス作成、検索、またはコンテンツの再利用のために使用できます。

PDFフォームの生成

IronPDFはPDFフォームの作成をサポートしています。 開発者はPDF内にプログラムでフォームを作成でき、ユーザーはそれらを記入することができます。

using IronPdf;
using System;
const string alternativeHtmlContent = @"
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>";
var alternativePdfRenderer = new ChromePdfRenderer();
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = true;
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf");
using IronPdf;
using System;
const string alternativeHtmlContent = @"
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>";
var alternativePdfRenderer = new ChromePdfRenderer();
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = true;
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf");
Imports IronPdf
Imports System
Private Const alternativeHtmlContent As String = "
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>"
Private alternativePdfRenderer = New ChromePdfRenderer()
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = True
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf")
$vbLabelText   $csharpLabel

Report .NETとIronPDFの比較: 図9 - 出力PDF: IronPDFを使用したPDFフォームの生成

PDFドキュメントの結合

複数のPDFファイルを1つのドキュメントに結合できます。 この機能は、レポートを統合したり、異なる文書のセクションを結合したりするのに便利です。

using IronPdf;
var firstHtmlContent = @"<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>";
var secondHtmlContent = @"<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>";
var pdfRenderer = new ChromePdfRenderer();
var pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent);
var pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent);
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
mergedPdf.SaveAs("MergedDocuments.pdf");
using IronPdf;
var firstHtmlContent = @"<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>";
var secondHtmlContent = @"<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>";
var pdfRenderer = new ChromePdfRenderer();
var pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent);
var pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent);
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
mergedPdf.SaveAs("MergedDocuments.pdf");
Imports IronPdf
Private firstHtmlContent = "<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>"
Private secondHtmlContent = "<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>"
Private pdfRenderer = New ChromePdfRenderer()
Private pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent)
Private pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent)
Private mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB)
mergedPdf.SaveAs("MergedDocuments.pdf")
$vbLabelText   $csharpLabel

レポート.NETとIronPDFの比較: 図10 - 出力PDF: 複数のPDFファイルを生成して1つのPDFに統合する。

PDFドキュメントを分割する

逆に、IronPDF は単一のPDFを複数のドキュメントに分割することができます。 個々のページまたはセクションを配布したい場合に必要になるかもしれません。

6.1.7 PDFの暗号化と復号化

IronPDFは、PDFドキュメントの暗号化および復号化を可能にし、機密情報に対して追加のセキュリティ層を提供します。

using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("protected.pdf", "password");
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption();
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key");
encryptedPdf.Password = "new-password";
encryptedPdf.SaveAs("secured.pdf");
using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("protected.pdf", "password");
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption();
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key");
encryptedPdf.Password = "new-password";
encryptedPdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System
Private encryptedPdf = PdfDocument.FromFile("protected.pdf", "password")
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption()
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key")
encryptedPdf.Password = "new-password"
encryptedPdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

6.1.8 ドキュメントのプロパティとメタデータの設定

このライブラリを使用すると、タイトル、著者、およびメタデータなどのドキュメントのプロパティを設定するのは簡単です。 これは文書の管理および整理に役立ちます。

using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("sample.pdf");
pdf.MetaData.Author = "Iron Developer";
pdf.MetaData.Keywords = "Confidential, Private";
pdf.MetaData.ModifiedDate = DateTime.Now;
pdf.SaveAs("modified.pdf");
using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("sample.pdf");
pdf.MetaData.Author = "Iron Developer";
pdf.MetaData.Keywords = "Confidential, Private";
pdf.MetaData.ModifiedDate = DateTime.Now;
pdf.SaveAs("modified.pdf");
Imports IronPdf
Imports System
Private encryptedPdf = PdfDocument.FromFile("sample.pdf")
pdf.MetaData.Author = "Iron Developer"
pdf.MetaData.Keywords = "Confidential, Private"
pdf.MetaData.ModifiedDate = DateTime.Now
pdf.SaveAs("modified.pdf")
$vbLabelText   $csharpLabel

6.1.9 PDF/A 準拠

IronPDFは、長期保存および記録保持のために必要なPDF/A準拠のドキュメントを生成できます。

6.1.10 IronPDFを使用したXMLレポート

XMLからPDFへの直接変換はIronPDFではサポートされていませんが、有効な方法としては、まずXMLデータをHTML形式に変換することが挙げられます。 これは、XMLドキュメントをHTML、テキスト、または新しいXMLドキュメントなどに変換するために設計された強力なXMLスタイルシート言語であるXSLT(拡張可能スタイルシート言語変換)を使用することで達成されます。 仮にこれが私たちのdata.xmlファイルだとしましょう:

<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>The Great Gatsby</Title>
        <Author>F. Scott Fitzgerald</Author>
        <Genre>Fiction</Genre>
        <Year>1925</Year>
    </Book>
    <Book id="2">
        <Title>To Kill a Mockingbird</Title>
        <Author>Harper Lee</Author>
        <Genre>Fiction</Genre>
        <Year>1960</Year>
    </Book>
    <Book id="3">
        <Title>1984</Title>
        <Author>George Orwell</Author>
        <Genre>Dystopian</Genre>
        <Year>1949</Year>
    </Book>
</Library>
XML

そしてこれは私たちのstyle.xsltファイルです:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html>
            <head>
                <title>Library Catalog</title>
                <style>
                    body { font-family: Arial, sans-serif; margin: 20px; }
                    table { border-collapse: collapse; width: 100%; }
                    th, td { text-align: left; padding: 8px; }
                    tr:nth-child(even) { background-color: #f2f2f2; }
                    th { background-color: #4CAF50; color: white; }
                </style>
            </head>
            <body>
                <h2>Library Catalog</h2>
                <table>
                    <tr>
                        <th>Title</th>
                        <th>Author</th>
                        <th>Genre</th>
                        <th>Year</th>
                    </tr>
                    <xsl:for-each select="Library/Book">
                        <tr>
                            <td><xsl:value-of select="Title"/></td>
                            <td><xsl:value-of select="Author"/></td>
                            <td><xsl:value-of select="Genre"/></td>
                            <td><xsl:value-of select="Year"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
XML

以下は、このロジックにどのようにアプローチするかを示すコードスニペットです:

using System;
using System.Xml.Xsl;
using System.Xml;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("style.xslt");
XmlReader reader = XmlReader.Create("data.xml");
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create("output.html", settings))
{
    transform.Transform(reader, writer);
}
License.LicenseKey = "Liecense-Key";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("output.html");
pdf.SaveAs("Report.pdf");
using System;
using System.Xml.Xsl;
using System.Xml;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("style.xslt");
XmlReader reader = XmlReader.Create("data.xml");
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create("output.html", settings))
{
    transform.Transform(reader, writer);
}
License.LicenseKey = "Liecense-Key";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("output.html");
pdf.SaveAs("Report.pdf");
Imports System
Imports System.Xml.Xsl
Imports System.Xml
Private transform As New XslCompiledTransform()
transform.Load("style.xslt")
Dim reader As XmlReader = XmlReader.Create("data.xml")
Dim settings As New XmlWriterSettings With {
	.Indent = True,
	.OmitXmlDeclaration = True
}
Using writer As XmlWriter = XmlWriter.Create("output.html", settings)
	transform.Transform(reader, writer)
End Using
License.LicenseKey = "Liecense-Key"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("output.html")
pdf.SaveAs("Report.pdf")
$vbLabelText   $csharpLabel
  1. XMLデータをHTMLとして構造化する方法を指示するXSLTスタイルシート(style.xslt)から始めます。 .NET の XslCompiledTransform クラスは、XSLT ファイルを読み込むために使用されます。

  2. XmlReaderを利用して、XMLデータ(data.xml)を読み込みます。 XmlReader は、この目的に対して効率的です。なぜなら、XMLデータの前方のみ、読み取り専用のビューを提供するからです。

  3. 変換されたHTMLは、XmlWriterを使用してファイル(output.html)に書き込まれます。これは、読みやすさのためにインデントされたHTMLを生成し、HTML出力には不要なXML宣言を省略するように設定されています。

  4. HTMLファイルの準備ができたら、IronPDFChromePdfRenderer を使用してHTMLドキュメントをPDFに変換します。 このレンダラーは高品質のレンダリングエンジンを模倣し、生成されたPDFがHTMLコンテンツを正確に再現することを保証します。

  5. 最後に、PDFドキュメントがファイルシステムに保存されます(Report.pdf)。 このステップで変換プロセスが完了し、元のXMLデータから派生したPDFドキュメントが生成されます。

    これは、XML と IronPDF を使用してレポートを生成する方法です。 生成する出力PDFファイル:

    Report .NETとIronPDFの比較: 図11 - IronPDFとXSLTを使用してXMLレポートから出力されたPDFファイル

    SAPインタラクティブレポートをプログラムで作成し、IronPDFを使用して変換することもできます。 詳細なガイドについては、C# レポート生成に関するこのガイドをご覧ください。

レポート.NETの高度な機能 6.2

Report.NET は、包括的なPDF生成とカスタマイズを可能にする高度な機能を備えたスイートを提供します。 画像に記載された機能は、これらの高度な機能の一部を反映しています。 それぞれについて詳しく見てみましょう。

6.2.1 フォントの追加

この機能により、PDFドキュメント内でさまざまなフォントスタイルとサイズを使用することができます。 開発者は、異なるフォントの外観をテストし、テキストが設計仕様に従って正しく表示されることを確認できます。

using Root.Reports;
using System;
using System.Drawing;
namespace ReportSamples {
  public class Test : Report {
    private readonly FontDef fontDef;
    private readonly FontProp fontProp_Title;
    private readonly FontProp fontProp_Label;
    public Test() {
      fontDef = FontDef.FontDefFromName(this, FontDef.StandardFont.Helvetica);
      fontProp_Title = new FontPropMM(fontDef, 6) { Bold = true };
      fontProp_Label = new FontPropMM(fontDef, 4);
    }
    protected override void Create() {
      FontTest();
    }
    private void FontTest() {
      FontProp fp_Title = new FontPropMM(fontDef, 12) { Bold = true };
      FontProp fp = new FontPropMM(fontDef, 6);
      FontProp fp_Small = new FontPropMM(fontDef, 1.4);
      FontProp fp_XSmall = new FontPropMM(fontDef, 0.8);
      Page page_Cur = new Page(this);
      page_Cur.AddCB_MM(30, new RepString(fontProp_Title, "Font Test"));
      Double rX = 300;
      Double rY = 40;
      for (Int32 i = 32; i < 127; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      for (Int32 i = 161; i < 256; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      PrintCharacter('�', fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
    }
    private void PrintCharacter(Int32 iChar, FontProp fp, FontProp fp_Small, FontProp fp_XSmall, Double rX, Double rY, Page page_Cur) {
      if (rX > 185) {
        rY += fp.rLineFeedMM;
        rX = 22;
      }
      if (rY > 280) {
        new Page(this);
        rY = 40;
      }
      Char ch = (Char)iChar;
      String s = ch.ToString();
      page_Cur.AddMM(rX + 2, rY, new RepString(fp, s));
      rX += 15;
    }
  }
}
using Root.Reports;
using System;
using System.Drawing;
namespace ReportSamples {
  public class Test : Report {
    private readonly FontDef fontDef;
    private readonly FontProp fontProp_Title;
    private readonly FontProp fontProp_Label;
    public Test() {
      fontDef = FontDef.FontDefFromName(this, FontDef.StandardFont.Helvetica);
      fontProp_Title = new FontPropMM(fontDef, 6) { Bold = true };
      fontProp_Label = new FontPropMM(fontDef, 4);
    }
    protected override void Create() {
      FontTest();
    }
    private void FontTest() {
      FontProp fp_Title = new FontPropMM(fontDef, 12) { Bold = true };
      FontProp fp = new FontPropMM(fontDef, 6);
      FontProp fp_Small = new FontPropMM(fontDef, 1.4);
      FontProp fp_XSmall = new FontPropMM(fontDef, 0.8);
      Page page_Cur = new Page(this);
      page_Cur.AddCB_MM(30, new RepString(fontProp_Title, "Font Test"));
      Double rX = 300;
      Double rY = 40;
      for (Int32 i = 32; i < 127; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      for (Int32 i = 161; i < 256; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      PrintCharacter('�', fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
    }
    private void PrintCharacter(Int32 iChar, FontProp fp, FontProp fp_Small, FontProp fp_XSmall, Double rX, Double rY, Page page_Cur) {
      if (rX > 185) {
        rY += fp.rLineFeedMM;
        rX = 22;
      }
      if (rY > 280) {
        new Page(this);
        rY = 40;
      }
      Char ch = (Char)iChar;
      String s = ch.ToString();
      page_Cur.AddMM(rX + 2, rY, new RepString(fp, s));
      rX += 15;
    }
  }
}
Imports Root.Reports
Imports System
Imports System.Drawing
Namespace ReportSamples
  Public Class Test
	  Inherits Report

	Private ReadOnly fontDef As FontDef
	Private ReadOnly fontProp_Title As FontProp
	Private ReadOnly fontProp_Label As FontProp
	Public Sub New()
	  fontDef = FontDef.FontDefFromName(Me, FontDef.StandardFont.Helvetica)
	  fontProp_Title = New FontPropMM(fontDef, 6) With {.Bold = True}
	  fontProp_Label = New FontPropMM(fontDef, 4)
	End Sub
	Protected Overrides Sub Create()
	  FontTest()
	End Sub
	Private Sub FontTest()
	  Dim fp_Title As FontProp = New FontPropMM(fontDef, 12) With {.Bold = True}
	  Dim fp As FontProp = New FontPropMM(fontDef, 6)
	  Dim fp_Small As FontProp = New FontPropMM(fontDef, 1.4)
	  Dim fp_XSmall As FontProp = New FontPropMM(fontDef, 0.8)
	  Dim page_Cur As New Page(Me)
	  page_Cur.AddCB_MM(30, New RepString(fontProp_Title, "Font Test"))
	  Dim rX As Double = 300
	  Dim rY As Double = 40
	  For i As Int32 = 32 To 126
		PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	  Next i
	  For i As Int32 = 161 To 255
		PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	  Next i
	  PrintCharacter(AscW(" "c), fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	End Sub
	Private Sub PrintCharacter(ByVal iChar As Int32, ByVal fp As FontProp, ByVal fp_Small As FontProp, ByVal fp_XSmall As FontProp, ByVal rX As Double, ByVal rY As Double, ByVal page_Cur As Page)
	  If rX > 185 Then
		rY += fp.rLineFeedMM
		rX = 22
	  End If
	  If rY > 280 Then
		Dim tempVar As New Page(Me)
		rY = 40
	  End If
	  Dim ch As Char = ChrW(iChar)
	  Dim s As String = ch.ToString()
	  page_Cur.AddMM(rX + 2, rY, New RepString(fp, s))
	  rX += 15
	End Sub
  End Class
End Namespace
$vbLabelText   $csharpLabel

Report .NET と IronPDF の比較: 図 12 - Report.NET を使用して PDF ドキュメントにさまざまなフォントスタイルとサイズを追加する

6.2.2 画像埋め込み

Image Sample機能を使用すると、開発者は画像をPDFドキュメントに埋め込むことができます。 これには、画像のサイズと位置を制御すること、さらに必要に応じて画像に変形や効果を適用することが含まれます。

using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ImageSample : Report {
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp_Title = new FontPropMM(fd, 15) { Bold = true };
      FontProp fp_SubTitle = new FontPropMM(fd, 4) { Bold = true };
      PenProp pp = new PenProp(this, 0.2, Color.FromArgb(235, 235, 235));
      PenProp pp_Black = new PenProp(this, 0.2, Color.Black);
      BrushProp bp = new BrushProp(this, Color.LightGray);
      new Page(this);
      page_Cur.AddCB_MM(40, new RepString(fp_Title, "Image Sample"));
      System.IO.Stream stream = GetType().Assembly.GetManifestResourceStream("ReportSamples.Image.jpg");
      page_Cur.AddMM(20, 90, new RepImageMM(stream, 40, Double.NaN));
      page_Cur.AddMM(20, 95, new RepString(fp_SubTitle, "W = 40mm, H = auto."));
      page_Cur.AddMM(67, 90, new RepImageMM(stream, 40, 20));
      page_Cur.AddMM(67, 95, new RepString(fp_SubTitle, "W = 40mm, H = 20mm"));
      page_Cur.AddMM(114, 90, new RepImageMM(stream, Double.NaN, 30));
      page_Cur.AddMM(114, 95, new RepString(fp_SubTitle, "W = auto., H = 30mm"));
      page_Cur.AddMM(161, 90, new RepImageMM(stream, 30, 30));
      page_Cur.AddMM(161, 95, new RepString(fp_SubTitle, "W = 30mm, H = 30mm"));
    }
  }
}
using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ImageSample : Report {
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp_Title = new FontPropMM(fd, 15) { Bold = true };
      FontProp fp_SubTitle = new FontPropMM(fd, 4) { Bold = true };
      PenProp pp = new PenProp(this, 0.2, Color.FromArgb(235, 235, 235));
      PenProp pp_Black = new PenProp(this, 0.2, Color.Black);
      BrushProp bp = new BrushProp(this, Color.LightGray);
      new Page(this);
      page_Cur.AddCB_MM(40, new RepString(fp_Title, "Image Sample"));
      System.IO.Stream stream = GetType().Assembly.GetManifestResourceStream("ReportSamples.Image.jpg");
      page_Cur.AddMM(20, 90, new RepImageMM(stream, 40, Double.NaN));
      page_Cur.AddMM(20, 95, new RepString(fp_SubTitle, "W = 40mm, H = auto."));
      page_Cur.AddMM(67, 90, new RepImageMM(stream, 40, 20));
      page_Cur.AddMM(67, 95, new RepString(fp_SubTitle, "W = 40mm, H = 20mm"));
      page_Cur.AddMM(114, 90, new RepImageMM(stream, Double.NaN, 30));
      page_Cur.AddMM(114, 95, new RepString(fp_SubTitle, "W = auto., H = 30mm"));
      page_Cur.AddMM(161, 90, new RepImageMM(stream, 30, 30));
      page_Cur.AddMM(161, 95, new RepString(fp_SubTitle, "W = 30mm, H = 30mm"));
    }
  }
}
Imports Root.Reports
Imports System.Drawing
Namespace ReportSamples
  Public Class ImageSample
	  Inherits Report

	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 15) With {.Bold = True}
	  Dim fp_SubTitle As FontProp = New FontPropMM(fd, 4) With {.Bold = True}
	  Dim pp As New PenProp(Me, 0.2, Color.FromArgb(235, 235, 235))
	  Dim pp_Black As New PenProp(Me, 0.2, Color.Black)
	  Dim bp As New BrushProp(Me, Color.LightGray)
	  Dim tempVar As New Page(Me)
	  page_Cur.AddCB_MM(40, New RepString(fp_Title, "Image Sample"))
	  Dim stream As System.IO.Stream = Me.GetType().Assembly.GetManifestResourceStream("Image.jpg")
	  page_Cur.AddMM(20, 90, New RepImageMM(stream, 40, Double.NaN))
	  page_Cur.AddMM(20, 95, New RepString(fp_SubTitle, "W = 40mm, H = auto."))
	  page_Cur.AddMM(67, 90, New RepImageMM(stream, 40, 20))
	  page_Cur.AddMM(67, 95, New RepString(fp_SubTitle, "W = 40mm, H = 20mm"))
	  page_Cur.AddMM(114, 90, New RepImageMM(stream, Double.NaN, 30))
	  page_Cur.AddMM(114, 95, New RepString(fp_SubTitle, "W = auto., H = 30mm"))
	  page_Cur.AddMM(161, 90, New RepImageMM(stream, 30, 30))
	  page_Cur.AddMM(161, 95, New RepString(fp_SubTitle, "W = 30mm, H = 30mm"))
	End Sub
  End Class
End Namespace
$vbLabelText   $csharpLabel

Report .NETとIronPDFの比較: 図13 - 出力PDF: Report.NETを使用してPDFドキュメントに画像を埋め込む

6.2.3 リストレイアウトマネージャー

リストレイアウトマネージャーは、PDFドキュメントにリストを追加する方法を提供します。 これは、順序付きリストまたは順序なしリストの作成、リストのインデントや箇条書きスタイルのカスタマイズ、文書内のリスト項目の全体的なレイアウトの管理に役立ちます。

using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ListLayoutManagerSample : Report {
    private Double rMarginLeft = 20;  // millimeters
    private Double rWidth = 175;  // millimeters
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 1.9);
      Double rY = 40;  // vertical position in millimeters
      new Page(this);
      FontProp fp_Title = new FontPropMM(fd, 8);
      page_Cur.AddCB_MM(rY, new RepString(fp_Title, "List Layout Manager Sample"));
      rY += 18;
      ListLayoutManager llm = null;
      using (llm = new ListLayoutManager(this)) {
        PenProp pp_BorderLine = new PenPropMM(this, 0.4, Color.Blue);
        PenProp pp_GridLine = new PenPropMM(this, 0.1, Color.Blue);
        // Configuration for columns
        TlmColumn col_Number = new TlmColumnMM(llm, 10);
        col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine;
        TlmColumn col_Text = new TlmColumnMM(llm, 100);
        col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine;
        TlmColumn col_Author = new TlmColumnMM(llm, rWidth - llm.rWidthMM);
        col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine;
        col_Author.tlmCellDef_Default.brushProp_Back = new BrushProp(this, Color.FromArgb(255, 210, 210));
        llm.container_CreateMM(page_Cur, rMarginLeft, rY);  // immediately creates a container
        // Adding rows and content
        // ...
        // Rows and content omitted for brevity
        // ...
      }
      rY += llm.rCurY_MM + 1.5;
      fp.rSizeMM = 1.5;
      page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, new RepString(fp, "End of list"));
    }
  }
}
using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ListLayoutManagerSample : Report {
    private Double rMarginLeft = 20;  // millimeters
    private Double rWidth = 175;  // millimeters
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 1.9);
      Double rY = 40;  // vertical position in millimeters
      new Page(this);
      FontProp fp_Title = new FontPropMM(fd, 8);
      page_Cur.AddCB_MM(rY, new RepString(fp_Title, "List Layout Manager Sample"));
      rY += 18;
      ListLayoutManager llm = null;
      using (llm = new ListLayoutManager(this)) {
        PenProp pp_BorderLine = new PenPropMM(this, 0.4, Color.Blue);
        PenProp pp_GridLine = new PenPropMM(this, 0.1, Color.Blue);
        // Configuration for columns
        TlmColumn col_Number = new TlmColumnMM(llm, 10);
        col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine;
        TlmColumn col_Text = new TlmColumnMM(llm, 100);
        col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine;
        TlmColumn col_Author = new TlmColumnMM(llm, rWidth - llm.rWidthMM);
        col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine;
        col_Author.tlmCellDef_Default.brushProp_Back = new BrushProp(this, Color.FromArgb(255, 210, 210));
        llm.container_CreateMM(page_Cur, rMarginLeft, rY);  // immediately creates a container
        // Adding rows and content
        // ...
        // Rows and content omitted for brevity
        // ...
      }
      rY += llm.rCurY_MM + 1.5;
      fp.rSizeMM = 1.5;
      page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, new RepString(fp, "End of list"));
    }
  }
}
Imports Root.Reports
Imports System.Drawing
Namespace ReportSamples
  Public Class ListLayoutManagerSample
	  Inherits Report

	Private rMarginLeft As Double = 20 ' millimeters
	Private rWidth As Double = 175 ' millimeters
	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp As FontProp = New FontPropMM(fd, 1.9)
	  Dim rY As Double = 40 ' vertical position in millimeters
	  Dim tempVar As New Page(Me)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 8)
	  page_Cur.AddCB_MM(rY, New RepString(fp_Title, "List Layout Manager Sample"))
	  rY += 18
	  Dim llm As ListLayoutManager = Nothing
	  llm = New ListLayoutManager(Me)
	  Using llm
		Dim pp_BorderLine As PenProp = New PenPropMM(Me, 0.4, Color.Blue)
		Dim pp_GridLine As PenProp = New PenPropMM(Me, 0.1, Color.Blue)
		' Configuration for columns
		Dim col_Number As TlmColumn = New TlmColumnMM(llm, 10)
		col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter
		col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter
		col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine
		Dim col_Text As TlmColumn = New TlmColumnMM(llm, 100)
		col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine
		Dim col_Author As TlmColumn = New TlmColumnMM(llm, rWidth - llm.rWidthMM)
		col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine
		col_Author.tlmCellDef_Default.brushProp_Back = New BrushProp(Me, Color.FromArgb(255, 210, 210))
		llm.container_CreateMM(page_Cur, rMarginLeft, rY) ' immediately creates a container
		' Adding rows and content
		' ...
		' Rows and content omitted for brevity
		' ...
	  End Using
	  rY += llm.rCurY_MM + 1.5
	  fp.rSizeMM = 1.5
	  page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, New RepString(fp, "End of list"))
	End Sub
  End Class
End Namespace
$vbLabelText   $csharpLabel

Report .NET と IronPDF の比較: 図 14 - 出力 PDF: Report.NET を使用して PDF ドキュメントにリストを追加

6.2.4 PDFプロパティ

これは、PDFドキュメント自体のさまざまなプロパティ(メタデータ(著者、タイトル、主題)、表示設定、暗号化やアクセス許可などのセキュリティ設定)を設定および変更する機能を指します。

using Root.Reports;
using System;
namespace ReportSamples {
  public class PdfPropertiesSample : Report {
    public PdfPropertiesSample() {
      PdfFormatter pf = (PdfFormatter)formatter;
      pf.sTitle = "PDF Sample";
      pf.sAuthor = "Otto Mayer, mot@root.ch";
      pf.sSubject = "Sample of some PDF features";
      pf.sKeywords = "Sample PDF RSF";
      pf.sCreator = "RSF Sample Application";
      pf.dt_CreationDate = new DateTime(2002, 8, 15, 0, 0, 0, 0);
      pf.pageLayout = PageLayout.TwoColumnLeft;
      pf.bHideToolBar = true;
      pf.bHideMenubar = false;
      pf.bHideWindowUI = true;
      pf.bFitWindow = true;
      pf.bCenterWindow = true;
      pf.bDisplayDocTitle = true;
    }
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 4);
      FontProp fp_Title = new FontPropMM(fd, 11);
      fp_Title.bBold = true;
      Page page = new Page(this);
      page.AddCB_MM(40, new RepString(fp_Title, "PDF Properties Sample"));
      fp_Title.rSizeMM = 8;
      page.AddCB_MM(100, new RepString(fp_Title, "First Page"));
      page.AddCB_MM(120, new RepString(fp, "Choose <Document Properties, Summary> from the"));
      page.AddCB_MM(126, new RepString(fp, "File menu to display the document properties"));
      page = new Page(this);
      page.AddCB_MM(100, new RepString(fp_Title, "Second Page"));
    }
  }
}
using Root.Reports;
using System;
namespace ReportSamples {
  public class PdfPropertiesSample : Report {
    public PdfPropertiesSample() {
      PdfFormatter pf = (PdfFormatter)formatter;
      pf.sTitle = "PDF Sample";
      pf.sAuthor = "Otto Mayer, mot@root.ch";
      pf.sSubject = "Sample of some PDF features";
      pf.sKeywords = "Sample PDF RSF";
      pf.sCreator = "RSF Sample Application";
      pf.dt_CreationDate = new DateTime(2002, 8, 15, 0, 0, 0, 0);
      pf.pageLayout = PageLayout.TwoColumnLeft;
      pf.bHideToolBar = true;
      pf.bHideMenubar = false;
      pf.bHideWindowUI = true;
      pf.bFitWindow = true;
      pf.bCenterWindow = true;
      pf.bDisplayDocTitle = true;
    }
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 4);
      FontProp fp_Title = new FontPropMM(fd, 11);
      fp_Title.bBold = true;
      Page page = new Page(this);
      page.AddCB_MM(40, new RepString(fp_Title, "PDF Properties Sample"));
      fp_Title.rSizeMM = 8;
      page.AddCB_MM(100, new RepString(fp_Title, "First Page"));
      page.AddCB_MM(120, new RepString(fp, "Choose <Document Properties, Summary> from the"));
      page.AddCB_MM(126, new RepString(fp, "File menu to display the document properties"));
      page = new Page(this);
      page.AddCB_MM(100, new RepString(fp_Title, "Second Page"));
    }
  }
}
Imports Root.Reports
Imports System
Namespace ReportSamples
  Public Class PdfPropertiesSample
	  Inherits Report

	Public Sub New()
	  Dim pf As PdfFormatter = CType(formatter, PdfFormatter)
	  pf.sTitle = "PDF Sample"
	  pf.sAuthor = "Otto Mayer, mot@root.ch"
	  pf.sSubject = "Sample of some PDF features"
	  pf.sKeywords = "Sample PDF RSF"
	  pf.sCreator = "RSF Sample Application"
	  pf.dt_CreationDate = New DateTime(2002, 8, 15, 0, 0, 0, 0)
	  pf.pageLayout = PageLayout.TwoColumnLeft
	  pf.bHideToolBar = True
	  pf.bHideMenubar = False
	  pf.bHideWindowUI = True
	  pf.bFitWindow = True
	  pf.bCenterWindow = True
	  pf.bDisplayDocTitle = True
	End Sub
	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp As FontProp = New FontPropMM(fd, 4)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 11)
	  fp_Title.bBold = True
	  Dim page As New Page(Me)
	  page.AddCB_MM(40, New RepString(fp_Title, "PDF Properties Sample"))
	  fp_Title.rSizeMM = 8
	  page.AddCB_MM(100, New RepString(fp_Title, "First Page"))
	  page.AddCB_MM(120, New RepString(fp, "Choose <Document Properties, Summary> from the"))
	  page.AddCB_MM(126, New RepString(fp, "File menu to display the document properties"))
	  page = New Page(Me)
	  page.AddCB_MM(100, New RepString(fp_Title, "Second Page"))
	End Sub
  End Class
End Namespace
$vbLabelText   $csharpLabel

6.2.5 テキストからPDF

PDF From Text機能は、PDFにテキストコンテンツを追加およびカスタマイズする際のライブラリの機能を示しています。 これには、テキストの配置、行間、色の設定、および太字や斜体などのテキスト効果の適用が含まれます。

7. ドキュメントとサポート

7.1 IronPDF

IronPDF は、その 詳細なドキュメント で知られています。 IronPDF は、セットアップ手順、チュートリアル、および API リファレンスを含む、よく整理されたドキュメントセクションを提供します。 ガイドは初心者から経験豊富な開発者まで、必要な情報を迅速に見つけられるように構成されています。 コミュニティ主導のサポートについては、開発者はフォーラムやコミュニティディスカッションに参加することができます。 ここでは、質問をしたり、経験を共有したり、他のユーザーから答えを見つけたりすることができます。

IronPDFは、エンジニアが直接IronPDFチームからサポートを受けることができるチケットシステムを通じて、プロフェッショナルなサポートも提供しています。 このサービスは有料ライセンスの一部である可能性があり、より直接的かつ迅速なサポートを提供します。

7.2 Report.NET

ネットレポート7.2

Report.NETはオープンソースライブラリであり、ドキュメントとサポートには異なるアプローチがあります。 ドキュメントは商業ライブラリほど詳細ではないかもしれませんが、開始するのに十分であり、一般的なタスクを処理するのに十分です。 ライブラリのドキュメントは、GitHubリポジトリ内またはソースコード内のインラインコメントとして見つけることができます。 必要な情報を見つけるためには、技術的な側面が多く、少し調査が必要なことがあります。

Report.NETは無料でオープンソースのライブラリであるため、正式なプロフェッショナルサポートを提供していません。 開発者はコミュニティの助けに頼るか、より深い問題のためにスペシャリストを雇う必要があるかもしれません。

ライセンスモデル

Report .NET と IronPDF の比較: 図15 - IronPDF for .NET ライセンス情報

8.1 IronPDFライセンスモデル

IronPDF は、さまざまな開発および導入ニーズに適したライセンスモデルを提供しており、プロジェクトや組織の規模に関わらず対応できるオプションを確保しています。 概要はこちら:

  1. Lite License ($749 USD): これは最も基本的なオプションで、1か所で1つのプロジェクトに取り組む個々の開発者に適しています。 電子メールサポートが付属していますが、ロイヤリティフリーの再配布は含まれていません。

  2. Plus License ($1,499 USD): 小規模チーム向けに設計されたこのライセンスは、3 つの拠点で 3 人の開発者が 3 つのプロジェクトに取り組むことをサポートします。 24時間対応のメールとチャットに加え、電話サポートも含むようにサポートを強化します。

  3. Professional License ($2,999 USD): これは大規模なチームとプロジェクト向けに設計されており、10か所にわたって10人の開発者が10のプロジェクトに取り組むことができます。 これはすべてのプラスサポートオプションを含み、よりインタラクティブな問題解決のための画面共有サポートを追加します。

  4. 無料試用ライセンス: 評価目的に最適なこの試用ライセンスは、IronPDFを無料で試すことができます。ただし、これは個人的な利用を目的としており、生成されたPDFを公開の場面や企業のインターネットまたはイントラネットプロジェクトで公開してはなりません。

    コアライセンスに加えて、拡張カバレッジのオプションもあります。

    • ロイヤリティフリーの再配布: IronPDFを配布または販売するソフトウェア製品に含める必要がある場合、ロイヤリティフリーの再配布カバレッジが必要です。 これは、SaaSおよびOEM再配布用に$1,499で価格設定されています。
    • 拡張サポートと更新: このアドオンは、継続的な製品の更新とサポートを受けられることを保証します。 1年または5年のサポートパッケージからお選びいただけます。5年の方が年間オプションよりお買い得です。

8.2 Report.NET ライセンスモデル

Report.NETは、LGPLライセンスの下で無料配布されています。 LGPL (Lesser General Public License) は、ユーザーがソフトウェアを実行、研究、共有、変更することを許可するフリーソフトウェアライセンスです。 ライセンスにより、Report.NETライブラリはオープンソースおよびプロプライエタリソフトウェアの両方で使用することが無料で保証されます。条件として、LGPLライセンスのコード部分が変更されない限り有効です。 それらが変更された場合、その変更は同じライセンスの下で共有されなければなりません。

結論

IronPDFReport.NETを検討する際には、それぞれの機能、提供される機能の範囲、使いやすさ、サポートサービス、およびライセンス方法など、さまざまな要素を調査しました。

IronPDFは、開発者がHTML、画像、テキストからPDFファイルを作成および編集できるだけでなく、暗号化、デジタル署名、カスタマイズされたヘッダー/フッターなどの高度な機能を実装するための豊富な機能セットを提供します。 異なるライセンスサポートにより、個人の開発者から大規模な企業まで、さまざまな規模のプロジェクトに対応できます。 包括的なドキュメントとプロフェッショナルなサポート体制により、一貫した更新と直接の支援が重要なプロジェクトに適しています。 IronPDFはまた、無料試用版を提供しており、IronPDFは$749から始まります。

対照的に、Report.NETはPDFドキュメントを生成するのに優れたシンプルなツールです。 そのLGPLライセンスによって、個人および商用プロジェクトの両方で重要な制限なく開発者が利用できるようになっています。 IronPDFほどの構造化されたサポートを提供していないかもしれませんが、Report.NETのオープンソースの性質はコミュニティからの意見や支援を奨励します。

あなたのプロジェクトの特定の要求に基づいて、IronPDFReport.NET のどちらを選ぶかが決まります。 プロジェクトで詳細なPDFの作成および操作が必要かつプロフェッショナルなサポートが必要な場合、IronPDFが最適な選択肢となるでしょう。

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