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

IronPDF vs PDFTron (Apryse): 2025年の完全なC# PDFライブラリ比較

.NET プロジェクトに適した PDF ライブラリをお探しですか? IronPDF と PDFTron (現 Apryse) の包括的な比較では、機能、価格、パフォーマンス、開発者エクスペリエンスを分析し、情報に基づいた決定を下せるよう支援します。 Web アプリケーション、デスクトップ ソフトウェア、クラウド サービスなどを構築する場合でも、適切な PDF ツールキットを選択すると、開発速度とプロジェクトの成功に大きな影響を与える可能性があります。

簡単な比較概要

カテゴリ 特徴/側面 IronPDF PDFTron(アプリセ) 主な利点:以下のとおりです。
コアアーキテクチャ デザイン哲学 シンプルさを第一に考えたChrome V8エンジン エンタープライズ向けカスタムエンジン IronPDF: より速い開発
APIの複雑さ RenderHtmlAsPdf() のような単純なメソッドです。 IronPDF: コードが70%削減
学習曲線 通常1~2日 通常1~2週間 IronPDF: より迅速な導入
プラットフォームサポート クロスプラットフォーム ネイティブサポート、単一パッケージ 複数のパッケージ/モジュールが必要 IronPDF: よりシンプルな導入
.NETバージョン .NET 10、9、8、7、6、5、Core 3.1 以上、Framework 4.6.2 以上 追加のセットアップによる同様のサポート 両方: 最新のフレームワークのサポート
HTMLからPDFへ レンダリングエンジン フルクロームV8エンジン カスタムエンジン(HTML2PDFモジュール経由) IronPDF: 98%以上のブラウザ忠実度
JavaScriptサポート レンダリング遅延を完全サポート 限定的なサポート IronPDF: 動的コンテンツ対応
MS Office サポート DOCXからPDF 組み込みの DocxToPdfRenderer PDFTron: より優れたオフィスの忠実性
CADサポート 利用不可 DWG、DXF、DGNからPDFへ PDFTron: CADワークフロー
パフォーマンス HTMLレンダリング速度 通常 0.8~1.2 秒 (Chrome エンジン) 通常 0.3~0.5 秒(シンプルな HTML) PDFTron: 基本的なHTMLの高速化
メモリ使用量 150~200MB(Chromeプロセス) 通常80~120MB PDFTron: メモリフットプリントの削減
Licensing & Pricing エントリーレベル Lite: $799 (1 dev, 1 project) カスタム見積もり(推定 5,000~10,000ドル以上) IronPDF: 透明な価格設定
エンタープライズ Professional: $2,399 (10 devs) カスタム見積もり(推定30,000ドル以上) IronPDF: 最大90%のコスト削減
サポート サポートが含まれています はい、24時間365日のエンジニアリングサポート ライセンスレベルによって異なります IronPDF: サポートが含まれています
最適な対象 使用例 最新のウェブアプリ、HTMLレポート、迅速な開発 ドキュメント中心のワークフロー、CAD/Office変換 文脈依存

IronPDF と PDFTron (Apryse) とは何ですか?

IronPDFの概要

IronPDF は、開発者にとって PDF の作成、編集、操作を簡素化する包括的な .NET PDF ライブラリです。 Chrome レンダリング エンジン上に構築されており、HTML、CSS、JavaScript をピクセルパーフェクトな PDF ドキュメントに変換するのに優れています。 ライブラリのわかりやすい API 設計により、開発者は最小限のコードで PDF 機能を統合できるため、Web アプリケーション、レポート システム、ドキュメント自動化に最適です。

PDFTron(Apryse)の概要

PDFTron は、2023 年 2 月に Apryse としてブランド名を変更し、広範なドキュメント処理機能を提供するエンタープライズ向けの PDF SDK です。 もともと複雑なドキュメントワークフロー向けに開発されたこのツールは、Microsoft Office、CAD図面、特殊なドキュメントタイプなど、様々なファイル形式を強力にサポートしています。ドキュメント処理技術の世界的リーダーであるPDFTron Systems Inc.は、Apryseへのブランド変更を発表しました。 iText、Windward、Eversign など 13 社が参加します。

PDF 生成用の ASP.NET プロジェクトを作成するにはどうすればよいですか?

PDF 生成用に ASP.NET プロジェクトを設定するには、選択したライブラリに関係なく適切な構成が必要です。 IronPDF または PDFTron の統合の基盤を作成するには、次の手順に従います。

  1. Visual Studio 2022以降を開きます 2."新しいプロジェクトを作成"をクリックします
  2. "ASP.NET Core Web アプリ"を選択します(.NET 6.0 以降を推奨)
  3. プロジェクト名と場所を選択する
  4. ニーズに応じて"Webアプリケーション(モデル・ビュー・コントローラ)"または"Web API"を選択します。
  5. 最適な互換性を確保するには、".NET 8.0"以降が選択されていることを確認してください。

! Visual Studio の新規プロジェクトダイアログに ASP.NET Core Web アプリの選択が表示されている PDF ライブラリ統合用の ASP.NET プロジェクト テンプレートが表示された Visual Studio の [新しいプロジェクト] ダイアログ ボックス

Web フォーム アプリケーションの場合:

  • "ASP.NET Web アプリケーション (.NET Framework)"を選択します。
  • テンプレートオプションから"Webフォーム"を選択します
  • "作成"をクリックしてプロジェクト構造を生成します

! Visual Studio プロジェクト作成ウィザードでの Web フォーム テンプレートの選択 PDF 機能を備えた従来の ASP.NET アプリケーション用の Web フォーム テンプレートの選択

C# プロジェクトに IronPDF をインストールするにはどうすればいいですか?

IronPDF は、さまざまな開発ワークフローに合わせて複数のインストール方法を提供します。 Visual Studio で、ソリューション エクスプローラーのプロジェクトを右クリックし、"NuGet パッケージの管理"を選択します。 そこから、IronPDF を検索し、最新バージョンをインストールします。

方法 1: Visual Studio パッケージ マネージャーを使用する

最も簡単なアプローチは、Visual Studio に組み込まれている NuGet パッケージ マネージャーを使用することです。

  1. ソリューションエクスプローラーでプロジェクトを右クリック
  2. "NuGetパッケージの管理" を選択
  3. "参照" をクリックし、"IronPDF" を検索
  4. IronPDFパッケージの"インストール"をクリックします。

ソリューション エクスプローラーのコンテキスト メニューに NuGet パッケージの管理オプションが表示されています IronPDF をインストールするために Visual Studio のソリューション エクスプローラーから NuGet パッケージ マネージャーにアクセスする

! Visual Studio のプロジェクト メニューにパッケージ管理オプションが表示されている Visual Studio のプロジェクト メニューから NuGet パッケージ マネージャーにアクセスできる代替方法

! IronPDF のインストールを示す NuGet パッケージ マネージャー インターフェイス バージョン情報と依存関係を指定して NuGet パッケージ マネージャー経由で IronPDF をインストールする

方法2: パッケージマネージャーコンソールを使用する

コマンドラインツールを好む開発者向け:

# Open Package Manager Console in Visual Studio
# Tools > NuGet Package Manager > Package Manager Console
Install-Package IronPdf

# For specific version installation
Install-Package IronPdf -Version 2025.7.0
# Open Package Manager Console in Visual Studio
# Tools > NuGet Package Manager > Package Manager Console
Install-Package IronPdf

# For specific version installation
Install-Package IronPdf -Version 2025.7.0
SHELL

方法3: 直接ダウンロードによるインストール

NuGet アクセスのない環境の場合:

  1. IronPDFの公式サイトからダウンロードする
  2. ZIPファイルをプロジェクトディレクトリに解凍します。
  3. Visual Studioで、"参照設定"を右クリック→"参照の追加"
  4. IronPdf.dllを参照して選択します。

方法4: .NET CLIを使用する

コマンドライン愛好家と CI/CD パイプライン向け:

# Navigate to your project directory
cd MyProject

# Install IronPDF
dotnet add package IronPdf

# Restore packages
dotnet restore
# Navigate to your project directory
cd MyProject

# Install IronPDF
dotnet add package IronPdf

# Restore packages
dotnet restore
SHELL

PDFTron (Apryse) SDK をインストールするにはどうすればよいですか?

PDFTron のインストールには、モジュール型アーキテクチャとエンタープライズ重視のため、より多くの手順が含まれます。 プロセスは、ターゲット プラットフォームと必要な機能によって異なります。

前提条件

手動統合手順

  1. SDKを解凍する

    # Example extraction path
    PDFNET_BASE = C:/PDFTron/PDFNetDotNet4/
    # Example extraction path
    PDFNET_BASE = C:/PDFTron/PDFNetDotNet4/
    SHELL

2.ライセンスキーで初期化する

   // Initialize PDFTron with your license key
   pdftron.PDFNet.Initialize("your-license-key-here");

   // Note: Demo keys expire after evaluation period
   // Contact Apryse sales for production licenses
   // Initialize PDFTron with your license key
   pdftron.PDFNet.Initialize("your-license-key-here");

   // Note: Demo keys expire after evaluation period
   // Contact Apryse sales for production licenses
$vbLabelText   $csharpLabel

3.必要なライブラリをコピーする

  • PDFNET_BASEからLibフォルダをプロジェクトディレクトリにコピーします
  • PDFNetLoader.dllとプラットフォーム固有のPDFNet.dllの両方への参照を追加します

4.ローカルプロパティのコピーを構成する

! PDFTron の Visual Studio でローカルコピープロパティが False に設定されている PDFTron を適切に展開するには、PDFNet.dll の Copy Local プロパティを False に設定します。

  1. App.configを更新する
    <configuration>
       <runtime>
           <loadFromRemoteSources enabled="true" />
       </runtime>
    </configuration>
    <configuration>
       <runtime>
           <loadFromRemoteSources enabled="true" />
       </runtime>
    </configuration>
    XML

6.ビルド後のイベントを構成する

   xcopy $(ProjectDir)Lib\PDFNet $(TargetDir)PDFNet /S /I /Y
   xcopy $(ProjectDir)Lib\PDFNet $(TargetDir)PDFNet /S /I /Y
SHELL

NuGet のインストール (簡略化)

より合理的なアプローチ:

  1. NuGet パッケージ マネージャーを開く
  2. "PDFTron.NET.x64"またはプラットフォーム固有のパッケージを検索します
  3. アーキテクチャに適したパッケージをインストールする

! PDFTron NuGetパッケージインストールインターフェース プラットフォーム固有のパッケージを使用してNuGetパッケージマネージャー経由でPDFTronをインストールする

PDFTronは、ComPDFKitの10種類以上と比較して、30種類以上の注釈タイプを提供しています。ただし、この豊富な機能セットを利用するには、インストール時にモジュールを慎重に選択する必要があります。

これらのライブラリを使用して URL を PDF に変換するにはどうすればよいですか?

どちらのライブラリも URL から PDF への変換機能を提供しますが、アプローチと機能は異なります。 それぞれの実装の詳細とパフォーマンス特性を調べてみましょう。

IronPDF で URL を PDF に変換する

IronPDF の Chrome レンダリング エンジンは、最新の Web 標準に対する優れたサポートを提供します。

using IronPdf;

// Initialize the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer();

// Configure rendering for optimal results
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS execution

// Handle authentication if needed
renderer.LoginCredentials = new ChromeHttpLoginCredentials() {
    Username = "user@domain.com",
    Password = "secure_password"
};

// Render URL to PDF with full browser capabilities
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");

// Add metadata for document management
pdf.MetaData.Author = "Development Team";
pdf.MetaData.Title = "Website Export - " + DateTime.Now.ToString("yyyy-MM-dd");

// Save with compression
pdf.CompressImages(90);
pdf.SaveAs("website-export.pdf");
using IronPdf;

// Initialize the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer();

// Configure rendering for optimal results
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS execution

// Handle authentication if needed
renderer.LoginCredentials = new ChromeHttpLoginCredentials() {
    Username = "user@domain.com",
    Password = "secure_password"
};

// Render URL to PDF with full browser capabilities
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");

// Add metadata for document management
pdf.MetaData.Author = "Development Team";
pdf.MetaData.Title = "Website Export - " + DateTime.Now.ToString("yyyy-MM-dd");

// Save with compression
pdf.CompressImages(90);
pdf.SaveAs("website-export.pdf");
$vbLabelText   $csharpLabel

IronPDF の Chrome レンダラーは、次のような複雑なシナリオを処理します。

  • JavaScript を多用したシングルページ アプリケーション (SPA)
  • メディアクエリを使ったレスポンシブデザイン
  • Webフォントと外部スタイルシート
  • AJAXコンテンツの読み込み
  • CSSアニメーションとトランジション

IronPDF メイン ブランチは現在、これらすべてをサポートしています: nuget.org/packages/IronPdf 。 最近のパフォーマンスの向上により、特に複雑な Web アプリケーションではレンダリング速度が大幅に向上しました。

PDFTron (Apryse) で URL を PDF に変換

PDFTron では、Web コンテンツの変換に HTML2PDF モジュールが必要です。

using pdftron;
using pdftron.PDF;
using pdftron.SDF;

class UrlToPdfConverter 
{
    public static void ConvertUrlToPdf(string url, string outputPath)
    {
        // Initialize PDFTron with license
        PDFNet.Initialize("your-license-key");

        // Create a new PDF document
        using (PDFDoc doc = new PDFDoc())
        {
            // Initialize HTML2PDF converter
            HTML2PDF converter = new HTML2PDF();

            // Configure conversion settings
            HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
            settings.SetPrintBackground(true);
            settings.SetLoadImages(true);

            // Set page dimensions
            converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
            converter.SetMargins(0.5, 0.5, 0.5, 0.5);

            // Insert URL content
            converter.InsertFromURL(url);

            // Perform conversion
            if (converter.Convert(doc))
            {
                // Save the resulting PDF
                doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
                Console.WriteLine($"Successfully converted {url} to {outputPath}");
            }
            else
            {
                Console.WriteLine("Conversion failed");
            }
        }
    }
}
using pdftron;
using pdftron.PDF;
using pdftron.SDF;

class UrlToPdfConverter 
{
    public static void ConvertUrlToPdf(string url, string outputPath)
    {
        // Initialize PDFTron with license
        PDFNet.Initialize("your-license-key");

        // Create a new PDF document
        using (PDFDoc doc = new PDFDoc())
        {
            // Initialize HTML2PDF converter
            HTML2PDF converter = new HTML2PDF();

            // Configure conversion settings
            HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
            settings.SetPrintBackground(true);
            settings.SetLoadImages(true);

            // Set page dimensions
            converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
            converter.SetMargins(0.5, 0.5, 0.5, 0.5);

            // Insert URL content
            converter.InsertFromURL(url);

            // Perform conversion
            if (converter.Convert(doc))
            {
                // Save the resulting PDF
                doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
                Console.WriteLine($"Successfully converted {url} to {outputPath}");
            }
            else
            {
                Console.WriteLine("Conversion failed");
            }
        }
    }
}
$vbLabelText   $csharpLabel

PDFTron HTML2PDF に関する重要な考慮事項:

  • PDFTron の SDK は、テクノロジーの幅広さ (API、機能) と配布範囲 (外部ユーザーまたは内部ユーザー) に基づいて見積もられます。
  • ブラウザエンジンに比べてJavaScriptのサポートが限られている
  • 複雑なレイアウトの場合は追加の設定が必要になる場合があります
  • よりシンプルなHTMLドキュメントに適しています

HTML 文字列から PDF を作成するにはどうすればよいですか?

動的なレポート、請求書、ドキュメントを生成するには、HTML 文字列から PDF を作成することが不可欠です。 両方のライブラリはこれを異なる方法で処理します。

IronPDF で HTML 文字列を PDF に変換する

IronPDF は、完全な CSS3 と JavaScript のサポートにより、複雑な HTML のレンダリングに優れています。

using IronPdf;
using System.Text;

public class HtmlStringToPdfConverter
{
    public static PdfDocument GenerateInvoice(InvoiceData data)
    {
        // Build dynamic HTML with modern CSS
        var html = new StringBuilder();
        html.Append(@"
        <!DOCTYPE html>
        <html>
        <head>
            <meta charset='UTF-8'>
            <style>
                @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap');

                body {
                    font-family: 'Roboto', sans-serif;
                    margin: 0;
                    padding: 20px;
                    color: #333;
                }

                .invoice-header {
                    display: flex;
                    justify-content: space-between;
                    border-bottom: 2px solid #007bff;
                    padding-bottom: 20px;
                    margin-bottom: 30px;
                }

                .company-logo {
                    width: 150px;
                    height: auto;
                }

                .invoice-details {
                    text-align: right;
                }

                .invoice-number {
                    font-size: 24px;
                    font-weight: 700;
                    color: #007bff;
                }

                table {
                    width: 100%;
                    border-collapse: collapse;
                    margin-top: 20px;
                }

                th {
                    background-color: #f8f9fa;
                    padding: 12px;
                    text-align: left;
                    border-bottom: 2px solid #dee2e6;
                }

                td {
                    padding: 12px;
                    border-bottom: 1px solid #dee2e6;
                }

                .total-row {
                    font-weight: 700;
                    font-size: 18px;
                    background-color: #e9ecef;
                }

                @media print {
                    body { margin: 0; }
                    .no-print { display: none; }
                }
            </style>
        </head>
        <body>
        ");

        // Add invoice header
        html.Append($@"
            <div class='invoice-header'>
                <div>
                    <img src='data:image/png;base64,{data.CompanyLogoBase64}' class='company-logo' alt='Company Logo'>
                    <h2>{data.CompanyName}</h2>
                    <p>{data.CompanyAddress}</p>
                </div>
                <div class='invoice-details'>
                    <div class='invoice-number'>Invoice #{data.InvoiceNumber}</div>
                    <p>Date: {data.InvoiceDate:yyyy-MM-dd}</p>
                    <p>Due: {data.DueDate:yyyy-MM-dd}</p>
                </div>
            </div>
        ");

        // Add line items table
        html.Append(@"
            <table>
                <thead>
                    <tr>
                        <th>Description</th>
                        <th>Quantity</th>
                        <th>Unit Price</th>
                        <th>Total</th>
                    </tr>
                </thead>
                <tbody>
        ");

        foreach (var item in data.LineItems)
        {
            html.Append($@"
                <tr>
                    <td>{item.Description}</td>
                    <td>{item.Quantity}</td>
                    <td>${item.UnitPrice:F2}</td>
                    <td>${item.Total:F2}</td>
                </tr>
            ");
        }

        html.Append($@"
                </tbody>
                <tfoot>
                    <tr class='total-row'>
                        <td colspan='3'>Total</td>
                        <td>${data.Total:F2}</td>
                    </tr>
                </tfoot>
            </table>
        </body>
        </html>
        ");

        // Configure renderer for optimal output
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

        // Generate PDF with proper base path for assets
        var pdf = renderer.RenderHtmlAsPdf(html.ToString());

        // Add security if needed
        pdf.SecuritySettings.UserPassword = data.CustomerEmail;
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;

        return pdf;
    }
}
using IronPdf;
using System.Text;

public class HtmlStringToPdfConverter
{
    public static PdfDocument GenerateInvoice(InvoiceData data)
    {
        // Build dynamic HTML with modern CSS
        var html = new StringBuilder();
        html.Append(@"
        <!DOCTYPE html>
        <html>
        <head>
            <meta charset='UTF-8'>
            <style>
                @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap');

                body {
                    font-family: 'Roboto', sans-serif;
                    margin: 0;
                    padding: 20px;
                    color: #333;
                }

                .invoice-header {
                    display: flex;
                    justify-content: space-between;
                    border-bottom: 2px solid #007bff;
                    padding-bottom: 20px;
                    margin-bottom: 30px;
                }

                .company-logo {
                    width: 150px;
                    height: auto;
                }

                .invoice-details {
                    text-align: right;
                }

                .invoice-number {
                    font-size: 24px;
                    font-weight: 700;
                    color: #007bff;
                }

                table {
                    width: 100%;
                    border-collapse: collapse;
                    margin-top: 20px;
                }

                th {
                    background-color: #f8f9fa;
                    padding: 12px;
                    text-align: left;
                    border-bottom: 2px solid #dee2e6;
                }

                td {
                    padding: 12px;
                    border-bottom: 1px solid #dee2e6;
                }

                .total-row {
                    font-weight: 700;
                    font-size: 18px;
                    background-color: #e9ecef;
                }

                @media print {
                    body { margin: 0; }
                    .no-print { display: none; }
                }
            </style>
        </head>
        <body>
        ");

        // Add invoice header
        html.Append($@"
            <div class='invoice-header'>
                <div>
                    <img src='data:image/png;base64,{data.CompanyLogoBase64}' class='company-logo' alt='Company Logo'>
                    <h2>{data.CompanyName}</h2>
                    <p>{data.CompanyAddress}</p>
                </div>
                <div class='invoice-details'>
                    <div class='invoice-number'>Invoice #{data.InvoiceNumber}</div>
                    <p>Date: {data.InvoiceDate:yyyy-MM-dd}</p>
                    <p>Due: {data.DueDate:yyyy-MM-dd}</p>
                </div>
            </div>
        ");

        // Add line items table
        html.Append(@"
            <table>
                <thead>
                    <tr>
                        <th>Description</th>
                        <th>Quantity</th>
                        <th>Unit Price</th>
                        <th>Total</th>
                    </tr>
                </thead>
                <tbody>
        ");

        foreach (var item in data.LineItems)
        {
            html.Append($@"
                <tr>
                    <td>{item.Description}</td>
                    <td>{item.Quantity}</td>
                    <td>${item.UnitPrice:F2}</td>
                    <td>${item.Total:F2}</td>
                </tr>
            ");
        }

        html.Append($@"
                </tbody>
                <tfoot>
                    <tr class='total-row'>
                        <td colspan='3'>Total</td>
                        <td>${data.Total:F2}</td>
                    </tr>
                </tfoot>
            </table>
        </body>
        </html>
        ");

        // Configure renderer for optimal output
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

        // Generate PDF with proper base path for assets
        var pdf = renderer.RenderHtmlAsPdf(html.ToString());

        // Add security if needed
        pdf.SecuritySettings.UserPassword = data.CustomerEmail;
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;

        return pdf;
    }
}
$vbLabelText   $csharpLabel

IronPDF の HTML レンダリングの主な利点:

  • フレックスボックスやグリッドレイアウトを含む完全なCSS3サポート
  • Google Fontsとウェブフォントの統合
  • JavaScriptチャートライブラリ(Chart.js、D3.js)は完璧にレンダリングされます
  • ビューポートコントロールによるレスポンシブデザインのサポート
  • 自己完結型ドキュメント用のBase64画像埋め込み

PDFTron (Apryse) を使用した HTML 文字列から PDF への変換

PDFTron の HTML 文字列変換へのアプローチ:

using pdftron;
using pdftron.PDF;
using pdftron.SDF;

public class PdfTronHtmlConverter
{
    public static void ConvertHtmlString(string htmlContent, string outputPath)
    {
        PDFNet.Initialize("your-license-key");

        using (PDFDoc doc = new PDFDoc())
        {
            // Create HTML2PDF converter instance
            HTML2PDF converter = new HTML2PDF();

            // Configure page settings
            converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
            converter.SetLandscape(false);
            converter.SetMargins(1.0, 1.0, 1.0, 1.0, HTML2PDF.e_inches);

            // Enable images and backgrounds
            HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
            settings.SetPrintBackground(true);
            settings.SetLoadImages(true);
            settings.SetJavaScriptDelay(1000); // Limited JS support

            // Insert HTML content
            converter.InsertFromHtmlString(htmlContent);

            // Convert to PDF
            if (converter.Convert(doc))
            {
                // Post-processing options
                doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
            }
        }
    }
}
using pdftron;
using pdftron.PDF;
using pdftron.SDF;

public class PdfTronHtmlConverter
{
    public static void ConvertHtmlString(string htmlContent, string outputPath)
    {
        PDFNet.Initialize("your-license-key");

        using (PDFDoc doc = new PDFDoc())
        {
            // Create HTML2PDF converter instance
            HTML2PDF converter = new HTML2PDF();

            // Configure page settings
            converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
            converter.SetLandscape(false);
            converter.SetMargins(1.0, 1.0, 1.0, 1.0, HTML2PDF.e_inches);

            // Enable images and backgrounds
            HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
            settings.SetPrintBackground(true);
            settings.SetLoadImages(true);
            settings.SetJavaScriptDelay(1000); // Limited JS support

            // Insert HTML content
            converter.InsertFromHtmlString(htmlContent);

            // Convert to PDF
            if (converter.Convert(doc))
            {
                // Post-processing options
                doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
            }
        }
    }
}
$vbLabelText   $csharpLabel

考慮すべき PDFTron HTML の制限:

  • 基本的な CSS サポート (高度なレイアウトはありません)
  • JavaScript 実行の制限
  • フォントの埋め込みには追加の設定が必要です
  • シンプルなドキュメントレイアウトに適しています

ASPX ページを PDF に変換するにはどうすればいいですか?

ASPX ページを PDF に変換することは、ASP.NET アプリケーションの一般的な要件です。 IronPDF はネイティブ サポートを提供しますが、PDFTron では回避策が必要です。

IronPDF で ASPX を PDF に変換する

IronPDF は、1 行のコードでシームレスな ASPX 変換を提供します。

using IronPdf;

public partial class InvoicePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Render the current ASPX page as PDF on page load
        if (Request.QueryString["pdf"] == "true")
        {
            // Configure PDF output options
            AspxToPdf.RenderThisPageAsPdf(
                AspxToPdf.FileBehavior.InBrowser,
                "Invoice_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");
        }
    }

    protected void ExportToPdfButton_Click(object sender, EventArgs e)
    {
        // Advanced configuration for ASPX to PDF
        IronPdf.AspxToPdf.RenderThisPageAsPdf(
            IronPdf.AspxToPdf.FileBehavior.Attachment,
            "Invoice.pdf",
            new ChromePdfRenderOptions()
            {
                PaperSize = PdfPaperSize.A4,
                MarginTop = 20,
                MarginBottom = 20,
                CssMediaType = PdfCssMediaType.Print,
                EnableJavaScript = true,
                CreatePdfFormsFromHtml = true,
                FitToPaper = true
            });
    }
}
using IronPdf;

public partial class InvoicePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Render the current ASPX page as PDF on page load
        if (Request.QueryString["pdf"] == "true")
        {
            // Configure PDF output options
            AspxToPdf.RenderThisPageAsPdf(
                AspxToPdf.FileBehavior.InBrowser,
                "Invoice_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");
        }
    }

    protected void ExportToPdfButton_Click(object sender, EventArgs e)
    {
        // Advanced configuration for ASPX to PDF
        IronPdf.AspxToPdf.RenderThisPageAsPdf(
            IronPdf.AspxToPdf.FileBehavior.Attachment,
            "Invoice.pdf",
            new ChromePdfRenderOptions()
            {
                PaperSize = PdfPaperSize.A4,
                MarginTop = 20,
                MarginBottom = 20,
                CssMediaType = PdfCssMediaType.Print,
                EnableJavaScript = true,
                CreatePdfFormsFromHtml = true,
                FitToPaper = true
            });
    }
}
$vbLabelText   $csharpLabel

レンダリング プロセスをより細かく制御するには:

// In Global.asax.cs or Startup.cs
public static void ConfigureAspxToPdf()
{
    // Set global defaults for all ASPX to PDF conversions
    AspxToPdf.GlobalSettings.PaperSize = PdfPaperSize.A4;
    AspxToPdf.GlobalSettings.PrintHtmlBackgrounds = true;
    AspxToPdf.GlobalSettings.EnableJavaScript = true;
    AspxToPdf.GlobalSettings.CssMediaType = PdfCssMediaType.Screen;

    // Custom headers and footers
    AspxToPdf.GlobalSettings.HtmlHeader = new HtmlHeaderFooter()
    {
        HtmlFragment = "<div style='text-align: center; font-size: 12px;'>{page} of {total-pages}</div>",
        Height = 25
    };
}
// In Global.asax.cs or Startup.cs
public static void ConfigureAspxToPdf()
{
    // Set global defaults for all ASPX to PDF conversions
    AspxToPdf.GlobalSettings.PaperSize = PdfPaperSize.A4;
    AspxToPdf.GlobalSettings.PrintHtmlBackgrounds = true;
    AspxToPdf.GlobalSettings.EnableJavaScript = true;
    AspxToPdf.GlobalSettings.CssMediaType = PdfCssMediaType.Screen;

    // Custom headers and footers
    AspxToPdf.GlobalSettings.HtmlHeader = new HtmlHeaderFooter()
    {
        HtmlFragment = "<div style='text-align: center; font-size: 12px;'>{page} of {total-pages}</div>",
        Height = 25
    };
}
$vbLabelText   $csharpLabel

IronPDF の ASPX から PDF への機能は以下を保存します:

  • ViewStateとフォームの値
  • セッション状態データ
  • CSS スタイルとレイアウト
  • JavaScriptレンダリングのコンテンツ
  • マスターページレイアウト

PDFTron による ASPX の代替

PDFTron は直接的な ASPX サポートを提供していないため、間接的なアプローチが必要です。

// Capture ASPX output as HTML, then convert
public void ConvertAspxWithPdfTron()
{
    // Render ASPX to string first
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);

    // Render the page to HTML
    this.RenderControl(hw);
    string htmlContent = sw.ToString();

    // Then use PDFTron's HTML2PDF
    PDFNet.Initialize("your-license-key");

    using (PDFDoc doc = new PDFDoc())
    {
        HTML2PDF converter = new HTML2PDF();
        converter.InsertFromHtmlString(htmlContent);
        converter.Convert(doc);

        // Send to browser
        byte[] pdfBytes = doc.Save(SDFDoc.SaveOptions.e_linearized);
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(pdfBytes);
        Response.End();
    }
}
// Capture ASPX output as HTML, then convert
public void ConvertAspxWithPdfTron()
{
    // Render ASPX to string first
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);

    // Render the page to HTML
    this.RenderControl(hw);
    string htmlContent = sw.ToString();

    // Then use PDFTron's HTML2PDF
    PDFNet.Initialize("your-license-key");

    using (PDFDoc doc = new PDFDoc())
    {
        HTML2PDF converter = new HTML2PDF();
        converter.InsertFromHtmlString(htmlContent);
        converter.Convert(doc);

        // Send to browser
        byte[] pdfBytes = doc.Save(SDFDoc.SaveOptions.e_linearized);
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(pdfBytes);
        Response.End();
    }
}
$vbLabelText   $csharpLabel

画像を PDF に変換するにはどうすればよいですか?

画像から PDF への変換は、ドキュメントのアーカイブやポートフォリオの作成に不可欠です。 どちらのライブラリも、異なるアプローチでこの機能を提供します。

IronPDFで画像をPDFに変換

IronPDF は、効率的なバッチ処理のために専用のImageToPdfConverterクラスを提供します。

using IronPdf;
using System.IO;
using System.Linq;

public class ImagePdfGenerator
{
    public static void CreatePhotoAlbum(string imageFolder, string outputPath)
    {
        // Get all supported image files
        var supportedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg" };
        var imageFiles = Directory.GetFiles(imageFolder)
            .Where(f => supportedExtensions.Contains(Path.GetExtension(f).ToLower()))
            .OrderBy(f => f);

        // Convert images to PDF with options
        var pdf = ImageToPdfConverter.ImageToPdf(imageFiles, ImageBehavior.FitToPage);

        // Add metadata
        pdf.MetaData.Title = "Photo Album";
        pdf.MetaData.Author = "Photography Department";
        pdf.MetaData.CreationDate = DateTime.Now;

        // Apply compression for smaller file size
        pdf.CompressImages(80); // 80% quality

        // Save the PDF
        pdf.SaveAs(outputPath);
    }

    public static void CreateThumbnailCatalog(List<ProductImage> images)
    {
        var renderer = new ChromePdfRenderer();

        // Build HTML with image grid
        var html = @"
        <html>
        <head>
            <style>
                .image-grid {
                    display: grid;
                    grid-template-columns: repeat(3, 1fr);
                    gap: 20px;
                    padding: 20px;
                }
                .image-item {
                    text-align: center;
                }
                .image-item img {
                    max-width: 100%;
                    height: 200px;
                    object-fit: cover;
                    border: 1px solid #ddd;
                }
                .image-caption {
                    margin-top: 10px;
                    font-size: 12px;
                }
            </style>
        </head>
        <body>
            <h1>Product Catalog</h1>
            <div class='image-grid'>";

        foreach (var image in images)
        {
            html += $@"
                <div class='image-item'>
                    <img src='data:image/jpeg;base64,{image.Base64Data}' />
                    <div class='image-caption'>{image.ProductName}</div>
                </div>";
        }

        html += "</div></body></html>";

        // Render with optimal settings for images
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("product-catalog.pdf");
    }
}
using IronPdf;
using System.IO;
using System.Linq;

public class ImagePdfGenerator
{
    public static void CreatePhotoAlbum(string imageFolder, string outputPath)
    {
        // Get all supported image files
        var supportedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg" };
        var imageFiles = Directory.GetFiles(imageFolder)
            .Where(f => supportedExtensions.Contains(Path.GetExtension(f).ToLower()))
            .OrderBy(f => f);

        // Convert images to PDF with options
        var pdf = ImageToPdfConverter.ImageToPdf(imageFiles, ImageBehavior.FitToPage);

        // Add metadata
        pdf.MetaData.Title = "Photo Album";
        pdf.MetaData.Author = "Photography Department";
        pdf.MetaData.CreationDate = DateTime.Now;

        // Apply compression for smaller file size
        pdf.CompressImages(80); // 80% quality

        // Save the PDF
        pdf.SaveAs(outputPath);
    }

    public static void CreateThumbnailCatalog(List<ProductImage> images)
    {
        var renderer = new ChromePdfRenderer();

        // Build HTML with image grid
        var html = @"
        <html>
        <head>
            <style>
                .image-grid {
                    display: grid;
                    grid-template-columns: repeat(3, 1fr);
                    gap: 20px;
                    padding: 20px;
                }
                .image-item {
                    text-align: center;
                }
                .image-item img {
                    max-width: 100%;
                    height: 200px;
                    object-fit: cover;
                    border: 1px solid #ddd;
                }
                .image-caption {
                    margin-top: 10px;
                    font-size: 12px;
                }
            </style>
        </head>
        <body>
            <h1>Product Catalog</h1>
            <div class='image-grid'>";

        foreach (var image in images)
        {
            html += $@"
                <div class='image-item'>
                    <img src='data:image/jpeg;base64,{image.Base64Data}' />
                    <div class='image-caption'>{image.ProductName}</div>
                </div>";
        }

        html += "</div></body></html>";

        // Render with optimal settings for images
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("product-catalog.pdf");
    }
}
$vbLabelText   $csharpLabel

高度な画像処理機能:

  • ベクター品質を維持したSVGからPDFへの変換
  • メモリ最適化によるバッチ処理
  • カスタムサイズと位置のオプション
  • EXIFデータの保存

PDFTron (Apryse) で画像を PDF に変換

PDFTron は画像処理に変換 API を使用します。

using pdftron;
using pdftron.PDF;
using pdftron.SDF;

public class PdfTronImageConverter
{
    public static void ConvertImageToPdf(string imagePath, string outputPath)
    {
        PDFNet.Initialize("your-license-key");

        using (PDFDoc doc = new PDFDoc())
        {
            // Use Convert API for image to PDF
            pdftron.PDF.Convert.ToPdf(doc, imagePath);

            // Additional image processing
            PageIterator itr = doc.GetPageIterator();
            while (itr.HasNext())
            {
                Page page = itr.Current();

                // Adjust page size to image
                Rect crop_box = page.GetCropBox();
                page.SetMediaBox(crop_box);

                itr.Next();
            }

            // Save optimized PDF
            doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
        }
    }

    public static void CreateMultiPageImagePdf(string[] imagePaths, string outputPath)
    {
        PDFNet.Initialize("your-license-key");

        using (PDFDoc doc = new PDFDoc())
        {
            ElementBuilder builder = new ElementBuilder();
            ElementWriter writer = new ElementWriter();

            foreach (string imagePath in imagePaths)
            {
                // Create a new page for each image
                Page page = doc.PageCreate();
                writer.Begin(page);

                // Add image to page
                Image img = Image.Create(doc, imagePath);
                Element element = builder.CreateImage(img, 0, 0, 612, 792);
                writer.WritePlacedElement(element);

                writer.End();
                doc.PagePushBack(page);
            }

            doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
        }
    }
}
using pdftron;
using pdftron.PDF;
using pdftron.SDF;

public class PdfTronImageConverter
{
    public static void ConvertImageToPdf(string imagePath, string outputPath)
    {
        PDFNet.Initialize("your-license-key");

        using (PDFDoc doc = new PDFDoc())
        {
            // Use Convert API for image to PDF
            pdftron.PDF.Convert.ToPdf(doc, imagePath);

            // Additional image processing
            PageIterator itr = doc.GetPageIterator();
            while (itr.HasNext())
            {
                Page page = itr.Current();

                // Adjust page size to image
                Rect crop_box = page.GetCropBox();
                page.SetMediaBox(crop_box);

                itr.Next();
            }

            // Save optimized PDF
            doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
        }
    }

    public static void CreateMultiPageImagePdf(string[] imagePaths, string outputPath)
    {
        PDFNet.Initialize("your-license-key");

        using (PDFDoc doc = new PDFDoc())
        {
            ElementBuilder builder = new ElementBuilder();
            ElementWriter writer = new ElementWriter();

            foreach (string imagePath in imagePaths)
            {
                // Create a new page for each image
                Page page = doc.PageCreate();
                writer.Begin(page);

                // Add image to page
                Image img = Image.Create(doc, imagePath);
                Element element = builder.CreateImage(img, 0, 0, 612, 792);
                writer.WritePlacedElement(element);

                writer.End();
                doc.PagePushBack(page);
            }

            doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
        }
    }
}
$vbLabelText   $csharpLabel

ライセンスのオプションとコストは何ですか?

ライセンスを理解することは、予算編成とコンプライアンスにとって非常に重要です。 2 つのライブラリの価格モデルは大きく異なります。

IronPDFライセンス

IronPDF には、 $799から$2,399までの 3 つの価格エディションがあります。 IronPDF の無料トライアルもご利用いただけます。 IronPDF は透明性のある公開価格設定を提供しています (2025 年現在)。

ライセンス層: -ライトライセンス: $799

  • 1年間の更新とサポート
  • 1か所
  • 1プロジェクト
  • 個人開発者や小規模プロジェクトに最適

-プラスライセンス: $1,199

  • 3か所
  • 3か所
  • 3プロジェクト
  • 小規模チームに最適

-プロフェッショナルライセンス: $2,399

  • 配布権なし
  • 10か所
  • 10プロジェクト
  • 成長中のチームに最適

-無制限ライセンス:カスタム価格

  • 無制限の開発者
  • 無制限のロケーション
  • 無制限のプロジェクト

追加オプション:

  • ロイヤリティフリーの再配布: + $2,399 (1回限り)
  • SaaS/OEMライセンスが利用可能
  • Iron Suiteバンドル: 2つの価格で10個の製品を入手

すべてのチーム ライセンスは譲渡不可であり、組織または代理店/クライアント関係外でのライセンスの共有は禁止されています。

PDFTron (Apryse) ライセンス

PDFTron のライセンスは見積もりベースであり、価格は公表されていません。 ユーザーのフィードバックと業界レポートに基づく:

推定価格帯:

  • 中小企業: 年間5,000~15,000ドル
  • エンタープライズ: 年間30,000~100,000ドル以上
  • 追加モジュールには別途ライセンスが必要です

価格の透明性は PDFTRON の大きな欠点です。 すべてがアドオンであり、特定のライセンス条件と契約が必要です。 ユーザーの報告:

  • PDFTRON に 6,500 ドルを投資したにもかかわらず、その製品は宣伝どおりに動作せず、何も得られず、製品のクリーンアップ作業は大変なものになってしまいました。
  • 複雑なライセンス交渉が必要
  • モジュールごとの価格設定により総コストが増加
  • 返金ポリシーは限定的

主な違い:

  • IronPDF: 永久ライセンス、一回払い
  • PDFTron: 多くの場合、サブスクリプションベースまたは年会費制
  • IronPDF: すべての機能が基本ライセンスに含まれています
  • PDFTron: 有料アドオンによるコア機能

サポート オプションを比較するとどうなりますか?

開発者のサポートは、プロジェクトのタイムラインを左右します。 各ベンダーが顧客サポートにどのように取り組んでいるかをご紹介します。

IronPDF サポート

IronPDF にはすべてのライセンスにプロフェッショナル サポートが含まれています。

IronPDF ライブラリは、Azure WebApps、Functions、WebJobs で動作します。 これは Linux 版と Windows 版の両方で動作しますが、Windows 版の Functions と WebApps の方がテストがはるかに良く、インストールも簡単なのでお勧めです。

PDFTron (Apryse) サポート

PDFTron のサポートはライセンス レベルによって異なります。

  • PDFTron のコストは高いです。 当社のビジネスにとっての重要性はコストを正当化しますが、この製品を他の PDF Web ソリューションと比較すると、それは間違いなく当社にとっての障害でした。
  • 基本ライセンスのフォーラムベースのサポート
  • 有料サポートプランあり
  • 場合によってはサポートが不足し、開発者が自力で解決しなければならないこともあります。
  • 応答時間はサポートレベルによって異なります

パフォーマンス特性は何ですか?

パフォーマンスはユーザーエクスペリエンスとサーバーコストに影響します。 実際のパフォーマンスデータを調べてみましょう。

IronPDF パフォーマンス

最近の改善により、IronPDF のパフォーマンスが大幅に向上しました。

// Optimized batch processing example
public async Task BatchConvertWithPerformanceMonitoring()
{
    var renderer = new ChromePdfRenderer();

    // Configure for performance
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
    renderer.RenderingOptions.RenderDelay = 0; // No delay for static content
    renderer.RenderingOptions.Timeout = 30; // 30 second timeout

    // Enable parallel processing
    var tasks = new List<Task<PdfDocument>>();
    var urls = GetUrlsToConvert();

    // Process in parallel with throttling
    using (var semaphore = new SemaphoreSlim(4)) // Max 4 concurrent
    {
        foreach (var url in urls)
        {
            await semaphore.WaitAsync();

            tasks.Add(Task.Run(async () =>
            {
                try
                {
                    return await renderer.RenderUrlAsPdfAsync(url);
                }
                finally
                {
                    semaphore.Release();
                }
            }));
        }

        var results = await Task.WhenAll(tasks);

        // Merge results if needed
        var merged = PdfDocument.Merge(results);
        merged.SaveAs("batch-output.pdf");
    }
}
// Optimized batch processing example
public async Task BatchConvertWithPerformanceMonitoring()
{
    var renderer = new ChromePdfRenderer();

    // Configure for performance
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
    renderer.RenderingOptions.RenderDelay = 0; // No delay for static content
    renderer.RenderingOptions.Timeout = 30; // 30 second timeout

    // Enable parallel processing
    var tasks = new List<Task<PdfDocument>>();
    var urls = GetUrlsToConvert();

    // Process in parallel with throttling
    using (var semaphore = new SemaphoreSlim(4)) // Max 4 concurrent
    {
        foreach (var url in urls)
        {
            await semaphore.WaitAsync();

            tasks.Add(Task.Run(async () =>
            {
                try
                {
                    return await renderer.RenderUrlAsPdfAsync(url);
                }
                finally
                {
                    semaphore.Release();
                }
            }));
        }

        var results = await Task.WhenAll(tasks);

        // Merge results if needed
        var merged = PdfDocument.Merge(results);
        merged.SaveAs("batch-output.pdf");
    }
}
$vbLabelText   $csharpLabel

実稼働環境からのパフォーマンス メトリック:

  • シンプルなHTML: 200~400ミリ秒
  • CSS/JS を使用した複雑な HTML: 800~1200 ミリ秒
  • IronPDF には、 IronPDF.com/examples /async に記載されているようなレンダリング メソッドの非同期バリアントがあります。 私のユースケースでは、 Parallel.ForEachを使用することが、HTML から PDF へのバッチレンダリングに最もパフォーマンスの高い戦略でした。

PDFTron (Apryse) のパフォーマンス

PDFTron は一般的に、単純な変換ではより高速な生のパフォーマンスを提供します。

  • 基本的なHTML: 100~300ミリ秒
  • Officeドキュメント: 500~1000ミリ秒
  • メモリフットプリントの低減
  • 大量のシンプルな文書に最適

ただし、ユーザーからは複雑なシナリオで問題が発生するという報告があります。

  • バグは時々発生します。中には、QAテストで発見できたはずの、かなり深刻なバグが発生することもあります。 最終的に修正されるまでにはしばらく時間がかかる場合があります。

最新の CSS フレームワークと Bootstrap のサポート

エンタープライズ アプリケーションで Bootstrap、Tailwind、Foundation などの最新の CSS フレームワークが採用されるケースが増えているため、これらのフレームワークを正確に PDF に変換する機能が PDF ライブラリの重要な選択基準になっています。

IronPDF: Chromiumベースのフレームワークを完全サポート

IronPDF の Chrome V8 レンダリング エンジンは、すべての最新の CSS フレームワークと Web 標準を包括的にサポートします。

  • Bootstrap 5:レスポンシブなユーティリティをすべて備えたフレックスボックスとCSSグリッドの完全なサポート
  • Bootstrap 4:カードコンポーネント、ナビゲーションシステム、フォームレイアウトとの完全な互換性
  • Tailwind CSS:すべてのユーティリティクラス、レスポンシブ修飾子、JITコンパイルパターン
  • Foundation:完全なグリッドシステムとコンポーネントライブラリのサポート -最新の CSS3: Flexbox、CSS グリッド、CSS 変数、アニメーション、変換、トランジション
  • JavaScript フレームワーク: React、Vue、Angular コンポーネントのレンダリングと完全なインタラクティブ性のサポート

運用検証: Bootstrap ホームページ公式テンプレートは、98% 以上のブラウザー忠実度で変換されます。

コード例: データテーブルを含むエンタープライズダッシュボード

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapDashboard = @"
<!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'>
            <h1>Sales Dashboard - Q1 2025</h1>
            <span class='badge bg-success fs-5'>+15.3% YoY</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>Total Revenue</h6>
                        <h2 class='text-primary'>$1.2M</h2>
                        <small class='text-success'>↑ 12%</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>New Customers</h6>
                        <h2 class='text-info'>1,847</h2>
                        <small class='text-success'>↑ 8%</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>Avg Order Value</h6>
                        <h2 class='text-warning'>$649</h2>
                        <small class='text-danger'>↓ 3%</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>Conversion Rate</h6>
                        <h2 class='text-success'>3.2%</h2>
                        <small class='text-success'>↑ 0.4%</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='card'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Top Products by Revenue</h5>
            </div>
            <div class='card-body p-0'>
                <table class='table table-striped table-hover mb-0'>
                    <thead class='table-light'>
                        <tr>
                            <th>Product</th>
                            <th>Category</th>
                            <th>Units Sold</th>
                            <th class='text-end'>Revenue</th>
                            <th class='text-end'>Growth</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><strong>Professional License</strong></td>
                            <td><span class='badge bg-primary'>Software</span></td>
                            <td>1,234</td>
                            <td class='text-end'>$369,000</td>
                            <td class='text-end'><span class='badge bg-success'>+18%</span></td>
                        </tr>
                        <tr>
                            <td><strong>Plus License</strong></td>
                            <td><span class='badge bg-primary'>Software</span></td>
                            <td>2,891</td>
                            <td class='text-end'>$289,000</td>
                            <td class='text-end'><span class='badge bg-success'>+15%</span></td>
                        </tr>
                        <tr>
                            <td><strong>Support Package</strong></td>
                            <td><span class='badge bg-info'>Services</span></td>
                            <td>892</td>
                            <td class='text-end'>$178,000</td>
                            <td class='text-end'><span class='badge bg-success'>+22%</span></td>
                        </tr>
                        <tr>
                            <td><strong>Training Program</strong></td>
                            <td><span class='badge bg-info'>Services</span></td>
                            <td>456</td>
                            <td class='text-end'>$91,000</td>
                            <td class='text-end'><span class='badge bg-warning'>+5%</span></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapDashboard);
pdf.SaveAs("sales-dashboard.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapDashboard = @"
<!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'>
            <h1>Sales Dashboard - Q1 2025</h1>
            <span class='badge bg-success fs-5'>+15.3% YoY</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>Total Revenue</h6>
                        <h2 class='text-primary'>$1.2M</h2>
                        <small class='text-success'>↑ 12%</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>New Customers</h6>
                        <h2 class='text-info'>1,847</h2>
                        <small class='text-success'>↑ 8%</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>Avg Order Value</h6>
                        <h2 class='text-warning'>$649</h2>
                        <small class='text-danger'>↓ 3%</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h6 class='text-muted'>Conversion Rate</h6>
                        <h2 class='text-success'>3.2%</h2>
                        <small class='text-success'>↑ 0.4%</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='card'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Top Products by Revenue</h5>
            </div>
            <div class='card-body p-0'>
                <table class='table table-striped table-hover mb-0'>
                    <thead class='table-light'>
                        <tr>
                            <th>Product</th>
                            <th>Category</th>
                            <th>Units Sold</th>
                            <th class='text-end'>Revenue</th>
                            <th class='text-end'>Growth</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><strong>Professional License</strong></td>
                            <td><span class='badge bg-primary'>Software</span></td>
                            <td>1,234</td>
                            <td class='text-end'>$369,000</td>
                            <td class='text-end'><span class='badge bg-success'>+18%</span></td>
                        </tr>
                        <tr>
                            <td><strong>Plus License</strong></td>
                            <td><span class='badge bg-primary'>Software</span></td>
                            <td>2,891</td>
                            <td class='text-end'>$289,000</td>
                            <td class='text-end'><span class='badge bg-success'>+15%</span></td>
                        </tr>
                        <tr>
                            <td><strong>Support Package</strong></td>
                            <td><span class='badge bg-info'>Services</span></td>
                            <td>892</td>
                            <td class='text-end'>$178,000</td>
                            <td class='text-end'><span class='badge bg-success'>+22%</span></td>
                        </tr>
                        <tr>
                            <td><strong>Training Program</strong></td>
                            <td><span class='badge bg-info'>Services</span></td>
                            <td>456</td>
                            <td class='text-end'>$91,000</td>
                            <td class='text-end'><span class='badge bg-warning'>+5%</span></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapDashboard);
pdf.SaveAs("sales-dashboard.pdf");
$vbLabelText   $csharpLabel

出力: Bootstrap の flexbox メトリック カード、レスポンシブ グリッド レイアウト、スタイル設定されたデータ テーブルを備えたプロフェッショナルなエンタープライズ ダッシュボード。すべてが PDF で完璧な忠実度でレンダリングされます。

PDFTron (Apryse): フレームワークの制限付き HTML2PDF モジュール

PDFTron の HTML から PDF への変換は、HTML2PDF モジュールを通じて提供されます。このモジュールは、最新の CSS フレームワークに特定の制限があるカスタム レンダリング エンジンを使用します。

-カスタムエンジン: Chromiumベースではないため、CSS3のサポートは包括的ではなく選択的です

  • Flexbox サポート:部分的な実装のため、Bootstrap 4/5 の flexbox レイアウトが正しくレンダリングされない可能性があります
  • CSS グリッド: CSS グリッドレイアウト仕様の限定的なサポート
  • JavaScript の制限:フルブラウザエンジンに比べて JavaScript の実行が制限されています
  • Bootstrap 3:テーブルベースのレイアウトのため、Bootstrap 4/5 よりも一般的にうまく機能します。 -フレームワークのテストが必要:複雑な Bootstrap コンポーネントには、広範なテストと潜在的な回避策が必要です。

開発者の報告によると、Bootstrap を使用する PDFTron ユーザーは次のような問題に遭遇します。

  • Flexbox ベースのナビゲーション バーのレンダリングで配置の問題が発生している
  • CSS 調整を必要とするカードデッキとグリッドシステム
  • レスポンシブユーティリティがPDF出力で考慮されない
  • Bootstrapコンポーネントを簡素化するか、フォールバックCSSを使用する必要がある

エンタープライズでの考慮事項:最新の Bootstrap バージョン (4 以上) で構築されたアプリケーションの場合、PDFTron ではレイアウト変換を処理するために大幅な追加開発作業が必要になる可能性があり、他のパフォーマンス上の利点が相殺される可能性があります。 カスタム エンジン アプローチでは、実際のブラウザーと同じレンダリング忠実度は得られません。

包括的な Bootstrap フレームワークのサポートとテスト ガイダンスについては、" Bootstrap & Flexbox CSS ガイド"を参照してください。

各ライブラリはいつ選択すればよいですか?

正しい選択をするには、特定の要件と制約に応じて異なります。

IronPDFを選ぶとき:

HTML/CSSの忠実度は重要

  • 複雑なレイアウトを備えた最新のWebアプリケーション
  • JavaScriptを多用したコンテンツ
  • 保存が必要なレスポンシブデザイン

迅速な開発が優先

予算の透明性は重要

  • 公開された価格設定により正確な予算策定が可能
  • 予期せぬ費用や隠れた料金はありません
  • 基本ライセンスのすべての機能が含まれています

特定の機能が必要な場合

PDFTron (Apryse) を選択する場合:

エンタープライズドキュメントワークフロー

  • XFAサポートによる複雑なフォーム処理
  • CADファイル変換(DWG、DXF)
  • 高度なOfficeドキュメント処理

機能よりもパフォーマンス

  • 大量のシンプルな文書処理
  • メモリ要件が低い
  • 基本的なHTML変換のニーズ

特殊な要件

  • 組み込みのドキュメントビューアコンポーネント
  • 豊富な注釈タイプ(30種類以上)
  • レガシーシステム統合

大規模エンタープライズ環境

  • 専用サポート契約
  • カスタム機能の開発
  • コンプライアンス認証

要約と結論

IronPDF と PDFTron (Apryse) はどちらも優れた PDF ライブラリですが、それぞれ異なる市場セグメントとユースケースに対応しています。

IronPDF は次の点で優れています:

  • 最新のウェブテクノロジーのサポート(HTML5、CSS3、JavaScript)
  • 開発者に優しいAPI設計
  • 透明性があり、手頃な価格
  • 迅速なアプリケーション開発
  • クラウドとコンテナ化されたデプロイメント

PDFTron (Apryse) の強みは次のとおりです。

  • エンタープライズドキュメントワークフロー
  • CADおよび特殊形式のサポート
  • リソース消費の削減
  • 豊富な注釈機能
  • レガシーシステムの互換性

最新のアプリケーションを構築するほとんどの .NET 開発者にとって、IronPDF は機能、使いやすさ、価値の最適な組み合わせを提供します。 Chrome ベースのレンダリング エンジンにより、ピクセル単位での HTML から PDF への変換が保証され、わかりやすい API により開発が加速されます。

PDFTron は、CAD 変換、複雑なフォーム処理、または従来のドキュメント形式での作業に関する特定の要件を持つ企業にとって、依然として有効です。 ただし、価格の透明性とモジュール型のライセンス構造が欠如しているため、総コストが大幅に増加する可能性があります。

はじめに

IronPDF をお試しください: -無料トライアルをダウンロード -ドキュメントを見る -コード例を参照する

PDFTronを探索: -評価をリクエストする -開発者ポータルにアクセス

決定を下す前に、必ず特定のユースケースで両方のオプションを徹底的に評価してください。 技術的な機能に加えて、長期的なコスト、サポート品質、機能ロードマップなどの要素を考慮してください。

今IronPDFを始めましょう。
green arrow pointer

BRACKET-i-OPEN--PDFTronは各所有者の登録商標です。 このサイトは PDFTron と提携、承認、または後援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

C# で HTML を PDF に変換するにはどうすればいいですか?

IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。

IronPDFとPDFTronのHTMLからPDFへの変換におけるパフォーマンスの違いは何ですか?

IronPDFはChromeベースのエンジンにより、複雑なWebコンテンツの優れたレンダリングを提供し、JavaScriptとCSS3をより良くサポートします。PDFTronはシンプルなHTMLの変換においては速いですが、複雑なコンテンツの処理は効果的ではないかもしれません。

IronPDFとPDFTronのライセンスオプションは何ですか?

IronPDFはすべての機能が含まれた透明で永続的なライセンスを749ドルから提供します。PDFTronはカスタム見積もりが必要で、ライセンスは年間5,000ドルから100,000ドル以上になる可能性があります。

これらのライブラリを使用してASPXページをPDFに変換することは可能ですか?

はい、IronPDFはAspxToPdf.RenderThisPageAsPdfメソッドを使用してコード1行でASPXページをPDFに変換できます。PDFTronはASPXページ変換を直接サポートしていません。

クラウド環境、例えばAzureでどちらのライブラリがより適していますか?

IronPDFはAzureやAWSを含むクラウド環境に最適化されており、FunctionsとWebAppsでシームレスに動作します。PDFTronは最適なクラウド展開のために追加の構成が必要な場合があります。

IronPDFまたはPDFTronで入力可能なPDFフォームを作成することはできますか?

はい、両方のライブラリで入力可能なPDFフォームの作成をサポートしています。IronPDFはHTMLフォームの自動変換にCreatePdfFormsFromHtmlを使用します。PDFTronは豊富なフォームフィールドタイプを提供しますが、より複雑な統合が必要です。

IronPDFとPDFTronのユーザーにはどのようなサポートオプションがありますか?

IronPDFは、開発者への直接アクセスと、返信時間が24-48時間の24/5エンジニアリングサポートを提供しています。PDFTronのサポートオプションはライセンスのティアに基づいて異なり、基本的なフォーラムサポートと有料の直接アシスタンスがあります。

IronPDFとPDFTronは、パスワード保護されたWebサイトの処理でどのように比較されますか?

IronPDFはChromeHttpLoginCredentialsを通じてログインフォームやHTTP認証を処理するための認証をサポートしていますが、PDFTronはこの機能のサポートが限られています。

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技術の革新を推進し続け、次世代の技術リーダーを指導しています。