IronPDFとPDFNetの比較
1. はじめに
完全なPDFツールを.NETフレームワーク用にお探しですか?
この記事では、C#(最も人気のあるプログラミング言語のひとつ)でPDFファイルを操作する方法を見ていきます。 パフォーマンスと機能に基づいてコードサンプルを使用して、C#の.NETフレームワーク用の業界トップクラスの2つのPDFツールについて議論します。 最終的には、そのライセンスの詳細を確認し、ライセンスキーの取得方法を学びます。
2つのPDFライブラリは以下の通りです:
- PDFNet
- IronWebScraper
2. IronPDF
IronPDFは、C# .NET開発者向けにIron Softwareが開発した、すべてのPDF問題を解決するための単一ライブラリです。 IronPDFはChromiumエンジンを搭載し、HTML5、JavaScript、CSS、画像ファイルのPDF変換、カスタムヘッダーとフッターの作成、ブラウザで表示されるままのPDF表示など、便利で強力な機能を備えています。 IronPDFを使用すると、PDFファイルからデータを読み取り、それを.NETアプリケーションおよびデータストレージシステムに自動的に挿入できます。 古いPDFドキュメントストレージから管理するドキュメント管理システムおよびビジネスアプリケーションにコンテンツをインポート、移動、インデックス付けすることができます。
2.1. IronPDFの機能
2.1.1. PDF変換
この機能により、HTML、MVCビュー、Webフォーム、HTML文字列、URLなどのさまざまな形式からPDFファイルを生成できます。
2.1.2. PDFコンテンツの抽出
多くの場合、PDFから埋め込まれたテキストを簡単に抽出できます。 しかし、それが失敗した場合、テキストはおそらく画像に埋め込まれています。 通常のテキストではなく視覚的なテキストをスキャンするには、IronOCRライブラリを使用します。
2.1.3 ヘッダーとフッター
PDFを作成する際や既存のPDFにヘッダーとフッターを追加できます。 各文書ページにヘッダーとフッターを作成するには、印刷オプションプロパティを使用します。 これらのパラメーターは、ChromePdfRendererオブジェクトで利用可能です。 この例は、.NET Coreコンソールアプリ内で実行されます。
2.1.4. PDF画像処理
ユーザーは、PDFから画像を生成したり、写真からPDFを生成したりすることができます。画像の抽出、さまざまな画像拡張機能、PDF印刷をサポートしています。
2.1.5. PDF Documents IO
IronPDFは、128ビットPDF暗号化、パスワード保護されたPDFロック、およびPDFのデジタル署名を含めます。
2.1.6. PDFの編集
IronPDFツールを使用すると、ウォーターマークの追加、ページの追加、削除、背景、前景、その他多くの機能をPDFに取り入れることができます。
2.1.7. 互換性
IronPDFはC#と互換性のあるほぼすべてのオペレーティングシステムとフレームワークをサポートします。例えば:
- Windows
- .NET Core 2.1, 3.0, 3.1, .NET 6 & 5
- ユニバーサル互換性のための.NET Standard 2.0準拠
- Azure
- AWS
- Docker
- Linux
3. PDFNet
PDFTronのPDFNet .NET SDKは、精密なPDF処理、注釈、編集、作成をウェブ、モバイル、デスクトップ、サーバーの任意のフレームワークまたはアプリケーションに提供します。 インフラストラクチャ全体のドキュメントおよび情報管理プロセスを管理し、サードパーティのサーバー依存性を排除します。 PDFTronのウェブプラットフォームには、サポートされるプラットフォームとすべてのPDF SDKのデモライセンスキーを備えたJSバージョンが付属しています。
PDFNetの最大のメリットの1つは、完全なクロスプラットフォームであり、さまざまなモバイルおよびデスクトップ環境にわたって、単純にワークフローやアプリにPDFの互換性と関連ビジネス機能を追加できることです。
3.1. PDFNet SDKの機能
3.1.1. 互換性
PDFNet SDKは多くのプラットフォームとフレームワークに対応しています。 プラットフォームの一貫性を確保するために、JavaScript APIはPDFNet APIと同じように使用されます。 SDKのNode.jsおよびElectronバージョンも利用可能です。 このパッケージはアンマネージドのアドオンバイナリを必要とします。
3.1.2. 編集と表示
オンライン、モバイル、デスクトッププラットフォームのユーザーにPDFの安全で拡張可能な高忠実度の読み取りおよび編集を提供します。
3.1.3. 署名
カスタマイズされた署名プロセスを作成します。 デジタル署名された書類は認証、検証、および封印できます。
3.1.4. 真の削除処理
個人情報や個人の健康情報などの敏感なデータを削除しますが、ドキュメントの検索性は維持されます。
3.1.5. ページ操作
ページを追加、削除、再配置できます。 文書は組み立て、統合、または部分に分割できます。 同じリーダーまたは横に並べて複数のドキュメントを同時に表示します。
4. Visual Studioで新しいプロジェクトを作成する
この記事では、コンソールアプリケーションを使用してPDFドキュメントを生成します。
Visual Studioソフトウェアを開き、ファイルメニューに移動します。 "新しいプロジェクト"を選択し、コンソールアプリケーションを選択します。
プロジェクト名を入力し、パスを適切なテキストボックスに選択します。 次に、作成ボタンをクリックします。 以下のスクリーンショットのように必要な.NETフレームワークを選択します:

Visual Studioプロジェクトは、コンソールアプリケーションの構造を生成します。 終了すると、Program.csファイルが開かれ、ソースコードを書くことができます。

ライブラリを追加してプログラムをテストすることができます。
5. IronPDFライブラリをインストールする
IronPDFライブラリは4つの異なる方法でダウンロードおよびインストールできます。 以下のような方法です:
- Visual Studio NuGet パッケージ マネージャーの使用
- Visual Studioのコマンドラインを使用する。
- NuGetギャラリーIronPDFパッケージから直接ダウンロード。
- IronPDFダウンロードページからダウンロード。
5.1 Visual Studio NuGetパッケージマネージャーを使用する
Visual Studioソフトウェアは、ソリューションにパッケージを直接インストールするためのNuGetパッケージマネージャーオプションを提供します。 以下のスクリーンショットは、NuGetパッケージマネージャーを開く方法を示しています。

パッケージマネージャーGUIを開いた状態で、[参照]タブをクリックし、"IronPDF"を検索します。

上の画像では、検索結果から関連パッケージのリストを確認できます。 IronPDFオプションを選択し、パッケージを私たちのソリューションにインストールします。
5.2 Visual Studioコマンドラインを使用する
- Visual Studioメニューで、ツール > NuGetパッケージマネージャ > パッケージマネージャコンソールに移動します。

- パッケージマネージャコンソールタブに以下の行を入力します:
Install-Package IronPdf
IronPDFパッケージがプロジェクトにインストールされます。

5.3 NuGetウェブページからの直接ダウンロード
第三の方法は、NuGetギャラリーIronPDFパッケージからNuGetパッケージを直接ダウンロードすることです。
- NuGetリンクに移動します
- ダウンロードされたパッケージをダブルクリックします; それは自動的にインストールされます。
5.4 IronPDFのWebページから直接ダウンロード
5.4 IronPDFウェブページからの直接ダウンロード
最新のパッケージをIronPDFダウンロードページから直接ダウンロードします。 ダウンロード後、以下の手順に従ってパッケージをプロジェクトに追加します。
- ソリューションウィンドウからプロジェクトを右クリックします。
- 次に、選択オプションの参照とダウンロードした参照の場所を参照します。
- 次に、参照を追加するにはOKをクリックします。
PDFNet SDKは4つの異なる方法でダウンロードおよびインストールできます。
PDFNet SDKは4つの異なる方法でダウンロードしてインストールできます。
- NuGetギャラリーPDFNetパッケージから直接ダウンロード。
- Visual Studioのコマンドラインを使用する。
- NuGet Gallery PDFNetパッケージから直接ダウンロード。
- PDFNetLoader.dllを使用する
6.1. Visual Studio NuGet パッケージ マネージャーの使用
上記で説明したように、Visual Studioのツールに移動し、NuGetパッケージマネージャーを開きます。 リストが表示されます — ソリューションのためにNuGetパッケージを管理をクリックします。

PDFNetを検索してプロジェクトにインストールします。 ### 6.2. Visual Studioコマンドラインの使用
6.2. Visual Studioコマンドラインの使用
- Visual Studioメニューで、ツール > NuGetパッケージマネージャ > パッケージマネージャコンソールに移動します。
- パッケージマネージャコンソールタブに以下の行を入力します:
Install-Package PDFNet -Version 9.2.0

3番目の方法は、NuGetギャラリーPDFNetパッケージから直接NuGetパッケージをダウンロードすることです。
3つ目の方法は、NuGet Gallery PDFNetパッケージから直接NuGetパッケージをダウンロードすることです。
- 右側のメニューからダウンロードパッケージの選択を選ぶ。
- ダウンロードしたパッケージをダブルクリックして、インストールプロセスを開始します。
6.4. PDFNetLoader.dllの使用
PDFNetLoader.dllファイルを使用してPDFNet APIをインストールすることもできます。GitHub Releases for PDFNetLoader.dllからダウンロードしてください。
パッケージをダウンロードし、プロジェクトのbinファイルに配置して実行します。 Visual StudioプロジェクトにPDFNetLoader.dllを参照として追加します。
BootstrapとCSSフレームワークのレンダリング
モダンなウェブアプリケーションは、一貫性のあるレスポンシブデザインのためにBootstrapとCSSフレームワークに大きく依存しています。 ウェブコンテンツからPDFを生成する際、これらのフレームワークを変更なしに正確にレンダリングする能力は、デザインの一貫性を維持し、開発の労力を減らすために不可欠です。
IronPDF: 完全なBootstrapフレームワークサポート
- Bootstrap 5:完全なフレックスボックスレイアウトシステム、CSSグリッド、ユーティリティクラス、すべてのコンポーネントライブラリ
- Bootstrap 4:完全なカードコンポーネント、ナビゲーション、Flexユーティリティ、レスポンシブデザイン
- Tailwind CSS:すべてのユーティリティファーストクラスはブラウザの精度でレンダリングされます -基盤:完全なグリッドシステムとコンポーネントのサポート -最新の CSS3: Flexbox、CSS グリッド、カスタム プロパティ、アニメーション、トランジション、トランスフォーム
実際の検証:IronPDFはBootstrapのホームページと全公式の例をピクセルパーフェクトな忠実度でレンダリングします。
コード例: 学習管理システムダッシュボード
using IronPdf;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";
var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<div>
<h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
<p class='text-muted mb-0'>Spring Semester 2025</p>
</div>
<span class='badge bg-success fs-5'>92% Overall Progress</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-primary'>
<div class='card-body'>
<div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
<h3 class='mb-1'>6/8</h3>
<p class='text-muted mb-0'>Courses Completed</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-success'>
<div class='card-body'>
<div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
<h3 class='mb-1'>24/28</h3>
<p class='text-muted mb-0'>Assignments Submitted</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-warning'>
<div class='card-body'>
<div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
<h3 class='mb-1'>48hrs</h3>
<p class='text-muted mb-0'>Study Time This Week</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-info'>
<div class='card-body'>
<div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
<h3 class='mb-1'>A- Average</h3>
<p class='text-muted mb-0'>Current GPA: 3.7</p>
</div>
</div>
</div>
</div>
<div class='row g-4'>
<div class='col-md-8'>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Current Courses</h5>
</div>
<div class='card-body p-0'>
<div class='list-group list-group-flush'>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Advanced Web Development</h6>
<small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 95%'></div>
</div>
<small class='text-muted'>95% Complete | Final Project Due: May 15</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Database Systems</h6>
<small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
</div>
<span class='badge bg-primary'>Grade: A-</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-primary' style='width: 88%'></div>
</div>
<small class='text-muted'>88% Complete | Midterm: April 28</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
<small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
</div>
<span class='badge bg-warning text-dark'>Grade: B+</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-warning' style='width: 75%'></div>
</div>
<small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Computer Networks</h6>
<small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 92%'></div>
</div>
<small class='text-muted'>92% Complete | Lab Exam: April 30</small>
</div>
</div>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card shadow-sm mb-3'>
<div class='card-header bg-warning text-dark'>
<h5 class='mb-0'>Upcoming Deadlines</h5>
</div>
<div class='card-body p-0'>
<ul class='list-group list-group-flush'>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-danger me-2'>Today</span>
<div class='flex-grow-1'>
<small><strong>AI Assignment 4</strong></small>
<br><small class='text-muted'>Neural Networks Lab</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-warning text-dark me-2'>Apr 28</span>
<div class='flex-grow-1'>
<small><strong>Database Midterm</strong></small>
<br><small class='text-muted'>Chapters 1-8</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-info me-2'>Apr 30</span>
<div class='flex-grow-1'>
<small><strong>Networks Lab Exam</strong></small>
<br><small class='text-muted'>Practical Assessment</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-primary me-2'>May 5</span>
<div class='flex-grow-1'>
<small><strong>AI Research Paper</strong></small>
<br><small class='text-muted'>15-20 pages</small>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-info text-white'>
<h5 class='mb-0'>Study Resources</h5>
</div>
<div class='card-body'>
<div class='d-grid gap-2'>
<button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
<button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
<button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
<button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");using IronPdf;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";
var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<div>
<h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
<p class='text-muted mb-0'>Spring Semester 2025</p>
</div>
<span class='badge bg-success fs-5'>92% Overall Progress</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-primary'>
<div class='card-body'>
<div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
<h3 class='mb-1'>6/8</h3>
<p class='text-muted mb-0'>Courses Completed</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-success'>
<div class='card-body'>
<div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
<h3 class='mb-1'>24/28</h3>
<p class='text-muted mb-0'>Assignments Submitted</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-warning'>
<div class='card-body'>
<div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
<h3 class='mb-1'>48hrs</h3>
<p class='text-muted mb-0'>Study Time This Week</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-info'>
<div class='card-body'>
<div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
<h3 class='mb-1'>A- Average</h3>
<p class='text-muted mb-0'>Current GPA: 3.7</p>
</div>
</div>
</div>
</div>
<div class='row g-4'>
<div class='col-md-8'>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Current Courses</h5>
</div>
<div class='card-body p-0'>
<div class='list-group list-group-flush'>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Advanced Web Development</h6>
<small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 95%'></div>
</div>
<small class='text-muted'>95% Complete | Final Project Due: May 15</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Database Systems</h6>
<small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
</div>
<span class='badge bg-primary'>Grade: A-</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-primary' style='width: 88%'></div>
</div>
<small class='text-muted'>88% Complete | Midterm: April 28</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
<small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
</div>
<span class='badge bg-warning text-dark'>Grade: B+</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-warning' style='width: 75%'></div>
</div>
<small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Computer Networks</h6>
<small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 92%'></div>
</div>
<small class='text-muted'>92% Complete | Lab Exam: April 30</small>
</div>
</div>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card shadow-sm mb-3'>
<div class='card-header bg-warning text-dark'>
<h5 class='mb-0'>Upcoming Deadlines</h5>
</div>
<div class='card-body p-0'>
<ul class='list-group list-group-flush'>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-danger me-2'>Today</span>
<div class='flex-grow-1'>
<small><strong>AI Assignment 4</strong></small>
<br><small class='text-muted'>Neural Networks Lab</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-warning text-dark me-2'>Apr 28</span>
<div class='flex-grow-1'>
<small><strong>Database Midterm</strong></small>
<br><small class='text-muted'>Chapters 1-8</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-info me-2'>Apr 30</span>
<div class='flex-grow-1'>
<small><strong>Networks Lab Exam</strong></small>
<br><small class='text-muted'>Practical Assessment</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-primary me-2'>May 5</span>
<div class='flex-grow-1'>
<small><strong>AI Research Paper</strong></small>
<br><small class='text-muted'>15-20 pages</small>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-info text-white'>
<h5 class='mb-0'>Study Resources</h5>
</div>
<div class='card-body'>
<div class='d-grid gap-2'>
<button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
<button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
<button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
<button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");出力: Bootstrap 5 のグリッド システム、カード コンポーネント、プログレス バー、バッジ、フレックスボックス レイアウト、リスト グループを備えたプロフェッショナルな学習管理システム PDF。すべてが完璧な間隔、タイポグラフィ、色の正確さでレンダリングされます。
PDFNet(Apryse):部分的なモダンCSSサポート
- 限定されたフレックスボックス実装: ブートストラップ4/5のフレックスベースのレイアウトは一貫してレンダリングされない場合があります
-フレックスボックスの実装が制限されている: Bootstrap 4/5 のフレックスベースのレイアウトでは、一貫性のないレンダリングが行われる可能性があります。 -部分的なCSSグリッドのサポート:グリッドベースのデザインではフォールバックが必要になることが多い
- JavaScript の制約:フルブラウザ環境に比べて実行が最小限 -フレームワークのテストが必要: Bootstrap コンポーネントは本番環境で使用する前に検証が必要です
開発への影響:チームは各 Bootstrap コンポーネントを個別にテストする必要があり、PDFNet 用に簡略化されたレイアウトや代替 CSS を作成することが多いため、複雑さが増し、デザインの一貫性が低下します。
包括的なBootstrapフレームワークガイダンスおよびモダンCSSレンダリング機能については、Bootstrap & Flexbox CSSガイドをご覧ください。
7. PDFファイルの印刷 (コードサンプル)
ここでは、両方のツールを使用してPDFファイルを印刷する方法について説明します。 ここでは、両方のツールを使用してPDFファイルを印刷する方法について説明します。
IronPDFは、コンピュータのデフォルトプリンタにPDFを送信することで印刷します。
Windowsの印刷インターフェイスで、プリントをクリックするだけでできます。 ### 7.2. PDFNetを使用してPDFファイルを印刷する
using IronPdf;
class PrintPDF
{
static void Main(string[] args)
{
// Create a new PDF and print it
var Renderer = new IronPdf.ChromePdfRenderer();
PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Send the PDF to the default printer to print
Pdf.Print(300, false);
}
}using IronPdf;
class PrintPDF
{
static void Main(string[] args)
{
// Create a new PDF and print it
var Renderer = new IronPdf.ChromePdfRenderer();
PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Send the PDF to the default printer to print
Pdf.Print(300, false);
}
}7.2. PDFNetを使用したPDFファイルの印刷
以下に、PDFNetでのPDFファイル印刷のソースコードスニペットを示します。 以下は、PDFNetでPDFファイルを印刷するためのソースコードスニペットです。
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Opening the input file...");
using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
{
pdfdoc.InitSecurityHandler();
Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
PrinterMode printerMode = new PrinterMode();
printerMode.SetAutoCenter(true);
printerMode.SetAutoRotate(true);
printerMode.SetCollation(true);
printerMode.SetCopyCount(1);
printerMode.SetDPI(300); // Set print quality to 300 DPI
printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
printerMode.SetOutputPageBorder(false);
printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
}
}
}
}using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Opening the input file...");
using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
{
pdfdoc.InitSecurityHandler();
Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
PrinterMode printerMode = new PrinterMode();
printerMode.SetAutoCenter(true);
printerMode.SetAutoRotate(true);
printerMode.SetCollation(true);
printerMode.SetCopyCount(1);
printerMode.SetDPI(300); // Set print quality to 300 DPI
printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
printerMode.SetOutputPageBorder(false);
printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
}
}
}
}両方のライブラリはHTMLからPDFへの変換機能を備えていますが、その方法は若干異なります。
8.1. IronPDFを使用してHTMLからPDFを作成する
IronPDFは、JSONや暗号化メカニズムを使用する必要はありません。
IronPDFはさまざまな方法をサポートしています。 #### HTMLファイルをPDFに 例えば:
HTMLファイルをPDFに
using IronPdf;
class HtmlToPdf
{
static void Main(string[] args)
{
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
}
}using IronPdf;
class HtmlToPdf
{
static void Main(string[] args)
{
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
}
}URLからPDFへ
using IronPdf;
class UrlToPdf
{
static void Main(string[] args)
{
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
}
}using IronPdf;
class UrlToPdf
{
static void Main(string[] args)
{
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
}
}
PDFNetもページ変換とURL変換の両方を使用したHTML-to-PDF変換機能を提供します。
コーディングが長いため、ここでは1つの例のみを示します。 コードが長いため、ここでは1つの例のみを示します。
class HTML2PDFSample
{
private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
static HTML2PDFSample() {}
static void Main(string[] args)
{
string output_path = "../../../../TestFiles/Output/html2pdf_example";
string host = "https://www.pdftron.com";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if (HTML2PDF.Convert(doc, host + "/"))
doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
else
Console.WriteLine("Conversion failed.");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
}
}
}class HTML2PDFSample
{
private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
static HTML2PDFSample() {}
static void Main(string[] args)
{
string output_path = "../../../../TestFiles/Output/html2pdf_example";
string host = "https://www.pdftron.com";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if (HTML2PDF.Convert(doc, host + "/"))
doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
else
Console.WriteLine("Conversion failed.");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
}
}
}
9. ライセンス
IronPDFは、無料の開発者ライセンスを提供するライブラリです。 IronPDFは特別な価格構造も提供しています:ライトパッケージは隠れたコストなしで$799から始まります。 SaaSおよびOEM製品を再配布することも可能です。 すべてのライセンスには30日間の返金保証、1年間のソフトウェアサポートとアップグレード、開発/テスト/ステージング/本番での有効性、および永続ライセンス(1回購入)が含まれます。 IronPDFのライセンスは、ユーザーのニーズに最大限のパフォーマンスを提供します。 このIronPDF ライセンスページにアクセスして、IronPDF の価格構造とライセンスを確認してください。

PDFTron PDFNet SDKには、ビジネスニーズに合わせたさまざまなライセンス選択肢があります。 3種類のライセンスがエンタープライズおよびOEM再配布に含まれています。 エンタープライズライセンスは組織の使用のみのものであり、アプリの配布には使用できません。 すべてのライセンスにはライセンスキーが付属しています。 3種類のライセンスは次のとおりです: ライセンスの種類は3つです:
- ビューア&注釈
- コアSDK ライセンス構造に関する詳細については、このPDFTronライセンス情報ページをご覧ください。
ライセンス構造に関する詳細は、こちらのPDFTronライセンス情報ページをご覧ください。
正確な価格に関しては、Microsoft の公式ウェブサイトを参照するか、Microsoft の営業担当者にお問い合わせください。
IronPDFはPDFファイルを処理し、さまざまな形式に変換するための多くの機能と機能性を提供しています。 その結果、クリアで高品質のPDFを受け取ることができます。 ライセンスおよび価格情報はウェブサイトで確認できます。 IronPDFと同様に、PDFNetはPDFファイルの移行、注釈、署名、記入、変換、編集を支援します。
Windows、iOS、Android、WEB、Linuxなど複数のプラットフォームをサポートしています。 プロダクションで使用するには、PDFNet SDKにはプロダクトキーが必要です。 IronPDFのライセンスは開発者中心であり、製品を使用する開発者の数に基づいてライセンスを取得する必要があります。
一方、PDFNetのライセンスは同じ方法では機能しません。代わりに機能ベースのライセンスで動作します。 これは、必要な機能をサポートするライセンスを取得する必要があることを意味します。 これは、必要な機能をサポートするライセンスを取得する必要があることを意味します。 PDFNetでは、一部の機能(例:ドキュメント変換)をアドオンとして購入する必要があります。 IronPDFライブラリは、組織化された機能を提供しており、数行のコードで大規模なタスクを実行するコードを書くのが容易です。
Iron Softwareは現在、2つの価格で5つのツールパッケージを提供しています。 Iron Softwareは現在、わずか2つの価格で5つのツールパッケージを提供しています。 - IronXL
このIron Suite情報ページを訪れてIron Suiteを探ることをお勧めします。
BRACKET-i-OPEN--PDFTronは各所有者の登録商標です。 このサイトは PDFTron と提携、承認、または後援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
よくある質問
記事で比較されている主なPDFライブラリは何ですか?
記事では、Iron Softwareによって開発されたIronPDFとPDFTronのPDFNetを比較し、.NET Framework内でのC#開発者向けの機能に焦点を当てています。
C# で HTML を PDF に変換するにはどうすればいいですか?
IronPDFのRenderHtmlAsPdfメソッドを使用して、HTML文字列をPDFに変換できます。さらに、IronPDFの強力なChromiumエンジンを使用して、HTMLファイルやURLをPDFに変換できます。
IronPDFはどのオペレーティングシステムをサポートしていますか?
IronPDFは、Windows、Azure、Dockerを含む複数のオペレーティングシステムをサポートし、多様な開発環境にシームレスに統合できます。
IronPDFはPDFデータ抽出をどのように処理しますか?
IronPDFは効率的なPDFデータ抽出を可能にし、開発者がPDFドキュメントからテキストや画像を容易に取得してさらなる処理を行えます。
IronPDFのインストールオプションにはどのようなものがありますか?
IronPDFは、Visual Studio NuGetパッケージマネージャー、Visual Studioのコマンドライン、またはNuGet Galleryから直接インストールでき、開発者による容易なセットアップを保証します。
IronPDFとPDFNetのライセンシングの違いは何ですか?
IronPDFはすべての機能を含む開発者向けライセンスを提供し、PDFNetライセンスは機能ベースで、特定の機能に追加購入が必要になる場合があります。
IronPDFは大型のPDFタスクに適していますか?
はい、IronPDFは使い勝手の良さと最小限のコード要件で評価されており、大型のPDFタスクを効率的に処理するのに適しています。
Iron Softwareスイートにはどのような追加ツールが含まれていますか?
Iron Softwareスイートには、IronBarcode、IronXL、IronOCR、IronPDF、およびIronWebscraperが含まれており、パッケージ取引として提供されているため、開発者にとっての魅力が高まります。






