比較

PDFreactorとIronPDFの比較:技術比較ガイド

.NET 開発者が HTML を PDF に変換する必要がある場合、根本的に異なるアーキテクチャを持つライブラリに遭遇します。 PDFreactorは優れたCSS Paged Mediaサポートを持つJavaベースの変換サーバーとして動作し、IronPDFはChromiumエンジンを組み込んだ.NETネイティブライブラリを提供します。この比較では、両ソリューションのアーキテクチャの違い、統合の複雑さ、異なるアプリケーション要件への適合性を分析します。

PDFreactorとは何ですか?

PDFreactor は、独自のテクノロジーを使用して HTML および CSS コンテンツを高品質の PDF ドキュメントに変換する強力な HTML から PDF への変換サーバーです。 このライブラリは、高度なCSSページングメディア仕様を含む多くの CSS プロパティをサポートしているため、最高の忠実度が求められる複雑なレイアウト レンダリングに適しています。

PDFreactorは独立したJavaベースのサービスとして実行され、.NETアプリケーションはREST APIコールまたはソケット接続を介してそれと通信します。 このライブラリは、Configurationオブジェクトパターンを使用しており、設定とHTMLコンテンツが一緒にバンドルされ、処理のためにサーバーに送信されます。

PDFreactorの主な特徴は以下の通りです:

  • Javaベースのサーバー: Javaランタイム環境を必要とする別のサービスとして実行されます
  • CSS ページメディアのサポート: CSS3 および CSS ページメディア仕様の優れたサポート -サーバーアーキテクチャ: .NETアプリケーションからのREST APIまたはソケット通信が必要 -構成オブジェクトパターン: Configurationオブジェクトを使用して設定とコンテンツをバンドルします -高忠実度レンダリング:複雑な印刷品質のドキュメントレイアウトに最適化
  • Java経由のクロスプラットフォーム: Javaがインストールされているあらゆるシステムで実行可能

IronPDFとは何ですか?

IronPDF は、完全な PDF ライフサイクル管理を提供する完全なネイティブ .NET ライブラリです。 ChromePdfRenderer クラスは、HTML から PDF への変換に埋め込み Chromium レンダリング エンジンを使用し、外部依存なしに CSS3 と JavaScript を完全にサポートします。

PDFreactorのサーバーアーキテクチャとは異なり、IronPDFは.NETアプリケーション内でインプロセスで動作します。 HTMLからPDFへの変換は、HTTPリクエストではなく、シンプルなメソッド呼び出しになります。

アーキテクチャの比較

PDFreactorとIronPDFの基本的な違いは、外部Javaサーバーとネイティブ.NETライブラリーのアーキテクチャにあります。

アスペクトPDFreactorIronPDF
ランタイムJava(外部サーバー).NET ネイティブ(進行中)
アーキテクチャREST API サービスNuGetライブラリ
デプロイメントJava + サーバー構成単一のNuGetパッケージ
依存関係についてJRE + HTTPクライアント自己完結型
レイテンシーについてネットワーク往復直接メソッド呼び出し
CSSサポートCSSページングメディアChromiumエンジン
PDF操作変換のみフルライフサイクル
ネイティブ.NETライブラリなし(Javaベース)はい
クロスプラットフォーム対応可(Javaに依存)はい(バンドルされているChromium)
展開の複雑さJavaのため、より複雑シンプル、.NETと直接統合

.NET環境で作業するチームにとって、PDFreactorのJava依存は、CI/CDパイプラインで管理する2つのランタイム、監視と保守のための個別のインフラストラクチャ、変換のたびに発生するネットワーク遅延など、デプロイに大きな複雑さをもたらします。

HTMLからPDFへの変換

HTMLコンテンツをPDFに変換することで、これらのライブラリ間の異なるパターンを示します。

PDFreactorのHTMLからPDFへのアプローチ:

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
$vbLabelText   $csharpLabel

IronPDFのHTMLからPDFへのアプローチ:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFreactorは、HTMLコンテンツがDocumentプロパティに割り当てられ、Resultオブジェクトを返すConvert()メソッドに渡されるConfigurationオブジェクトを使用します。 PDFバイトは、result.Documentを介してアクセスされ、File.WriteAllBytes()を用いてディスクに書き込まれなければなりません。

IronPDFのChromePdfRendererRenderHtmlAsPdf()を使用し、直接HTMLを受け入れ、SaveAs()メソッドでPdfDocumentオブジェクトを返します。 このパターンは、コンフィギュレーション・オブジェクト・セレモニーを排除し、より直感的なAPIを提供します。 HTMLからPDFへの変換に関する詳しいガイダンスについては、HTML to PDFチュートリアルをご覧ください。

URLからPDFへの変換

ウェブページをPDFに変換する場合も、似たようなパターンの違いが見られます。

PDFreactor URL-to-PDF アプローチ:

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
$vbLabelText   $csharpLabel

IronPDF URL-to-PDF アプローチ:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

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

        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

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

        pdf.SaveAs("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFreactorは、HTML文字列とURLの両方に同じConfiguration.Documentプロパティを使用します。 IronPDFは専用のRenderUrlAsPdf()メソッドを提供し、実行される操作を明示的に示すことで、コードをよりセルフドキュメント化します。 URLからPDFへの変換についてはIronPDFのドキュメントをご覧ください。

ヘッダーとフッター

ヘッダーとフッターを追加すると、ライブラリ間で根本的に異なるアプローチが明らかになります。

PDFreactorのヘッダーとフッター(CSS Paged Media):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
$vbLabelText   $csharpLabel

IronPDFヘッダーとフッター(APIベース):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFreactorは、@pageルールと@top-center/@bottom-centerリージョンを持つCSS Paged Media構文を使用します。 counter(page)関数は、ページ番号を提供します。 このアプローチは CSS 標準を活用しますが、CSS の知識と AddUserStyleSheet() による文字列ベースの設定が必要です。

IronPDFはTextHeaderFooterオブジェクトをRenderingOptionsに割り当てた専用APIを使用します。 {page}プレースホルダはページ番号を提供します。 このアプローチは、インテリセンスのサポート、コンパイル時のチェック、より発見しやすいAPIを提供します。 包括的なヘッダー/フッターの実装については、headers and footers documentationを参照してください。

APIマッピングリファレンス

PDFreactorからIronPdfへの移行を検討しているチームにとって、APIマッピングを理解することは開発工数の見積もりに役立ちます。

コアクラス

PDFreactorIronPDF
<コード>PDFreactor</コード<コード>ChromePdfRenderer</コード
<コード>コンフィギュレーション</コード<コード>ChromePdfRenderOptions</コード
<コード>結果</コード<コード>PdfDocument</コード
<コード>config.Document</コードRenderHtmlAsPdf(html)を使用してください。
result.Document (byte[])<コード>pdf.BinaryData</コード

構成プロパティ

PDFreactorの構成IronPDF レンダリングオプション
config.Document = html.renderer.RenderHtmlAsPdf(html).
config.Document = url.renderer.RenderUrlAsPdf(url)のようにします。
config.PageFormat = PageFormat.A4.RenderingOptions.PaperSize=PdfPaperSize.A4
<コード>config.PageOrientation</コード<コード>RenderingOptions.PaperOrientation</コード
<コード>config.PageMargins</コードRenderingOptions.MarginTop/Bottom/Left/Right
config.EnableJavaScript = true.RenderingOptions.EnableJavaScript = true.
config.AddUserStyleSheet(css).HTMLにCSSを埋め込む
<コード>config.Title</コード<コード>pdf.MetaData.Title</コード
<コード>config.Encryption</コード<コード>pdf.SecuritySettings</コード

PDFreactorで利用できない機能

IronPDFの特徴翻訳内容
PdfDocument.Merge()を使用してください。複数のPDFを結合
<コード>pdf.ApplyWatermark()</コード></コード透かしの追加
pdf.ExtractAllText()を使用してください。テキストコンテンツの抽出
pdf.CopyPages(start, end).特定のページを抜粋
<コード>pdf.SecuritySettings</コードパスワード保護と暗号化
<コード>pdf.Sign(証明書)</コードデジタル署名
pdf.Form.GetFieldByName(name).Valueフォーム入力

PDFreactorは変換のみに焦点を当て、IronPDFは完全なPDFライフサイクル管理を提供します。 PDF操作機能については、PDFのマージと分割ガイドを参照してください。

Java依存の問題

PDFreactorのJavaベースのアーキテクチャは、.NET環境では大きな課題となります:

  • Java ランタイムが必要:すべてのサーバーに JRE/JDK をインストールして維持する必要があります -サーバーアーキテクチャ: REST API呼び出しを必要とする別のサービスとして実行されます -複雑なデプロイメント: CI/CD パイプラインで管理する 2 つのランタイム (Java + .NET) -ネットワーク遅延: PDF 変換には必ずサーバーへの HTTP ラウンドトリップが必要です -独立したインフラストラクチャ:監視、拡張、保守のための追加サーバー -ライセンスの複雑さ:サーバーごとのライセンスは Java サービスインスタンスに関連付けられています -運用オーバーヘッド:維持、監視、更新のための 2 つのランタイム

IronPdfは.NETネイティブライブラリとしてインプロセスで動作するため、これらの課題を解決します。 Javaのインストールも、サーバーの設定も、ネットワークの遅延もありません。

機能比較の概要

特徴/側面PDFreactorIronPDF
ネイティブ.NETライブラリなし(Javaベース)はい
クロスプラットフォーム対応可(Javaに依存)はい(バンドルされているChromium)
CSSサポートCSS3、CSS Paged Mediaの高度なサポートChromiumによる包括的なHTML5/CSS3
展開の複雑さJavaのため、より複雑シンプル、.NETと直接統合
PDF操作の特徴基本(生成のみ)広範囲(マージ、分割、編集、注釈付け)
ライセンスモデル商用商用
主なユースケース忠実度の高い複雑な文書幅広い用途、.NETアプリでの使いやすさ
ヘッダー/フッターCSSページングメディア(@pageルール)APIベース(TextHeaderFooterオブジェクト)
JavaScriptの実行サポート対象対応(Chromiumエンジン)

透かし、PDFマージ、テキスト抽出、フォーム記入を必要とするアプリケーションは、PDFreactorだけでは実現できません。

CSSページングされたメディアとAPIベースのアプローチ

PDFreactorの強みは、CSS Paged Mediaのサポートにあり、@page@top-centercounter(page)のような標準的なCSSルールを文書の書式設定に使用します。 このアプローチは、CSSの専門知識が豊富なチームに有利です。

IronPDFはTextHeaderFooterHtmlHeaderFooterのような専用オブジェクトを持つAPIベースのアプローチを使用しています。 これにより、以下のことが可能になります:

  • 発見しやすいインテリセンスのサポート
  • コンパイル時の型チェック
  • 文字列ベースのCSSのメンテナンスが不要
  • より簡単なデバッグとテスト

チームは、CSS Paged Mediaの専門知識があるかどうか、またはAPIベースの設定が望ましいかどうかを評価する必要があります。

チームがPDFreactorからIronPDFへの移行を検討するとき

PDFreactorの代替としてIronPDFを評価するチームにはいくつかの要因があります:

展開の簡素化:PDFreactorには、Java ランタイムのインストール、サーバー構成、および REST API の統合が必要です。 IronPDFは外部依存のない単一のNuGetパッケージとしてデプロイされます。

インフラストラクチャの削減: PDFreactorは、Javaサービスをホストするために別途サーバーインフラストラクチャを必要とします。IronPDFはインプロセスで実行されるため、監視および保守のための追加サーバーが不要になります。

ネイティブ .NET 統合:PDFreactorの Java アーキテクチャにより、.NET 環境での統合に問題が生じます。 IronPdfは使い慣れたパターンでネイティブの.NET APIを提供します。

PDF 操作のニーズ:PDFreactorは変換に重点を置いています。 文書操作(結合、分割、透かし)を必要とするアプリケーションはIronPdfの拡張機能を必要とします。

CI/CD の簡素化: .NET CI/CD パイプラインで Java 依存関係を管理すると、複雑さが増します。 IronPdfは標準的なNuGetリストアへのパイプラインを簡素化します。

遅延の削減:PDFreactorのネットワーク ラウンドトリップにより、すべての変換に遅延が発生します。 IronPdfのインプロセスアーキテクチャはネットワークのオーバーヘッドを排除します。

インストールの比較

PDFreactorのインストール:

Install-Package PDFreactor.Native.Windows.x64
Install-Package PDFreactor.Native.Windows.x64
SHELL

PlusのJavaランタイムのインストールとサーバー設定。

IronPDFのインストール:

Install-Package IronPdf
Install-Package IronPdf
SHELL

IronPDFはライセンスキーの設定が必要です:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

IronPDFの最初の実行はChromiumレンダリングエンジンをダウンロードします(~150MBワンタイム)。 Linuxのデプロイメントには、追加のシステム依存が必要です。 このライブラリは、.NET Framework、.NET Core、.NET 5+、および.NET 10とC# 14への前方互換性をサポートしています。

決定する

PDFreactorとIronPDFのどちらを選択するかは、プロジェクトの要件と既存のインフラストラクチャに依存します:

次の場合には、PDFreactor を検討してください:プロジェクトで広範な CSS ページ メディアのサポートによる高忠実度のレンダリングが求められ、チームに強力な CSS の専門知識があり、Java 依存関係を処理でき、変換のみの機能で十分です。

次のような場合は、IronPDF を検討してください: .NET 環境で開発していて、スムーズな統合を希望している場合、Java の依存関係とサーバー インフラストラクチャを排除したい場合、変換以外の PDF 操作が必要な場合、CSS 文字列よりも API ベースの構成を好む場合、または簡素化されたデプロイメントと CI/CD パイプラインが必要な場合。

ほとんどの最新の.NETアプリケーション、特にデプロイのシンプルさ、ネイティブ統合、拡張PDF機能を優先するアプリケーションにとって、IronPDFはPDFreactorのJavaベースのサーバーアプローチよりもアーキテクチャ上大きな利点を提供します。

IronPDFを始めよう

IronPDFをPDF生成のニーズに合わせて評価する:

1.NuGet経由でインストールします:IronPdfをインストールします。 2.使い始めのドキュメントを確認してください。 3.変換パターンについては、HTML to PDF チュートリアルを参照してください。 4.完全なメソッドのドキュメントについては、APIリファレンスを確認してください。

IronPDFチュートリアルは、基本的な変換から高度なPDF操作まで、一般的なシナリオをカバーする包括的な例を提供します。