比較

Scryber.CoreとIronPDFの比較:技術比較ガイド

Scryber.CoreとIronPDFの比較: .NET PDF生成の比較ガイド

.NET開発者がPDF生成ソリューションを評価するとき、Scryber.CoreとIronPDFは異なるアーキテクチャ哲学とライセンスモデルを持つ異なるアプローチを代表します。 Scryber.Coreはカスタム解析エンジンを備えたXML/HTMLテンプレートを使用するオープンソースライブラリを提供し、IronPDFは忠実度の高いHTMLからPDFへの変換のために設計されたChromiumベースのレンダリングエンジンを提供します。 この技術比較では、2025年以降に.NETアプリケーションのPDF生成を決定するプロの開発者やアーキテクトにとって最も重要な次元にわたって、両ライブラリを検証します。

Scryber.Coreを理解する

Scryber.Coreは、C#を使用してHTMLテンプレートをPDFに変換するオープンソースライブラリです。 このライブラリは、HTMLの汎用性とCSSのスタイリング機能を活用して、テンプレート駆動型のPDF生成アプローチを提供します。 Scryber.Coreは、ブラウザベースのレンダラーではなく、独自のDocument.ParseDocument()メソッドを通してドキュメントを処理するカスタムパースエンジンを使用しています。

このライブラリはLGPLライセンスの下で運営されており、開発者がLGPLの条項に従っている限り、プロジェクトでScryber.Coreを使用するための直接的なコストは発生しません。 しかし、このライセンスモデルは、ライブラリ自体へのいかなる変更もオープンソースであることを要求しており、これは、いくつかの商用アプリケーションにとっては制限となり得る。

Key Consideration: Scryber.Coreは、データテンプレートとXMLを多用する設定アプローチに独自のバインディング構文を使用しています。 このライブラリはJavaScriptを実行しないため、ブラウザベースのソリューションに比べ、CSSのサポートが制限された静的レンダリングのみを提供します。

IronPDFの理解

IronPDFは、Chromiumベースのレンダリングエンジンを使用する、商業的にサポートされているPDF生成ライブラリを提供します。このライブラリは、FlexboxやCSS Gridを含む最新のCSS3機能と、JavaScript ES2024の完全な実行をサポートし、HTML、CSS、JavaScriptをブラウザレベルで忠実にPDF文書に変換します。

IronPDFはNuGetパッケージとしてインストールされ、LGPLに関連するライセンス制限はありません。 ライブラリは、豊富なドキュメント、Professionalなサポート、オープンソースの代替ツールと比較して大規模なコミュニティを提供します。

アーキテクチャの比較

Scryber.CoreとIronPdfの基本的な違いはレンダリング機能と開発ワークフローに影響します:

アスペクトScryber.CoreIronPDF
ライセンスLGPL(制限付き)商用
レンダリングエンジンカスタムパーサークロム
CSSサポート制限的完全なCSS3
JavaScriptなしフルES2024
テンプレートバインディング独自のXML標準(Razorなど)
学習曲線カスタム構文標準的なHTML/CSS
非同期サポート制限的フル
ドキュメンテーション基本広範囲

機能比較マトリックス

フィーチャーScryber.CoreIronPDF
HTMLからPDFへ基本完全なChromium
URLからPDFへ手動フェッチが必要ネイティブサポート
CSSグリッド制限的フルサポート
フレックスボックス制限的フルサポート
JavaScriptなしフルES2024
データバインディング独自のXMLRazor/ハンドルバーを使用する
ヘッダー/フッターXMLベースHTML/CSS
PDFのマージ制限的内蔵
PDFの分割なしはい
透かし基本フルHTML
デジタル署名なしはい
PDF/Aなしはい
パスワード保護基本フル
クロスプラットフォームはいはい

HTMLからPDFへの変換

コアとなるHTMLからPDFへのワークフローは、ライブラリ間の基本的なAPIの違いを示しています。

Scryber.CoreのHTML変換

Scryber.Coreは、Document.ParseDocument()メソッドとカスタム構文解析エンジンを使用しています:

// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

        using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
        {
            doc.SaveAsPDF("output.pdf");
        }
    }
}
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";

        using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
        {
            doc.SaveAsPDF("output.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このアプローチには以下が必要です:

  • 適切なリソース廃棄のための明示的なusingステートメント
  • HTML 文字列解析の ParseSourceType.DynamicContent<//code> パラメータ
  • 標準的なHTMLレンダリングパターンとは異なる、ドキュメントベースのAPI

IronPDFのHTML変換

IronPdfはChromePdfRendererクラスを提供し、HTMLを直接変換します:

// NuGet: Install-Package IronPdf
using IronPdf;

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

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

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

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RenderHtmlAsPdf メソッドは、Chromium レンダリング エンジンを使用して、CSS とJavaScriptを完全にサポートした HTML を処理します。 APIは、明示的なリソース管理構文を必要としない、単純なレンダリング-保存パターンに従っています。

URLからPDFへの変換

ライブのウェブページをPDFに変換すると、ライブラリの間に大きな能力差があることがわかります。

Scryber.CoreのURL処理

Scryber.CoreはURLを直接レンダリングすることができません。開発者はHTMLコンテンツを手動で取得する必要があります:

// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var client = new HttpClient();
        string html = await client.GetStringAsync("https://www.example.com");

        using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
        {
            doc.SaveAsPDF("webpage.pdf");
        }
    }
}
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var client = new HttpClient();
        string html = await client.GetStringAsync("https://www.example.com");

        using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
        {
            doc.SaveAsPDF("webpage.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この回避策

  • 明示的なHTTPクライアント管理が必要
  • JavaScriptを実行せずに生のHTMLをダウンロード
  • 動的にレンダリングされたコンテンツをキャプチャすることはできません。
  • 相対的なリソース参照(画像、スタイルシート)を失います。

IronPDFのURL変換

IronPdfはネイティブのURLからPDFへの変換を提供します:

// NuGet: Install-Package IronPdf
using IronPdf;

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;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RenderUrlAsPdf メソッドは、Chromium エンジンを使用して URL に移動し、JavaScript を実行し、CSS スタイリングを適用し、完全にレンダリングされたページを PDF ドキュメントとしてキャプチャします。

カスタム レンダリング設定

ページ構成とレンダリングオプションは、さまざまなAPIアプローチを示しています。

Scryber.Coreのカスタム設定

Scryber.Coreは、ドキュメントのRenderOptionsプロパティを通して設定を行います:

// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using Scryber.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";

        using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
        {
            doc.RenderOptions.Compression = OutputCompressionType.FlateDecode;
            doc.RenderOptions.PaperSize = PaperSize.A4;
            doc.SaveAsPDF("custom.pdf");
        }
    }
}
// NuGet: Install-Package Scryber.Core
using Scryber.Core;
using Scryber.Core.Html;
using Scryber.Drawing;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";

        using (var doc = Document.ParseDocument(html, ParseSourceType.DynamicContent))
        {
            doc.RenderOptions.Compression = OutputCompressionType.FlateDecode;
            doc.RenderOptions.PaperSize = PaperSize.A4;
            doc.SaveAsPDF("custom.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

設定は、ドキュメントの解析後、保存する前に行われます。 余白の設定には、XMLベースのスタイリングやプログラムによるページセクションの操作が必要です。

IronPDFカスタム設定

IronPdfは変換前にレンダラーのRenderingOptionsプロパティを通して設定を行います:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 40;
        renderer.RenderingOptions.MarginBottom = 40;

        string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 40;
        renderer.RenderingOptions.MarginBottom = 40;

        string html = "<html><body><h1>Custom PDF</h1><p>With custom margins and settings.</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RenderingOptionsプロパティは、強くタイプされたプロパティを通して、用紙サイズ、余白、および他のPDF設定への直接アクセスを提供します。 レンダラーは一度設定すれば、複数の変換に再利用できます。

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

Scryber.CoreからIronPDFへの移行を検討しているチームは、このマッピングを参考にしてください:

Scryber.CoreIronPDFノート
Document.ParseDocument(html).renderer.RenderHtmlAsPdf(html).HTMLレンダリング
Document.ParseTemplate(パス)renderer.RenderHtmlFileAsPdf(path)のようにします。ファイルレンダリング
doc.SaveAsPDF(パス)を実行します。pdf.SaveAs(path)のようにします。ファイルに保存
<コード>doc.SaveAsPDF(stream)</コード><コード>doc.SaveAsPDF(stream)pdf.Streamまたは pdf.BinaryDataストリーム/バイトを取得
<コード>doc.Info.Title</コード<コード>pdf.MetaData.Title</コードメタデータ
<コード>doc.Info.Author</コード<コード>pdf.MetaData.Author</コードメタデータ
<コード>PDFページ</コード<コード>pdf.Pages[i]</コードページへのアクセス
<コード>PDFLayoutDocument</コード<コード>レンダリングオプション</コードレイアウト制御
<コード>PDFStyle</コードHTMLのCSSスタイリング
データバインディング (<コード>{{値}}</コード>)レイザー/文字列補間テンプレート作成
doc.RenderOptions.PaperSize(英語renderer.RenderingOptions.PaperSizeページサイズ

テンプレートバインディングの違い

Scryber.Coreは、独自のXMLベースのバインディング構文を使用するため、カスタムテンプレート言語を習得する必要があります:

<!-- Scryber proprietary binding -->
<pdf:Para text='{{model.Name}}' />
<pdf:Para text='Total: {{model.Total:C}}' />
<pdf:ForEach on='{{model.Items}}'>
    <pdf:Para text='{{.Name}}: {{.Price}}' />
</pdf:ForEach>
<!-- Scryber proprietary binding -->
<pdf:Para text='{{model.Name}}' />
<pdf:Para text='Total: {{model.Total:C}}' />
<pdf:ForEach on='{{model.Items}}'>
    <pdf:Para text='{{.Name}}: {{.Price}}' />
</pdf:ForEach>
XML

IronPDFは標準的なC#の文字列補間やテンプレートエンジン(Razor, Handlebars)を使用します:

// Standard C# with IronPDF
var items = model.Items.Select(i => $"<li>{i.Name}: {i.Price:C}</li>");

var html = $@"
<p>{model.Name}</p>
<p>Total: {model.Total:C}</p>
<ul>
    {string.Join("", items)}
</ul>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Standard C# with IronPDF
var items = model.Items.Select(i => $"<li>{i.Name}: {i.Price:C}</li>");

var html = $@"
<p>{model.Name}</p>
<p>Total: {model.Total:C}</p>
<ul>
    {string.Join("", items)}
</ul>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFのアプローチは、開発者に独自のテンプレート構文を習得させるのではなく、既存のC#やウェブ開発スキルを活用します。

ヘッダーとフッターの実装

ドキュメントのヘッダーとフッターを見ると、ワークフローに大きな違いがあることがわかります。

Scryber.Coreヘッダーとフッター

Scryber.Coreは、XMLベースのヘッダーとフッターの定義を必要とします:

<!-- Scryber XML template -->
<?xml version='1.0' encoding='utf-8' ?>
<pdf:Document xmlns:pdf='http://www.scryber.co.uk/schemas/core/release/v1/Scryber.Components.xsd'>
    <Pages>
        <pdf:Section>
            <Header>
                <pdf:Para text='Company Report' />
            </Header>
            <Footer>
                <pdf:Para text='Page {{pagenum}} of {{pagetotal}}' />
            </Footer>
            <Content>
                <pdf:H1 text='Content Here' />
            </Content>
        </pdf:Section>
    </Pages>
</pdf:Document>
<!-- Scryber XML template -->
<?xml version='1.0' encoding='utf-8' ?>
<pdf:Document xmlns:pdf='http://www.scryber.co.uk/schemas/core/release/v1/Scryber.Components.xsd'>
    <Pages>
        <pdf:Section>
            <Header>
                <pdf:Para text='Company Report' />
            </Header>
            <Footer>
                <pdf:Para text='Page {{pagenum}} of {{pagetotal}}' />
            </Footer>
            <Content>
                <pdf:H1 text='Content Here' />
            </Content>
        </pdf:Section>
    </Pages>
</pdf:Document>
XML

このアプローチでは、独自の名前空間宣言と要素名を持つXMLテンプレートファイルが必要です。

IronPDFのヘッダーとフッター

IronPdfは完全にプログラムされたHTMLベースのヘッダーとフッターの設定を提供します:

using IronPdf;

var renderer = new ChromePdfRenderer();

// HTML header with full CSS support
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: center; font-size: 12pt; border-bottom: 1px solid #ccc;'>
            Company Report
        </div>",
    MaxHeight = 30
};

// HTML footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: center; font-size: 10pt;'>
            Page {page} of {total-pages}
        </div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content Here</h1>");
pdf.SaveAs("report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// HTML header with full CSS support
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: center; font-size: 12pt; border-bottom: 1px solid #ccc;'>
            Company Report
        </div>",
    MaxHeight = 30
};

// HTML footer with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; text-align: center; font-size: 10pt;'>
            Page {page} of {total-pages}
        </div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf("<h1>Content Here</h1>");
pdf.SaveAs("report.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFのHtmlHeaderFooterクラスは{page}{total-pages}プレースホルダーでHTML/CSSのスタイリングを可能にします。

LGPLライセンスの考察

Scryber.CoreのLGPLライセンスには、商用アプリケーションに影響を与える特定の義務があります:

LGPLの要件

  • Scryber.Coreライブラリ自体に変更を加える場合は、オープンソースでなければなりません。
  • アプリケーションは、ユーザがLGPLライブラリを変更したバージョンに置き換えることができるようにしなければなりません。
  • 商用配布のシナリオによっては、ソースの開示が必要になる場合があります。

IronPDF商用ライセンス

  • ソース開示の要件なし
  • 改変や配布に関する制限はありません。
  • コンプライアンスの複雑さを排除した明確なライセンシング
  • プロフェッショナルサポートを含む

長期的な商用展開を評価する組織にとって、ライセンスモデルの違いは、法的およびコンプライアンス計画に大きく影響します。

チームがScryber.Coreへの移行を検討するとき

開発チームは、Scryber.Coreに代わる翻訳を検討する必要があります:

LGPLライセンスの懸念は、ソース開示義務がビジネス要件と衝突する商用アプリケーションに影響します。 IronPdfの商用ライセンスはこれらの制約を排除します。

限られたCSSサポートは、デザインが最新のCSS機能を使用するときに問題になります。 Scryber.Coreのカスタムパーサーは、Flexbox、CSS Grid、またはChromiumベースのエンジンがネイティブで処理する複雑なスタイリングをレンダリングすることはできません。

JavaScriptの実行は、動的コンテンツのレンダリングをブロックしません。 シングルページのアプリケーション、チャート、インタラクティブコンテンツには、Scryber.Coreでは提供できないJavaScriptの実行が必要です。

独自のテンプレート構文は、学習曲線を増加させ、開発者のオンボーディングを制限します。 HTML/CSSに精通しているチームは、既存のスキルを活用するのではなく、Scryberのカスタムバインディング構文を学ばなければなりません。

コミュニティが小さいということは、トラブルシューティングのためのリソースが少なく、サードパーティのドキュメントが少ないことを意味します。 IronPdfの大きなコミュニティはより多くの例とサポートリソースを提供します。

限られた非同期サポートはアプリケーションのスケーラビリティに影響します。 2026年に.NET 10とC# 14をターゲットとする最新の.NETアプリケーションは、PDF生成パイプライン全体で完全な非同期/待ち受けサポートの恩恵を受けています。

長所とトレードオフ

Scryber.Coreの強み

  • 直接ライセンス費用がかからないオープンソース(LGPL準拠が必須)
  • .NET環境のクロスプラットフォーム対応
  • ウェブ技術に精通した開発者向けのHTMLテンプレートアプローチ
  • LGPLの条項がビジネスモデルと一致しているプロジェクトに適しています。

Scryber.Coreの制限事項

  • LGPLライセンスは、一部の商用アプリケーションを制限しています
  • カスタム解析エンジンと限定的なCSSサポート
  • JavaScriptの実行なし(静的レンダリングのみ)
  • 独自のXMLバインディング構文は学習曲線が必要
  • ドキュメントが少ない小規模なコミュニティ
  • 限定的な非同期サポート
  • ネイティブのURL-to-PDF機能はありません。
  • PDF操作機能(マージ、分割、署名)はありません。

IronPDFの強み

  • CSS3とJavaScript ES2024をサポートする完全なChromiumレンダリング
  • ネイティブのURLからPDFへの変換
  • 標準的なHTML/CSSテンプレート(Razor、Handlebars、またはプレーンHTMLを使用してください)
  • LGPLの制限のない商用ライセンス
  • 豊富なドキュメントとプロフェッショナルサポート
  • 完全なasync/awaitのサポート
  • PDF 操作機能 (マージ、分割、透かし)
  • デジタル署名とセキュリティ機能
  • PDF/Aコンプライアンス対応

IronPDFについての考察

  • 商用ライセンスモデルの購入が必要
  • Chromiumエンジンはカスタムパーサーよりもフットプリントが大きい

結論

Scryber.CoreとIronPDFは異なる組織背景と技術要件に対応しています。 Scryber.Coreは、HTMLテンプレートによるLGPLライセンスのPDF生成を求めており、ライブラリのカスタムシンタックスとレンダリングの制限内で作業する意思のある開発者に、オープンソースのオプションを提供します。

最新のCSSレンダリング、JavaScriptの実行、ネイティブURL変換、LGPLの義務のない商用ライセンスが必要なアプリケーションのために、IronPDFはChromiumベースのエンジンを通して包括的な機能を提供します。標準的なHTML/CSSテンプレートの使用、既存のウェブ開発スキルの活用、PDF操作機能へのアクセスなどの機能は、チームがカスタムパーサーソリューションで遭遇する一般的な制限に対処します。

Scryber.CoreからIronPdfへの移行を評価する際、チームはCSSの複雑さ、JavaScriptのニーズ、ライセンスの好み、テンプレートのワークフローの好みなど、それぞれの要件を考慮する必要があります。 ウェブベースのデザインワークフローを持つ最新の.NETプラットフォームをターゲットとするチームにとって、IronPDFのアーキテクチャは現代の開発プラクティスに自然に合致しています。


実装ガイダンスについては、IronPDF HTML-to-PDF チュートリアルと、.NET アプリケーションの PDF 生成パターンをカバーする documentation を参照してください。