比較

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

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

PDFreactorとは何ですか?

PDFreactorは、HTMLとCSSコンテンツを高品質のPDFドキュメントに変換する独自の技術を使用する強力なHTML-PDF変換サーバーです。 このライブラリは、高度なCSS Paged Media仕様を含む多くのCSSプロパティをサポートしているため、最高の忠実度を必要とする複雑なレイアウトレンダリングに適しています。

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

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

  • Javaベースのサーバー: Javaランタイム環境を必要とする別のサービスとして実行されます。
  • CSS Paged Mediaのサポート: CSS3およびCSS Paged Media仕様の優れたサポート。
  • サーバーアーキテクチャ: .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 for 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 プロパティに割り当てられ、Convert() メソッドに渡されて、Result オブジェクトが返される Configuration オブジェクトを使用します。 PDF バイトは result.Document を介してアクセスされ、File.WriteAllBytes() を使用してディスクに書き込む必要があります。

IronPDF の ChromePdfRenderer は、HTML を直接受け入れ、SaveAs() メソッドを持つ PdfDocument オブジェクトを返す RenderHtmlAsPdf() を使用します。 このパターンは、コンフィギュレーション・オブジェクト・セレモニーを排除し、より直感的な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 ルールと @bottom-center 領域を使用したCSSページングメディア構文を使用します。 counter(page) 関数はページ番号を提供します。 このアプローチは CSS 標準を活用しますが、CSS の知識と AddUserStyleSheet() による文字列ベースの構成が必要です。

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

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

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

コアクラス

PDFreactorIronPDF
PDFreactorChromePdfRenderer
ConfigurationChromePdfRenderOptions
ResultPdfDocument
config.DocumentRenderHtmlAsPdf(html)
result.Document (バイト[])pdf.BinaryData

構成プロパティ

PDFreactorの構成IronPDF レンダリングオプション
config.Document = htmlrenderer.RenderHtmlAsPdf(html)
config.Document = urlrenderer.RenderUrlAsPdf(url)
config.PageFormat = PageFormat.A4RenderingOptions.PaperSize = PdfPaperSize.A4
config.PageOrientationRenderingOptions.PaperOrientation
config.PageMarginsRenderingOptions.MarginTop/Bottom/Left/Right
config.EnableJavaScript = trueRenderingOptions.EnableJavaScript = true
config.AddUserStyleSheet(css)HTMLにCSSを埋め込む
config.Titlepdf.MetaData.Title
config.Encryptionpdf.SecuritySettings

PDFreactorで利用できない機能

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

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

Java依存の問題

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

  • Java Runtime Required: すべてのサーバーにJRE/JDKをインストールし、維持する必要があります。
  • サーバーアーキテクチャ: REST APIコールを必要とする独立したサービスとして実行されます。
  • 複雑なデプロイメント: CI/CDパイプラインで管理する2つのランタイム(Java + .NET)
  • ネットワーク遅延:すべてのPDF変換には、サーバーへのHTTPラウンドトリップが必要です。
  • 独立したインフラストラクチャー:監視、拡張、保守のための追加サーバー。
  • ライセンスの複雑さ: Javaサービスインスタンスに関連付けられたサーバーごとのライセンス
  • Operational Overhead: 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 ページ メディアのサポートにあります。ドキュメントのフォーマットには、counter(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 for Javaアーキテクチャは、.NET環境での統合に摩擦を生じさせます。 IronPdfは使い慣れたパターンでネイティブ for .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 for 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パイプラインを望んでいる。

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

IronPDFを始めよう

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

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

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