比較

Expert PDFとIronPDFの比較:技術比較ガイド

.NET 開発者が HTML から PDF への変換ライブラリを評価する場合、Expert PDF は確立された HTML5 サポートを備えた商用オプションです。 ただし、そのドキュメントは 2018 年以降更新されておらず、古い Chrome レンダリング エンジンに依存しており、断片化された製品モデルのために多くのチームが代替案を検討しています。 IronPdfは最新のChromiumレンダリング、継続的なアップデート、機能を1つのパッケージに統合したオールインワンライブラリによるモダンなアプローチを提供します。

この比較では、関連する技術的側面から両方のライブラリを検討し、プロの開発者やアーキテクトが .NET PDF のニーズに応じて情報に基づいた決定を下せるよう支援します。

エキスパートPDFを理解する

Expert PDF (ExpertPdf) は、動的な Web ページを PDF ドキュメントに変換するのに役立つ商用の HTML から PDF への変換ライブラリです。 このライブラリはHTML5をサポートしており、最新のWebコンテンツをPDF形式でレンダリングするのに役立ちます。

Expert PDFは、メインの変換インターフェースとしてPdfConverterクラスを使用し、さまざまな変換シナリオのためにGetPdfBytesFromHtmlString()GetPdfBytesFromUrl()GetPdfBytesFromHtmlFile()のようなメソッドを提供します。 このライブラリは、PdfDocumentOptionsPdfHeaderOptionsPdfFooterOptions プロパティを通してコンバータの設定を整理します。

Expert PDFの大きな制限は、PDFのレンダリングに古いバージョンのChromeを使用していることです。 最新の Web 標準と、それ以降の Chromium バージョンに加えられたレンダリングの改善はエキスパートPDFの出力に反映されないため、Flexbox や Grid などの CSS3 機能を使用した最新の Web デザインを扱うときに、レンダリングの精度が低下する可能性があります。

Expert PDFのドキュメントは2018年以来凍結されており、6年以上更新されていないため、開発者が最新の情報、例、ベストプラクティスを見つけることがますます難しくなっています。 ライブラリは断片化された製品群として販売されており、それぞれ個別のパッケージ(HtmlToPdf、PDFMerge、PDFSecurity、PDFSplit、PdfToImage)が必要で、価格は550ドルから1,200ドルです。

IronPDFの理解

IronPDFは継続的なアップデートと改善で知られる.NET PDFライブラリです。 このライブラリは最新のChromiumレンダリングエンジンを使用しているため、最新のWeb標準を満たし、FlexboxやGridレイアウトを含むCSS3をフルサポートしてHTMLを正確にレンダリングします。

IronPDFはChromePdfRendererを主要な変換クラスとして使用し、RenderingOptionsはページサイズ、向き、余白、ヘッダー、フッターの設定を提供します。 ライブラリはPdfDocumentオブジェクトを返し、保存する前にさらに操作できるため、後処理操作に柔軟性を提供します。

IronPDF は、毎月の一貫したリリース、.NET 6/7/8/9+ のネイティブ サポート、Windows、Linux、macOS、Docker 環境全体での真のクロスプラットフォーム互換性を備えた詳細なドキュメントを提供します。

アーキテクチャと製品モデルの比較

これらの.NET PDFライブラリの基本的な違いは、製品構成とレンダリング技術にあります。

アスペクトエキスパートPDFIronPDF
ドキュメント2018年より凍結継続的な更新
レンダリングエンジンレガシーChrome最新のChromium
CSSサポート限定的なCSS3フルCSS3(フレックスボックス、グリッド)
価格$550-$1,200競争力のある価格設定
更新頻度頻度毎月のリリース
製品モデル断片化(5つ以上のDLL)オールインワンライブラリ
モダン.NET制限的.NET 6/7/8/9+ ネイティブ
非同期サポートについて制限的完全なasync/await
セキュリティ・アップデート頻度定期的なパッチ

Expert PDFの断片的な製品群には以下のものがあります:

  • ExpertPdf.HtmlToPdf: HTMLからPDFへの変換
  • ExpertPdf.PDFMerge: PDFの結合
  • ExpertPdf.PDFSecurity:暗号化とパスワード
  • ExpertPdf.PDFSplit: PDF分割
  • ExpertPdf.PdfToImage: PDFから画像への変換

各パッケージには個別のライセンスが必要です。 IronPdfは同等の機能を一つのNuGetパッケージに統合しています。

コードの比較:一般的なPDF操作

HTMLからPDFへの変換

HTMLコンテンツをPDFに変換すると、基本的なAPIの違いがわかります。

エキスパートPDF:

// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Convert HTML string to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Convert HTML string to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);

        Console.WriteLine("PDF created successfully!");
    }
}
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");

        // Save to file
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
$vbLabelText   $csharpLabel

Expert PDFは、GetPdfBytesFromHtmlString()から直接byte[]を返すため、File.WriteAllBytes()による手動でのファイル書き込みが必要です。 IronPDFはSaveAs()メソッドを持つPdfDocumentオブジェクトを返し、よりクリーンな保存操作を提供し、保存前に追加の操作を可能にします。

高度なHTMLレンダリングオプションについては、HTMLからPDFへの変換ガイドをご覧ください。

URLからPDFへの変換

ウェブページをPDF文書としてキャプチャすると、構成パターンの違いがわかります。

エキスパートPDF:

// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Set page size and orientation
        pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
        pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

        // Convert URL to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");

        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Set page size and orientation
        pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
        pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

        // Convert URL to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");

        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);

        Console.WriteLine("PDF from URL created successfully!");
    }
}
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Set page size and orientation
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;

        // Convert URL to PDF
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        // Save to file
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Set page size and orientation
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;

        // Convert URL to PDF
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        // Save to file
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
$vbLabelText   $csharpLabel

どちらのライブラリも、ページサイズと向きの設定を提供します。 Expert PDFはPdfDocumentOptions.PdfPageSize<//code>とPdfDocumentOptions.PdfPageOrientation<//code>を使用し、IronPDFはRenderingOptions.PaperSize<//code>とRenderingOptions.PaperOrientation<//code>を使用します。 ネーミングは同様のパターンに従いますが、IronPDFは印刷用語との一貫性を保つために "Paper "という接頭辞を使用します。

URL レンダリングの詳細については、URL to PDF documentationを参照してください。

ページ番号を含むヘッダーとフッター

ヘッダーとフッターを追加することで、特にページ番号の構文において、API設計の大きな違いが示されます。

エキスパートPDF:

// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Enable header
        pdfConverter.PdfHeaderOptions.ShowHeader = true;
        pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
        pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;

        // Enable footer with page numbers
        pdfConverter.PdfFooterOptions.ShowFooter = true;
        pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
        pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;

        // Convert HTML file to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");

        // Save to file
        System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        // Create the PDF converter
        PdfConverter pdfConverter = new PdfConverter();

        // Enable header
        pdfConverter.PdfHeaderOptions.ShowHeader = true;
        pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
        pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;

        // Enable footer with page numbers
        pdfConverter.PdfFooterOptions.ShowFooter = true;
        pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
        pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;

        // Convert HTML file to PDF
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");

        // Save to file
        System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Configure header
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            DrawDividerLine = true
        };

        // Configure footer with page numbers
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true
        };

        // Convert HTML file to PDF
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");

        // Save to file
        pdf.SaveAs("output-with-header-footer.pdf");

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();

        // Configure header
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            DrawDividerLine = true
        };

        // Configure footer with page numbers
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true
        };

        // Convert HTML file to PDF
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");

        // Save to file
        pdf.SaveAs("output-with-header-footer.pdf");

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
$vbLabelText   $csharpLabel

Expert PDFは、ブーリアンフラグ(ShowHeader = true)でヘッダー/フッターを有効にする必要があり、&p;&P;トークンでそれぞれ現在のページと総ページを表すテキストベースの設定を使用します。 IronPDFは位置固有のプロパティ(CenterText, RightText)と{page} / {total-pages}プレースホルダーを持つTextHeaderFooterオブジェクトを使用します。 IronPDFはDrawDividerLineも提供し、視覚的に分離します。

完全なHTMLコントロールのために、IronPDFはHtmlHeaderFooterもサポートしており、ヘッダーとフッターで完全なHTML/CSSスタイリングを可能にしています。

メソッド マッピング リファレンス

Expert PDFの移行を評価したり、機能を比較したりする開発者のために、このマッピングは同等の操作を示しています:

コア クラス マッピング

エキスパートPDFIronPDF
<コード>PdfConverter</コード<コード>ChromePdfRenderer</コード
<コード>PdfDocumentOptions</コード<コード>ChromePdfRenderOptions</コード
<コード>PdfSecurityOptions</コード<コード>PdfDocument.SecuritySettings</コード
<コード>PdfHeaderOptions</コードHtmlHeaderFooterまたはTextHeaderFooter
<コード>PdfFooterOptions</コードHtmlHeaderFooterまたはTextHeaderFooter
<コード>PDFMerge</コードPdfDocument.Merge()を使用してください。

メソッドマッピング

エキスパートPDFIronPDF
pdfConverter.GetPdfBytesFromHtmlString(html).renderer.RenderHtmlAsPdf(html).BinaryData
pdfConverter.GetPdfBytesFromUrl(url).renderer.RenderUrlAsPdf(url).BinaryData
pdfConverter.GetPdfBytesFromHtmlFile(パス)renderer.RenderHtmlFileAsPdf(path).BinaryData
pdfConverter.SavePdfFromUrlToFile(url, path).renderer.RenderUrlAsPdf(url).SaveAs(path)を実行します。

コンフィギュレーション マッピング

エキスパートPDFIronPDF
PdfDocumentOptions.PdfPageSize=PdfPageSize.A4RenderingOptions.PaperSize=PdfPaperSize.A4
PdfDocumentOptions.PdfPageOrientation=PortraitRenderingOptions.PaperOrientation=PdfPaperOrientation.Portrait
PdfDocumentOptions.MarginTopRenderingOptions.MarginTop
pdfConverter.LicenseKey = "...".IronPdf.License.LicenseKey = "...".

ページ番号トークン

エキスパートPDFIronPDF
&p; (現在のページ)<コード>{ページ}</コード
&P;(総ページ数)<コード>{総ページ数}</コード

機能比較の概要

フィーチャーエキスパートPDFIronPDF
HTMLからPDFへ
URLからPDFへ
HTMLファイルからPDFへ
ヘッダー/フッター✅ (テキストベース)✅ (HTMLまたはテキスト)
ページ番号✅ (&p;/&P;)✅ (<コード>{ページ}</コード>/<コード>{総ページ数}</コード>)
PDFマージ✅ (別パッケージ)✅ (含まれる)
PDFセキュリティ✅ (別パッケージ)✅ (含まれる)
PDF分割✅ (別パッケージ)✅ (含まれる)
PDFから画像へ✅ (別パッケージ)✅ (含まれる)
CSS3 フレックスボックス/グリッド❌ (限定)✅ (フルサポート)
クロスプラットフォーム制限的サポート対象

チームがエキスパートPDFからIronPDFへの移行を検討するとき

開発チームはいくつかの理由からExpert PDFからIronPDFへの移行を評価しています:

ドキュメントの最新性:エキスパートPDFのドキュメントは 2018 年以降凍結されており、6 年以上更新されていません。 最新の情報、例、ベストプラクティスを求めているチームは、IronPDFの継続的に更新されるドキュメントが最新の開発ワークフローに適していることに気づくでしょう。

最新の CSS レンダリング:エキスパートPDFは、最新の CSS3 機能 (Flexbox、グリッド、CSS 変数) を正しくレンダリングしない可能性がある古い Chrome バージョンに依存しています。 IronPDFの最新のChromiumエンジンは、現代的なウェブデザインの正確なレンダリングを保証します。

パッケージの統合:エキスパートPDFの断片化された製品スイート (HtmlToPdf、PDFMerge、PDFSecurity、PDFSplit、PdfToImage) には複数のライセンスが必要です。 IronPdfは同等のすべての機能を単一のNuGetパッケージに統合し、依存関係の管理を簡素化し、ライセンスの複雑さを軽減します。

価格対価値評価:エキスパートPDFは、ライセンスあたり 550 ~ 1,200 ドルという高額な料金を請求しながら、時代遅れのレンダリング テクノロジを提供しています。 チームは、提供されるレガシー技術に見合ったコストかどうかを評価します。

最新の .NET サポート: .NET 6/7/8/9+ を対象とするアプリケーションは、Expert PDF の限定的な最新の .NET サポートとは異なり、IronPDF のネイティブ サポートと完全な async/await パターンのメリットを享受できます。

更新頻度:エキスパートPDFの更新頻度は低く、IronPDF の月次リリースとは対照的であり、機能の可用性とセキュリティ パッチの適時性の両方に影響します。

長所と考慮点

エキスパートPDFの強み

  • HTML5 サポート:基本的な HTML5 レンダリング機能 -確立されたライブラリ:実稼働環境で実証済み -使い慣れたAPI:シンプルなPdfConverterパターン

エキスパートPDFの考察

-ドキュメント凍結: 2018年以降更新なし -レガシーレンダリング: Chromeの古いバージョンではCSS3のサポートが制限されています -断片化された製品:個別のパッケージとライセンスが必要 -プレミアム価格:レガシーテクノロジーの場合は550ドルから1,200ドル -限定的なモダン .NET:現在の .NET バージョンより遅れている -更新頻度が低い:セキュリティと機能の更新はまばらです

IronPDFの強み

-最新のレンダリング:ピクセルパーフェクトな出力を実現する最新の Chromium エンジン -オールインワンパッケージ: PDF 生成、マージ、セキュリティ、抽出を 1 つの NuGet で実現 -積極的な開発:新機能とセキュリティパッチを含む毎月のアップデート -より充実したドキュメント:包括的なチュートリアルと例 -真のクロスプラットフォーム: Windows、Linux、macOS、Docker をサポート -最新の .NET: .NET 6/7/8/9 以降のネイティブ サポート -完全な非同期サポート:最新の async/await パターンを全面的にサポート

IronPDFについての考察

  • 2 段階の保存:レンダリングはPdfDocument返し、次にSaveAs()を呼び出します (柔軟性を提供) -異なるプレースホルダー: &amp;p;の代わりに{page}構文を使用します。

結論

Expert PDFとIronPDFはどちらも.NET開発者のためにHTMLからPDFへの変換を提供しますが、技術的なタイムラインは異なります。Expert PDFは確立された機能を提供するが、2018年以降凍結されたドキュメント、CSS3サポートを制限するレガシーなChromeレンダリングエンジン、複数のライセンスを必要とする断片的な製品モデルを抱えている。

IronPdfは最新のChromiumレンダリング、毎月の継続的なアップデート、包括的なドキュメント、機能を統合したオールインワンパッケージなど、最新の選択肢を提供します。 最新のCSS3サポート、アクティブなメンテナンス、クロスプラットフォーム展開を必要とするチームにとって、IronPdfはこれらの特定の要件に対応します。

組織が.NET 10、C# 14、2026年までのアプリケーション開発を計画する中で、その選択は特定の優先順位によって決まります。 Expert PDFの実装やシンプルなHTMLレイアウトを確立しているチームは、引き続き適切な結果を見つけることができるでしょう。 最新のウェブデザイン、積極的なセキュリティパッチ、統合ライセンスには、IronPDFがより適切なアプローチを提供します。

無料トライアルでIronPDFの評価を開始し、包括的なドキュメントを参照して、特定の要件への適合性を評価してください。