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

ActivePDF vs IronPDF: HTMLからPDFへのチュートリアルと包括的な比較

IronPDFとActivePDFの.NETでのPDF生成の比較

開発者が.NETアプリケーションで強力なPDF生成機能を必要とする場合、IronPDFとActivePDFという重要なソリューションがしばしば浮かび上がります。 両ライブラリともPDFドキュメントの作成、変換、操作に強力な機能を提供しますが、そのアプローチ、価格設定、実装の複雑さに大きな違いがあります。

IronPDFは直感的なAPIデザインとChromeレンダリングエンジンを使用した包括的なHTML-to-PDF変換で際立っています。一方、ActivePDFは、HTML変換用のWebGrabberやドキュメント変換用のDocConverterなど、複数の特化したコンポーネントを通じてエンタープライズ向けのソリューションを提供しています。 この記事は、あなたがPDF処理のニーズに基づいた情報に基づく決定を行うのに役立つ詳細な比較を提供します。

class="product__comprehensive-comparison-table">
class="table-container">
class="table-number">製品比較概要
class="table-title">.NET開発のためのIronPDFとActivePDFの比較
カテゴリー 機能・観点 IronPDF ActivePDF 主な利点
コアアーキテクチャ デザイン哲学 オールインワンライブラリ、開発者に優しい モジュールコンポーネント、エンタープライズに焦点 IronPDF: 簡単な統合
APIの複雑さ RenderHtmlAsPdf()のような直感的なメソッド コンポーネントごとのAPI IronPDF: コード行数が少ない
学習曲線 1-2日通常 1-2週通常 IronPDF: 迅速な採用
プラットフォームサポート クロスプラットフォーム Windows、Linux、macOS、Docker 主にWindows Server IronPDF: 真のクロスプラットフォーム
.NETバージョン .NET 10, 9, 8, 7, 6, 5, Core, Framework 4.6.2+ .NET Framework 4.5+, Core 1.0, Standard 1.0 IronPDF: モダン.NETサポート
クラウドプラットフォーム Azure、AWS、Google Cloudに最適化 限定的なクラウドサポート IronPDF: クラウドネイティブ対応
HTML to PDF レンダリングエンジン Chrome V8エンジン ネイティブエンジン、IEエンジン IronPDF: モダンレンダリング
CSS3/HTML5サポート 完全サポート 部分的サポート IronPDF: モダンウェブ標準
JavaScriptの実行 完全なJavaScriptサポート 限定されたJavaScriptサポート IronPDF: ダイナミックなコンテンツ
Webフォント Googleフォント、システムフォント システムフォントのみ IronPDF: タイポグラフィ柔軟性
ドキュメント変換 サポートされる形式 HTML、DOCX、画像、RTF、MD 300+形式 (DocConverter) ActivePDF: より多くの形式
DOCX to PDF 組み込みDocxToPdfRenderer ネイティブオフィス変換 ActivePDF: より良い忠実度
バッチ処理 プログラム的アプローチ ウォッチドフォルダサポート ActivePDF: エンタープライズ自動化
パフォーマンス HTMLレンダリング速度 通常125ms、複雑835ms エンジンによって可変 IronPDF: 一貫したパフォーマンス
メモリ使用量 通常10MB未満 サービスベースのオーバーヘッド IronPDF: 低フットプリント
スレッドサポート ネイティブasync/await最適化 マルチスレッドサービス IronPDF: より良い.NET統合
PDF機能 フォーム処理 作成、記入、フラット化フォーム 高度なフォーム機能 (ツールキット) ActivePDF: 複雑なフォーム
PDF/A準拠 PDF/A-3Bサポート 複数のPDF/Aレベル ActivePDF: 追加の準拠オプション
OCR機能 IronOCR統合による 専用OCRコンポーネント 両方: 利用可能なソリューション
デジタル署名 統合、視覚的署名 高度な署名オプション ActivePDF: エンタープライズ署名
開発者の体験 ドキュメント 包括的なチュートリアル、例 従来のAPIドキュメント IronPDF: より良い学習資源
コードサンプル 100以上の準備完了サンプル GitHubの基本的なサンプル IronPDF: 豊富な資源
エラーメッセージ 記述的で実行可能 サービスレベルメッセージ IronPDF: より良いデバッグ
ライセンスと価格 エントリーレベル Lite: $799(1開発者、1プロジェクト) WebGrabber: コンポーネントごとに,499+ IronPDF: 70%低いエントリー
チームライセンス Professional: $2,399(10開発者) 複数のコンポーネントが必要 IronPDF: オールインクルーシブ
スイートオプション Iron Suite: $1,498(9製品) スイートオプションなし IronPDF: 卓越した価値
サポート サポート込み はい、24/5エンジニアリングサポート サポートポータルアクセス IronPDF: 直接的なエンジニアリングサポート
応答時間 24-48時間通常 問題によって異なる IronPDF: 予測可能なSLA
最適な用途 ユースケース 現代のウェブアプリ、迅速な開発 エンタープライズ自動化、レガシーシステム コンテキスト依存
プロジェクトタイプ SaaS、ウェブアプリ、マイクロサービス ドキュメント管理、バッチ処理 要件に基づく
class="table-note"> 注意。 比較は2025年の現行バージョンを基にしています。ActivePDFは特定のエンタープライズニーズに対してモジュールコンポーネントを提供し、IronPDFは統合ソリューションを提供します。ActivePDFの価格はコンポーネント選択に応じて大きく異なります。

class="learnn-how-section">
class="row">
class="col-sm-6">

IronPDFとActivePDFコンポーネントの比較

  • IronPDFのC# PDFライブラリを手に入れる
  • IronPDFとActivePDFの機能を比較する
  • URL to PDFのコードを比較する
  • HTML文字列をPDFに変換するコードを比較する
  • ライセンス、無償ソフトウェアオプションなどを比較する
class="col-sm-6">
class="download-card"> C# PDF チートシートをダウンロード

class="tutorial-segment-title">概観

IronPDF C#ライブラリについて

Iron Software is a market-leading component provider offering IronPDFを提供しています。 IronPDFは、さまざまな形式からPDFファイルを生成しつつ、ドキュメントプロパティをプログラム的に完全制御できるオールインクルーシブなソリューションを提供します。 開発者は、IronPDFの一貫した信頼性の高い出力と、最小限のコードで済む直感的なAPIを好みます。

IronPDFは、C#、VB.NET、ASP.NET、MVC、.NET Core、.NET 9、.NET 10をサポートしており、Windows、Linux、macOS、Docker、Azure、AWS、その他のクラウドプラットフォームでシームレスに動作します。

ActivePDFコンポーネントについて

ActivePDF(現在はApryseの一部)は、複数の専門コンポーネントを通じてエンタープライズ向けのPDFソリューションを提供しています。 IronPDFの統合アプローチとは異なり、ActivePDFは異なるPDFタスクごとに個別の製品を提供しています:

ActivePDF WebGrabberによるHTML to PDF変換

ActivePDF WebGrabberは特にHTMLソース(URL、HTMLファイル、またはHTML文字列)をPDF形式に変換するために設計されています。 ヘッダー、フッター、余白、透かし、ブックマークを含むページプロパティの設定オプションを提供します。 WebGrabberは、ネイティブおよびInternet Explorerレンダリングエンジンの両方をサポートしています。

ActivePDF DocConverterによるドキュメント変換

ActivePDF DocConverterは、Microsoft Officeドキュメント、画像、CADファイルなど300を超えるファイル形式をPDFに変換します。 監視フォルダの自動化、バッチ処理機能、エンタープライズグレードのドキュメント管理機能を特徴としています。

現代のCSSフレームワークレンダリング:Bootstrapとそれ以降

現代のウェブアプリケーションは、レスポンシブなUI開発を保証するために、Bootstrap、Foundation、Tailwind CSSなどのCSSフレームワークにますます依存しています。 PDF生成ライブラリは、プロフェッショナルなドキュメントの品質とデザインの忠実性を維持するために、これらのフレームワークを正確にレンダリングできる必要があります。

IronPDF: 完全なBootstrapと現代のフレームワーク対応

IronPDFのChromiumレンダリングエンジンは、すべての現代的なCSSフレームワークと仕様を完全にサポートしています:

  • Bootstrap 5: フレックスボックスとCSSグリッドの完全なレンダリングとレスポンシブユーティリティ
  • Bootstrap 4: 完全なカードシステム、ナビゲーションコンポーネント、およびフォームレイアウト
  • Tailwind CSS: すべてのユーティリティファーストクラスとレスポンシブバリアントが正しくレンダリングされます
  • Foundation: 完全なグリッドとコンポーネントシステムのサポート
  • 現代のCSS3: フレックスボックス、CSSグリッド、カスタムプロパティ、アニメーション、トランジション、トランスフォーム
  • JavaScriptの実行: 動的コンテンツおよびフレームワークの対話性の完全サポート

Validated with production examples: Bootstrap homepage and official templates convert with browser-accurate fidelity.

コード例: Bootstrapによるサービス料金表

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

出力: Bootstrapのカードグリッド、フレックスボックスレイアウト、バッジ位置、レスポンシブユーティリティを備えたプロフェッショナルな料金表—すべてPDFで正確に保存されています。

ActivePDF WebGrabber: 限定的なモダンフレームワーク対応

ActivePDF WebGrabberはHTML-to-PDF変換を提供しますが、現代的なCSSフレームワークにはかなりの制限がある古いレンダリングエンジンを使用しています:

  • ネイティブエンジン: カスタムレンダリングでCSS3サポートが限定的
  • Internet Explorerエンジン: レガシーIEレンダリング、モダンCSS機能なし
  • Bootstrap 4/5サポートなし: フレックスボックスとCSSグリッドの機能はサポートされていません
  • Bootstrap 3の制限: テーブルベースのレイアウトのみが信頼性がある
  • JavaScriptの制限: 現代のブラウザと比較してJavaScriptの実行が限定的
  • ワークアラウンドが必要: 複雑なBootstrapコンポーネントは多くのCSSの修正が必要

開発者から報告された一般的な問題:

  • レイアウト問題を伴ってレンダリングされるBootstrapナビゲーションバー
  • フレックスボックスを使用したカードコンポーネントが正しく表示されない
  • PDF出力で壊れるレスポンシブグリッドシステム
  • 互換性のためにBootstrapコンポーネントを簡素化または書き直す必要がある

開発への影響: 現代のBootstrapバージョン(4+)を使用して構築されたアプリケーションは、ActivePDF WebGrabberを使用すると大量の追加作業が必要になる。 チームは次のいずれかを行う必要があります:

  1. PDF生成用に簡略化されたCSSを並行して維持する(二重のメンテナンス負担)
  2. ウェブUIをBootstrap 3またはより古いバージョンに制限する(現代的なレスポンシブ機能を犠牲にする)
  3. それぞれのBootstrapコンポーネントを手動でテストし修正する(時間がかかり誤りが生じやすい)

BootstrapまたはモダンなCSSフレームワークに大きく依存しているプロジェクトでは、Active PDF WebGrabberのレンダリングの制限により、開発コストが大幅に増加し、デザインの柔軟性が損なわれる可能性があります。

包括的なBootstrapフレームワークの互換性についてのガイダンスについては、Bootstrap & Flexbox CSSガイドをご覧ください。

開発者はなぜIronPDFをActivePDFより選ぶのか?

IronPDFのレンダリング速度は、静的サイトでのHTML-to-PDF変換を835ミリ秒で完了し、異なるコンテンツタイプにわたる一貫したパフォーマンスを提供します。このライブラリのメモリ使用量は、通常10MB未満で、ヘッダーとフッターをレンダリングする際にメモリ使用量を75%削減しています。

開発者は、ActivePDFのより複雑なマルチステッププロセスと比べて、IronPDFの簡潔なAPI設計がPDF生成をわずか3行のコードで可能にすることを評価しています。 包括的なドキュメントには100以上のコードサンプルと詳細なチュートリアルが含まれており、チームが迅速に始めるのが容易です。

ActivePDFがより良い選択肢となる場合は?

ActivePDFは以下を必要とするエンタープライズ環境で優れています:

  • ウォッチドフォルダーを使用した自動化バッチ処理
  • 300+のファイル形式のサポート(DocConverter経由)
  • Windows Serverでのレガシーシステム統合
  • 高度なフォームフィールド操作とXFAフォームサポート
  • アーカイブ要件のための複数のPDF/A準拠レベル

既存のActivePDFインフラストラクチャまたは特定のエンタープライズワークフロー要件を持つ組織は、ActivePDFのモジュールアプローチを高いコストと複雑さにもかかわらず有益だと感じることがあります。


class="tutorial-segment-title">比較

  1. ActivePDF vs IronPDF 機能比較

どのライブラリがより優れたHTML to PDF変換機能を提供しているか?

IronPDFは、完全なChrome V8レンダリングエンジンを使用し、HTML5、CSS3、JavaScript、ウェブフォントに対して98%以上のブラウザ忠実性を提供します。 ActivePDF WebGrabberはネイティブおよびInternet Explorerエンジンを提供しますが、JavaScriptの実行とCSS3サポートが制限されています。 ネイティブエンジンはCSSスタイルシートを尊重せず、IEエンジンはもうサポートされていないInternet Explorer 11に依存しており、現代のウェブ標準が欠けています。

ドキュメント形式のサポートについてのライブラリの比較

IronPDFが一般的な形式(HTML、DOCX、画像、RTF、Markdown)に焦点を当てている一方で、ActivePDF DocConverterは、CADファイル、レガシードキュメント形式、および特化したエンタープライズ形式を含む300以上のファイル形式をサポートしています。 これにより、ActivePDFは多様なドキュメントタイプを扱う組織にとってより適しています。

PDFの操作機能についてはどうか?

両ライブラリとも包括的なPDF操作機能を提供しています:

IronPDFが提供するもの:

  • HTML/CSSスタイリングによる組み込み透かし
  • 既定のマージフィールド付きヘッダー/フッター用の簡易API
  • 一行コードメソッドでの一般的なタスク
  • 統合されたフォーム作成と記入
  • 視覚的表現を伴うデジタル署名

ActivePDFが提供するもの:

  • 高度なフォームフィールド操作(ツールキット経由)
  • PDF内部のより詳細な制御
  • エンタープライズグレードの編集機能
  • 複数のPDF/A準拠レベル
  • 特定のタスク向けの専門コンポーネント

class="tutorial-segment-title">ステップ1: インストール

  1. IronPDFのインストール方法

IronPDFのインストール方法はどれを選べばよいか?

IronPDFをインストールする方法は複数あり、NuGetパッケージマネージャが最も便利です:

NuGetパッケージマネージャ

Visual StudioでNuGetパッケージマネージャを開き、IronPDFを検索します:

:InstallCmd
:InstallCmd
SHELL

IronPDF.dllを手動でダウンロードする

あるいは、IronPDF.dllをダウンロードし、プロジェクトにその参照を追加します。

インストール後、次を追加してアクセスを検証します:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

IronPDFは.NET 9および10と、Core、Standard、Framework 4.6.2+を含むすべてのモダン.NETバージョンをサポートしています。


ActivePDFコンポーネントのインストール方法

ActivePDF WebGrabberをインストールするにはどうすればよいか?

ActivePDF WebGrabberはより複雑なインストールプロセスを必要とします:

  1. ActivePDFのウェブサイトからインストーラーをダウンロードする
  2. ActivePDFの営業からライセンスキーをリクエストする(評価キーも利用可能)
  3. 管理者権限でインストーラを実行
  4. インストール中にWebGrabberサービスを設定
  5. Windows Server 2012 以降の場合、サービス用の専用ユーザーアカウントを作成

インストール後、以下からWebGrabberの参照を追加します: C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll

ActivePDF DocConverterをインストールするにはどうすればよいか?

DocConverterは同様のインストールパターンに従います:

  1. DocConverterのインストーラーをダウンロードする
  2. 管理者権限でインストール
  3. ドラッグアンドドロップ変換を使用する場合、監視フォルダを設定
  4. バッチ処理のための構成マネージャを設定

注意: ActivePDFコンポーネントはWindows Serverが必要で、IronPDFのようなクロスプラットフォーム展開をサポートしていません。


class="tutorial-segment-title">ハウツーチュートリアル

  1. HTML文字列をPDFファイルに変換

両ライブラリが共通のタスクにどのように対処するかを比較してみましょう: HTML文字列をPDFファイルに変換。

3.1. IronPDFでのHTML文字列

/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
'''
''' * HTML String to PDF
''' * anchor-html-string-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> "

	' Convert HTML string to PDF file
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Save the file
	pdf.SaveAs("E:/sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDFのアプローチの主な利点:

  • 変換に必要なコードはわずか3行
  • エンコーディングとレンダリングの自動ハンドリング
  • Chromeエンジンビルトインにより正確なレンダリングを保証
  • 別々のファイルパスと名前の設定不要

3.2. ActivePDF WebGrabberでのHTML文字列

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>"

	' Assign source HTML to WebGrabber
	wg.CreateFromHTMLText = html

	' Specify file directory
	wg.OutputDirectory = "E:/"

	' File name
	wg.NewDocumentName = "sample.pdf"

	' Convert source HTML to PDF file
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

3.3. 両ライブラリによる高度なHTML文字列の例

両ライブラリがCSSスタイリングを含むより複雑なHTMLをどのように処理するかを見てみましょう:

IronPDF高度な例:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()

' Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim advancedHtml As String = "
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>"

Dim pdf = renderer.RenderHtmlAsPdf(advancedHtml)
pdf.SaveAs("advanced-invoice.pdf")
$vbLabelText   $csharpLabel

ChromePdfRendererクラスは、CSSメディアタイプの選択、背景レンダリング、HTML入力要素からのフォームフィールド自動作成を含むレンダリングプロセスに対する広範な制御を提供します。


  1. HTMLファイルをPDFファイルに変換

4.1. IronPDFでのHTMLファイル

/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * HTML File to PDF
''' * anchor-html-file-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' Render HTML file to PDF
	Dim pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html")

	' Save to target location
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDFは自動的に処理します:

  • 外部CSSおよびJavaScriptファイル
  • 画像参照
  • フォントの読み込み
  • 相対パスの解決

4.2. ActivePDF WebGrabberでのHTMLファイル

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' Specify file path to be converted
	wg.URL = "E:/myHtmlFile.html"

	' Specify the directory for newly generated file
	wg.OutputDirectory = "E:/"

	' Newly generated file name
	wg.NewDocumentName = "Sample.pdf"

	' Convert HTML file to PDF
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

ActivePDF WebGrabberはローカルファイルに“URL”プロパティを使用するため、開発者がファイル固有のメソッドを期待する場合、混乱を招く可能性があります。


  1. URLをPDFファイルに変換

5.1. IronPDFでのURL

/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * URL to PDF
''' * anchor-url-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' Specify URL
	Dim pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")

	' Save the file
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

5.2. IronPDFでの非同期 URL変換

IronPDFは優れた非同期サポートを提供し、より良いパフォーマンスを実現します:

using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("https://complex-spa.com");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("https://complex-spa.com");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
Imports IronPdf
Imports System.Threading.Tasks

Shared Async Function Main(ByVal args() As String) As Task
	Dim renderer = New ChromePdfRenderer()

	' Configure for complex pages
	renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
	renderer.RenderingOptions.WaitFor.JavaScript(1500) ' Wait for JS

	' Async conversion
	Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://complex-spa.com")
	Await pdf.SaveAsAsync("E:/async-sample.pdf")
End Function
$vbLabelText   $csharpLabel

WaitForクラスは、特定の要素、ネットワークアイドル状態、またはカスタムJavaScriptイベントを待機するなど、レンダリングタイミングを正確に制御します。 5.3. ActivePDF WebGrabberでのURL

  1. PDFに透かしを作成する
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "https://www.example.com/";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "https://www.example.com/";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' Specify URL 
	wg.URL = "https://www.example.com/"

	' Specify the directory for newly generated file
	wg.OutputDirectory = "E:/"

	' Specify file name
	wg.NewDocumentName = "Sample.pdf"

	' Set timeout for conversion
	wg.TimeoutSpan = New TimeSpan(0, 0, 30)

	' Convert specified URL webpage to PDF
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

6.1. IronPDFでの透かし

IronPDFはHTML/CSSを通じて柔軟な透かしを提供します:

IronPDFでの高度な透かし:

/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * Watermark PDF
''' * anchor-watermark-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Source HTML string
	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"

	' Create PDF
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Apply watermark with HTML/CSS
	pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", rotation:= 30, opacity:= 50)

	' Save the document
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

6.2. ActivePDF WebGrabberでの透かし

// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    </div>";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    </div>";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
' Image watermark
pdf.ApplyWatermark($"<img src='logo.png' style='width:200px'>", rotation:= 0, opacity:= 30, verticalAlignment:= VerticalAlignment.Middle)

' Complex HTML watermark with positioning
Dim complexWatermark As String = "
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " & DateTime.Now.ToString() & "</p>
    </div>"

pdf.ApplyWatermark(complexWatermark, rotation:= 45, opacity:= 25)
$vbLabelText   $csharpLabel

ActivePDFは文字スタンプをワークアラウンドとして使用することを要求します:

ActivePDFのアプローチはテキストのみの透かしに限定され、手動での位置計算が必要です。

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"
	wg.CreateFromHTMLText = html

	' Add text stamp as watermark
	wg.AddStampText(270.0F, 350.0F, "WaterMark")

	' Configure stamp appearance
	wg.StampFontSize = 20
	wg.StampFont = "Times New Roman"
	wg.StampFontTransparency = 1F
	wg.StampRotation = 45.0F
	wg.StampColorNET = New ADK.PDF.Color() With {
		.Red = 255,
		.Green = 0,
		.Blue = 0,
		.Gray = 0
	}

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel
  1. PDFのヘッダーとフッターを設定する

7.1. IronPDFでのヘッダーとフッター

IronPDFはシンプルなテキストと複雑なHTML両方のヘッダー/フッターを提供します:

HTMLを使用したより複雑なヘッダー/フッターの場合:

/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
'''
''' * Set Header Footers
''' * anchor-headers-and-footers-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Configure text header/footer
	renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.LeftText = "Company Name",
		.CenterText = "{page} of {total-pages}",
		.RightText = "{date} {time}",
		.DrawDividerLine = True,
		.FontSize = 12,
		.FontFamily = "Arial"
	}

	renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.CenterText = "Copyright © 2025",
		.RightText = "Page {page}",
		.FontSize = 10
	}

	' HTML content
	Dim html As String = "<h1>Document Content</h1><p>Lorem ipsum...</p>"
	Dim pdf = renderer.RenderHtmlAsPdf(html)
	pdf.SaveAs("E:/document.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDFが提供する既定のマージフィールドには以下が含まれます:

// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
    Height = 50
};
// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
    Height = 50
};
' HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
	.HtmlFragment = "
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
	.Height = 50
}
$vbLabelText   $csharpLabel
  • {page} - 現在のページ番号

  • {total-pages} - 合計ページ数
  • {url} - ソースURL(該当する場合)
  • {date} - 現在の日付
  • {time} - 現在の時間
  • {html-title} - HTMLドキュメントのタイトル
  • {pdf-title} - PDFメタデータのタイトル 7.2. ActivePDF WebGrabberでのヘッダーとフッター

注意: ActivePDFは独自のプレースホルダ(%cp% 現在のページ、%tp% 総ページ数)を使用し、手動でのHTML構築を必要とします。

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text</div>";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text</div>";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center;'>Page Content</h1>"
	wg.CreateFromHTMLText = html

	' Configure header
	wg.HeaderHeight = 0.5F
	wg.HeaderHTML = "<div style='float: left;'>Header Text</div>"
	wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>"

	' Configure footer
	wg.FooterHeight = 0.5F
	wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>"

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel
  1. 高度なPDF機能の比較

8.1. PDFフォーム作成と操作

IronPDF フォームの例

ActivePDF Toolkit フォームの例

using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
Imports IronPdf

' Create a PDF with form fields
Private renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim formHtml As String = "
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>"

Dim pdf = renderer.RenderHtmlAsPdf(formHtml)

' Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe"
pdf.Form.FindFormField("email").Value = "john@example.com"
pdf.Form.FindFormField("subscribe").Value = "Yes"

pdf.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

8.2. PDF/A準拠

// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
' ActivePDF requires separate Toolkit component for forms
Dim toolkit As New APToolkitNET.Toolkit()

' Open existing PDF
toolkit.OpenInputFile("form-template.pdf")

' Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997)
toolkit.SetFormFieldData("email", "john@example.com", -997)

' Save filled form
toolkit.CopyForm(0, 0)
toolkit.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

両ライブラリはPDF/Aをサポートしていますが、アプローチが異なります:

IronPDF PDF/A

ActivePDF DocConverter PDF/A

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
Imports IronPdf

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>")

' Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B)
$vbLabelText   $csharpLabel

8.3. デジタル署名

// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
' Requires DocConverter component
Dim dc As New DocConverter()
dc.SetPDFACompliance(PDFACompliance.PDFA2B)
dc.ConvertToPDF("input.html", "output.pdf")
$vbLabelText   $csharpLabel

IronPDF デジタル署名

8.4. バッチ処理の比較

using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Load or create PDF
Private pdf = PdfDocument.FromFile("document.pdf")

' Create signature with certificate
Private signature = New PdfSignature("certificate.pfx", "password")

' Configure signature appearance
signature.SignatureImage = New PdfSignatureImage("signature.png")
signature.SigningContact = "john@company.com"
signature.SigningReason = "Document Approval"

' Apply signature
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

ActivePDF DocConverter バッチ処理

IronPDFのバッチ処理

using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.IO

Shared Async Function BatchConvertAsync() As Task
	Dim renderer = New ChromePdfRenderer()
	Dim tasks = New List(Of Task)()

	For Each file In Directory.GetFiles("input", "*.html")
		tasks.Add(Task.Run(Async Function()
			Dim pdf = Await renderer.RenderHtmlFileAsPdfAsync(file)
			Dim outputPath = Path.Combine("output", Path.GetFileNameWithoutExtension(file) & ".pdf")
			Await pdf.SaveAsAsync(outputPath)
		End Function))
	Next file

	Await Task.WhenAll(tasks)
End Function
$vbLabelText   $csharpLabel
  1. パフォーマンスとリソースの比較
// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
' DocConverter supports watched folders for automatic conversion
Dim dc As New DocConverter()

' Configure watched folder
dc.AddWatchedFolder("C:\Input", "C:\Output", "*.html")
dc.StartWatching()

' Files dropped in the input folder are automatically converted
$vbLabelText   $csharpLabel

ライブラリのパフォーマンスはどう比較されるか?

ベンチマークテストおよび実世界の使用に基づいて:

IronPDF パフォーマンスメトリクス

  • HTMLレンダリング: 単純なコンテンツで約125ms

  • 複雑なサイト: 835ms(静的ウェブサイトでのテスト)
  • メモリ使用量: 通常10MB未満
  • 初期起動: 2-3秒(Chromeエンジン初期化)
  • ヘッダー/フッターでのメモリ使用量75%削減
  • 大型ドキュメントの読み込み時間を80%短縮 ActivePDF パフォーマンス特性

  • 選択したレンダリングエンジンに基づいて可変

  • ネイティブエンジン: 単純なHTMLで高速
  • IEエンジン: より低速だがレガシーコンテンツとの互換性がより高い
  • サービスベースのアーキテクチャがオーバーヘッドを追加
  • バッチ処理シナリオにより適している メモリ管理のベストプラクティス

IronPDF メモリ最適化

ActivePDF メモリ考慮点

// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
' Dispose of resources properly
Using renderer = New ChromePdfRenderer()
	Using pdf = renderer.RenderHtmlAsPdf(html)
		pdf.SaveAs("output.pdf")
	End Using
End Using

' For large documents, use streaming
Await pdf.Stream.CopyToAsync(fileStream)
$vbLabelText   $csharpLabel
  • サービスベースのアーキテクチャはメモリ使用量を隔離

  • 変換間の自動クリーンアップ
  • Windowsでのサービスメモリリミットを設定
    1. ActivePDFコンポーネントの概要

他にどのようなActivePDFコンポーネントが利用可能か?

What other ActivePDF components are available?

コンポーネント 目的と特徴
ActivePDF DocConverter 300以上のファイルタイプをPDFに変換します。監視フォルダー、バッチ処理、エンタープライズ自動化機能を備えています。
ActivePDF WebGrabber URL、ファイル、HTML文字列対応のHTMLからPDFへの変換。ネイティブおよびIEレンダリングエンジンを含みます。
ActivePDF Toolkit フォーム、注釈、セキュリティ、低レベルのPDF操作を含む高度なPDF操作。
ActivePDF Server ネットワーク環境向けのサーバーベースのPDF印刷ソリューション。
ActivePDF Meridian ユーザーごとの料金なしで文書をPDFに印刷するためのネットワークPDFプリンター。
ActivePDF OCR スキャンされたPDFを検索可能にするための光学文字認識。
ActivePDF Xtractor データ処理のためにPDFファイルからテキストと画像を抽出します。
ActivePDF Redactor PDFドキュメントから機密情報を永久に削除します。

ご注意これらのコンポーネントの多くは別のライセンスを必要とし、包括的なPDF機能の総費用を増加させます。


11. ライセンスおよび価格比較

IronPDFとActivePDFのライセンス費用の比較はどうなっていますか?

IronPDFのライセンス (2025年時点の透明な価格設定)

  • Lite License: $799 (1開発者、1場所、1プロジェクト)
  • Plus License: $1,199 (3開発者、3場所、3プロジェクト)
  • Professional License: $2,399 (10開発者、10場所、10プロジェクト)
  • Unlimited License: カスタム価格(無制限の開発者/プロジェクト)
  • Iron Suite: $1,498 (全10のIron Software製品)

ActivePDFのライセンス (コンポーネントごと)

  • WebGrabber: $2,499から(一回払い)
  • DocConverter: $2,999から(一回払い)
  • Toolkit: $1,500 +(機能に応じて変動)
  • サポート: プレミアムサポートに追加費用
  • 複数コンポーネント: 費用が急速に増加

所有コスト合計の例

シナリオ: 小規模開発チーム(3開発者)

  • IronPDF Plus License: $1,499(すべての機能を含む)
  • ActivePDF WebGrabber + DocConverter: 最低$5,498
  • IronPDFでの節約: 73%

シナリオ: エンタープライズチーム(10開発者)

  • IronPDF Professional: $2,999(すべての機能を含む)
  • ActivePDF Suite(複数コンポーネント): $10,000以上
  • IronPDFでの節約: 70%以上

12. サポートとドキュメンテーション

どちらのライブラリがより優れた開発者サポートを提供していますか?

IronPDFのサポート

  • すべてのライセンスに24/5のエンジニアリングサポートが含まれている
  • 開発チームとの直接アクセス
  • 100以上の例を含む包括的なドキュメンテーション
  • アクティブなコミュニティとフォーラム
  • 定期的な更新と改善
  • 応答時間:通常24-48時間

ActivePDFのサポート

  • サポートポータルアクセス
  • ナレッジベース記事
  • コミュニティフォーラム
  • 追加費用でプレミアムサポートを利用可能
  • 旧バージョン用のレガシードキュメンテーション

結論: どのPDFライブラリを選ぶべきか?

IronPDFを選ぶべき時:

  • 最新の.NET開発: .NET 9/10とクロスプラットフォーム展開を完全サポート
  • 迅速な開発: 直感的なAPIでコードが最小限
  • Webアプリケーション: Chromeエンジンによる優れたHTML/CSS/JavaScriptのレンダリング
  • クラウド展開: Azure、AWS、コンテナ環境に最適化
  • 予算重視: すべての機能を含む低いエントリーコスト
  • 学習曲線: 採用を迅速に進めるための豊富なドキュメンテーションと例

ActivePDFを選ぶべき時:

  • レガシーシステム: 既存のActivePDFインフラストラクチャまたはWindows Server環境
  • 多様なファイルフォーマット: 300以上のファイルタイプをPDFに変換する必要がある場合
  • エンタープライズワークフロー: 監視フォルダーと自動バッチ処理
  • 高度なフォーム: 複雑なXFAフォームや特殊なフォーム要件
  • コンプライアンス要件: 特定の業界向けの複数のPDF/Aレベル

最終的な推奨事項

ほとんどの最新の.NET開発シナリオでは、IronPDFが機能、性能、価値の最良の組み合わせを提供します。 その直感的なAPI、包括的なドキュメンテーション、および透明性のある価格設定により、PDF機能を迅速かつ効率的に実装したいチームに最適です。

ActivePDFはファイルフォーマットサポートやレガシーシステム統合、または既存ActivePDFインフラストラクチャの特定の要件を持つ企業にとっては依然として妥当な選択肢です。 しかし、モジュラープライシングモデルと複雑なインストールプロセスは、小規模チームや新しいプロジェクトにとって課題になる可能性があります。

始める準備はできましたか?

今日あなたのプロジェクトでIronPDFを無料トライアルで使用開始。

最初のステップ:
green arrow pointer

ご注意ActivePDFはその所有者の登録商標です。
このサイトはActivePDFとは提携しておらず、承認または支援を受けていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。)}]

よくある質問

IronPDFとActivePDFは.NETでのPDF生成においてどのように比較されますか?

IronPDFはChromeベースのレンダリングエンジンと直感的なAPIを使用し、.NET 9および10を含む最新の.NETバージョンをサポートすることでPDF生成を効率化します。ActivePDFはエンタープライズシナリオ向けにWebGrabberやDocConverterのようなモジュールコンポーネントを提供しますが、より多くの設定が必要です。

C#を使用してHTMLをPDFに変換する方法は?

IronPDFのRenderHtmlAsPdfメソッドを使用して、HTML文字列を迅速にPDFに変換できます。ファイルベースの変換には、RenderHtmlFileAsPdfメソッドが利用可能で、両者ともCSS3およびJavaScriptのサポートによって高い忠実度を提供します。

IronPDFのパフォーマンスベンチマークは何ですか?

IronPDFは高速なHTMLからPDFへのレンダリングを示し、タスクを約125-835msで完了し、メモリ使用量は10MB未満です。また、ヘッダーとフッターのメモリおよび処理の改善を提供します。

IronPDFでバッチPDF処理を自動化できますか?

はい、IronPDFは非同期対応を通じたバッチ処理をサポートしており、RenderHtmlFileAsPdfAsyncメソッドのようなものを使用して複数のPDF変換を同時に処理できます。

IronPDFはPDF内のデジタル署名をどのように扱いますか?

IronPDFはPDFドキュメントにデジタル署名を追加するためのPdfSignatureクラスを提供します。証明書ベースの署名をサポートし、署名の外観やメタデータのカスタマイズを可能にします。

IronPDFを.NET開発で使用する際のコストはどのような考慮事項がありますか?

IronPDFライセンスは単一の開発者向けに$749から始まり、すべての機能が含まれます。対照的に、ActivePDFコンポーネントは別途価格設定されており、同様の機能の場合には総コストがより高くなります。

IronPDFはクロスプラットフォーム互換性をどう確保しますか?

IronPDFは、Windows、Linux、macOS、Docker環境を含むクロスプラットフォーム展開をサポートしており、多様な開発ニーズやクラウドベースのアプリケーションに適しています。

IronPDFを使用してPDFにヘッダーとフッターを追加する方法は?

IronPDFはTextHeaderFooterHtmlHeaderFooterクラスを提供し、シンプルなテキストと複雑なHTML/CSSレイアウトの両方でヘッダーとフッターを追加できるようにします。

IronPDFは最新の.NETバージョンとどのように統合しますか?

IronPDFは、.NET 9および10だけでなく、.NET Core、.NET Standard、および.NET Framework 4.6.2+を完全にサポートしており、広範な互換性と将来の開発に対応しています。

PDF変換中にJavaScriptの実行はサポートされていますか?

はい、IronPDFはPDFをレンダリングする前にJavaScriptを完全に実行し、WaitFor.JavaScript()RenderDelay()を使ってタイミングを制御するオプションを提供し、完全で正確な変換を保証します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。