フッターコンテンツにスキップ
移行ガイド

Fluid(テンプレート)からIronPDFへの移行

Fluid は、Liquid テンプレート言語を実装する.NETライブラリであり、動的なテンプレートをレンダリングし、コンテンツをプレゼンテーション ロジックから分離する柔軟な方法を開発者に提供します。 Fluid は動的なテキスト出力を生成するのに効果的ですが、PDF 生成を直接サポートしていません。開発者は、HTML 出力を PDF ドキュメントに変換するために追加の PDF ライブラリを統合する必要があります。 この2つのライブラリによるアプローチは、多くの開発チームが排除しようとしている複雑さをもたらします。

このガイドは、外部PDFライブラリを使ったFluid(テンプレート)からIronPDFへの完全な移行経路を、この移行を評価するプロ for .NET開発者のために、ステップバイステップの手順、コード比較、実用的な例とともに提供します。

なぜFluid (Templating)からIronPDFに移行するのか

Fluid は堅牢な Liquid ベースのテンプレート エンジンですが、PDF 生成に使用すると、大幅な複雑さが生じます。

2 つのライブラリの依存関係: Fluid は HTML のみを生成します。PDF を作成するには別の PDF ライブラリ (wkhtmltopdf、PuppeteerSharp など) が必要となり、依存関係とメンテナンスの負担が 2 倍になります。

統合の複雑さ: 2 つのライブラリを調整するには、2 セットの構成、エラー処理、および更新を管理する必要があります。 何かが壊れると、デバッグが難しくなります。

Liquid 構文の学習曲線: C# にはすでに強力な文字列処理機能が組み込まれていますが、開発者は Liquid テンプレート構文 ({% %}) を学習する必要があります。

制限された PDF コントロール: PDF 出力の品質は、専用のレンダリング エンジンではなく、Fluid と組み合わせる PDF ライブラリによって決まります。

デバッグの課題:テンプレート作成段階または PDF 生成段階のいずれかでエラーが発生する可能性があり、単一の統合ソリューションを使用する場合よりもトラブルシューティングが困難になります。

スレッド セーフに関する懸念: TemplateContext はスレッド セーフではないため、同時実行アプリケーションでは慎重な管理が必要です。

IronPDFとFluid(テンプレート)の比較:機能の比較

アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:

アスペクト Fluid + PDF ライブラリ IronPDF
依存関係について 2つ以上のパッケージ(Fluid + PDFライブラリ) 単一パッケージ
テンプレート化する リキッド構文 ({{ }}) C# 文字列補間または Razor
PDFジェネレーション 外部ライブラリが必要 内蔵Chromiumエンジン
CSSサポート PDFライブラリに依存 フルCSS3とFlexbox/Grid
JavaScript(JavaScript PDFライブラリに依存 JavaScriptフルサポート
スレッドセーフティ スレッドセーフではない TemplateContext ChromePdfRendererはスレッドセーフです。
ラーニングカーブ Liquid + PDF ライブラリ API HTML/CSS(ウェブ標準)
エラー処理 2つのエラーソース 単一のエラーソース

クイックスタートFluidからIronPdfへの移行

これらの基本的なステップを踏めば、すぐにでも移行を開始できます。

ステップ 1: NuGet パッケージを置き換える

Fluidと外部PDFライブラリを削除してください:

# Remove Fluid and external PDF library
dotnet remove package Fluid.Core
dotnet remove package WkHtmlToPdf-DotNet  # or whatever PDF library you used
dotnet remove package PuppeteerSharp       # if used
# Remove Fluid and external PDF library
dotnet remove package Fluid.Core
dotnet remove package WkHtmlToPdf-DotNet  # or whatever PDF library you used
dotnet remove package PuppeteerSharp       # if used
SHELL

IronPDFをインストールします:

# InstallIronPDF(all-in-one solution)
dotnet add package IronPdf
# InstallIronPDF(all-in-one solution)
dotnet add package IronPdf
SHELL

ステップ 2: 名前空間の更新

Fluid名前空間をIronPdfに置き換えてください:

// Before (Fluid + external PDF library)
using Fluid;
using Fluid.Values;
using SomeExternalPdfLibrary;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
// Before (Fluid + external PDF library)
using Fluid;
using Fluid.Values;
using SomeExternalPdfLibrary;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
Imports Fluid
Imports Fluid.Values
Imports SomeExternalPdfLibrary

Imports IronPdf
Imports IronPdf.Rendering ' For RenderingOptions
$vbLabelText   $csharpLabel

ステップ 3: ライセンスの初期化

アプリケーション起動時のライセンス初期化を追加します:

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

コード移行の例

基本的な HTML から PDF

最も基本的な操作によって、これらのアプローチの重要な違いが明らかになります。

流動的なアプローチ:

// NuGet: Install-Package Fluid.Core
using Fluid;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var parser = new FluidParser();
        var template = parser.Parse("<html><body><h1>Hello {{name}}!</h1></body></html>");
        var context = new TemplateContext();
        context.SetValue("name", "World");
        var html = await template.RenderAsync(context);

        // Fluid only generates HTML - you'd need another library to convert to PDF
        File.WriteAllText("output.html", html);
    }
}
// NuGet: Install-Package Fluid.Core
using Fluid;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var parser = new FluidParser();
        var template = parser.Parse("<html><body><h1>Hello {{name}}!</h1></body></html>");
        var context = new TemplateContext();
        context.SetValue("name", "World");
        var html = await template.RenderAsync(context);

        // Fluid only generates HTML - you'd need another library to convert to PDF
        File.WriteAllText("output.html", html);
    }
}
Imports Fluid
Imports System.IO
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim parser As New FluidParser()
        Dim template = parser.Parse("<html><body><h1>Hello {{name}}!</h1></body></html>")
        Dim context As New TemplateContext()
        context.SetValue("name", "World")
        Dim html = Await template.RenderAsync(context)

        ' Fluid only generates HTML - you'd need another library to convert to PDF
        File.WriteAllText("output.html", html)
    End Function
End Module
$vbLabelText   $csharpLabel

IronPDFのアプローチ:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var 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();
        var html = "<html><body><h1>Hello World!</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html = "<html><body><h1>Hello World!</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Fluid では、FluidParser を作成し、テンプレート文字列を解析し、TemplateContext を作成し、各変数に対して SetValue() を呼び出し、非同期にレンダリングして HTML を取得し、ファイルに書き込む必要がありますが、これはまだ PDF ではありません。 コード内のコメントには、"FluidはHTMLを生成するだけです。" "PDFに変換するには、別のライブラリが必要です。"と明記されています。

IronPDF はこの複雑さを解消します。レンダラーを作成し、RenderHtmlAsPdf() を呼び出して、直接 PDF に保存します。 中間HTMLファイル、追加ライブラリはありません。

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

動的データを含む請求書テンプレート

複数の変数を持つドキュメントテンプレートは、テンプレートパターンの違いを明確に示します。

流動的なアプローチ:

// NuGet: Install-Package Fluid.Core
using Fluid;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var parser = new FluidParser();
        var template = parser.Parse(@"
            <html><body>
                <h1>Invoice #{{invoiceNumber}}</h1>
                <p>Date: {{date}}</p>
                <p>Customer: {{customer}}</p>
                <p>Total: ${{total}}</p>
            </body></html>");

        var context = new TemplateContext();
        context.SetValue("invoiceNumber", "12345");
        context.SetValue("date", DateTime.Now.ToShortDateString());
        context.SetValue("customer", "John Doe");
        context.SetValue("total", 599.99);

        var html = await template.RenderAsync(context);
        // Fluid outputs HTML - requires additional PDF library
        File.WriteAllText("invoice.html", html);
    }
}
// NuGet: Install-Package Fluid.Core
using Fluid;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var parser = new FluidParser();
        var template = parser.Parse(@"
            <html><body>
                <h1>Invoice #{{invoiceNumber}}</h1>
                <p>Date: {{date}}</p>
                <p>Customer: {{customer}}</p>
                <p>Total: ${{total}}</p>
            </body></html>");

        var context = new TemplateContext();
        context.SetValue("invoiceNumber", "12345");
        context.SetValue("date", DateTime.Now.ToShortDateString());
        context.SetValue("customer", "John Doe");
        context.SetValue("total", 599.99);

        var html = await template.RenderAsync(context);
        // Fluid outputs HTML - requires additional PDF library
        File.WriteAllText("invoice.html", html);
    }
}
Imports Fluid
Imports System
Imports System.IO
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim parser As New FluidParser()
        Dim template = parser.Parse("
            <html><body>
                <h1>Invoice #{{invoiceNumber}}</h1>
                <p>Date: {{date}}</p>
                <p>Customer: {{customer}}</p>
                <p>Total: ${{total}}</p>
            </body></html>")

        Dim context As New TemplateContext()
        context.SetValue("invoiceNumber", "12345")
        context.SetValue("date", DateTime.Now.ToShortDateString())
        context.SetValue("customer", "John Doe")
        context.SetValue("total", 599.99)

        Dim html = Await template.RenderAsync(context)
        ' Fluid outputs HTML - requires additional PDF library
        File.WriteAllText("invoice.html", html)
    End Function
End Module
$vbLabelText   $csharpLabel

IronPDFのアプローチ:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var invoiceNumber = "12345";
        var date = DateTime.Now.ToShortDateString();
        var customer = "John Doe";
        var total = 599.99;

        var html = $@"
            <html><body>
                <h1>Invoice #{invoiceNumber}</h1>
                <p>Date: {date}</p>
                <p>Customer: {customer}</p>
                <p>Total: ${total}</p>
            </body></html>";

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var invoiceNumber = "12345";
        var date = DateTime.Now.ToShortDateString();
        var customer = "John Doe";
        var total = 599.99;

        var html = $@"
            <html><body>
                <h1>Invoice #{invoiceNumber}</h1>
                <p>Date: {date}</p>
                <p>Customer: {customer}</p>
                <p>Total: ${total}</p>
            </body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("invoice.pdf");
    }
}
Imports IronPdf
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim invoiceNumber As String = "12345"
        Dim [date] As String = DateTime.Now.ToShortDateString()
        Dim customer As String = "John Doe"
        Dim total As Double = 599.99

        Dim html As String = $"
            <html><body>
                <h1>Invoice #{invoiceNumber}</h1>
                <p>Date: {[date]}</p>
                <p>Customer: {customer}</p>
                <p>Total: ${total}</p>
            </body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("invoice.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Fluid は、各変数に対して Liquid の {{variable}} 構文と context.SetValue() を使用します。 コメントには、"Fluid は HTML を出力します。追加の PDF ライブラリが必要です"と明記されています。IronPDFは、構文開発者がすでに知っている標準の C# 文字列補間 ($"{variable}") を使用して、直接 PDF に出力します。

IronPDFチュートリアルで、より多くの文書生成パターンをご覧ください。

ループを使用した動的データ

コレクションとループを使ったテンプレートは、制御フローの違いを示しています。

流動的なアプローチ:

// NuGet: Install-Package Fluid.Core
using Fluid;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var parser = new FluidParser();
        var template = parser.Parse(@"
            <html><body>
                <h1>{{title}}</h1>
                <ul>
                {% for item in items %}
                    <li>{{item}}</li>
                {% endfor %}
                </ul>
            </body></html>");

        var context = new TemplateContext();
        context.SetValue("title", "My List");
        context.SetValue("items", new[] { "Item 1", "Item 2", "Item 3" });

        var html = await template.RenderAsync(context);
        // Fluid generates HTML only - separate PDF conversion needed
        File.WriteAllText("template-output.html", html);
    }
}
// NuGet: Install-Package Fluid.Core
using Fluid;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var parser = new FluidParser();
        var template = parser.Parse(@"
            <html><body>
                <h1>{{title}}</h1>
                <ul>
                {% for item in items %}
                    <li>{{item}}</li>
                {% endfor %}
                </ul>
            </body></html>");

        var context = new TemplateContext();
        context.SetValue("title", "My List");
        context.SetValue("items", new[] { "Item 1", "Item 2", "Item 3" });

        var html = await template.RenderAsync(context);
        // Fluid generates HTML only - separate PDF conversion needed
        File.WriteAllText("template-output.html", html);
    }
}
Imports Fluid
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading.Tasks

Class Program
    Shared Async Function Main() As Task
        Dim parser As New FluidParser()
        Dim template = parser.Parse("
            <html><body>
                <h1>{{title}}</h1>
                <ul>
                {% for item in items %}
                    <li>{{item}}</li>
                {% endfor %}
                </ul>
            </body></html>")

        Dim context As New TemplateContext()
        context.SetValue("title", "My List")
        context.SetValue("items", New String() {"Item 1", "Item 2", "Item 3"})

        Dim html = Await template.RenderAsync(context)
        ' Fluid generates HTML only - separate PDF conversion needed
        File.WriteAllText("template-output.html", html)
    End Function
End Class
$vbLabelText   $csharpLabel

IronPDFのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var title = "My List";
        var items = new[] { "Item 1", "Item 2", "Item 3" };

        var html = $@"
            <html><body>
                <h1>{title}</h1>
                <ul>";

        foreach (var item in items)
        {
            html += $"<li>{item}</li>";
        }

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

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var title = "My List";
        var items = new[] { "Item 1", "Item 2", "Item 3" };

        var html = $@"
            <html><body>
                <h1>{title}</h1>
                <ul>";

        foreach (var item in items)
        {
            html += $"<li>{item}</li>";
        }

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

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("template-output.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim title As String = "My List"
        Dim items As String() = {"Item 1", "Item 2", "Item 3"}

        Dim html As String = $"
            <html><body>
                <h1>{title}</h1>
                <ul>"

        For Each item As String In items
            html += $"<li>{item}</li>"
        Next

        html += "</ul></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("template-output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Fluid は Liquid の {% for item in items %}...{% endfor %} 構文を使用します。これは、テンプレート言語開発者が習得する必要がある構文です。 コメントには、"Fluid は HTML のみを生成するため、別途 PDF 変換が必要です"と記載されています。IronPDFは標準の C# foreach ループを使用するため、新しい構文を学習する必要はなく、直接 PDF に出力します。

Fluid APIからIronPDFへのマッピングリファレンス

このマッピングは、APIと同等のものを直接示すことで、移行を加速します:

コア クラス マッピング

流体クラス IronPDF 同等物
FluidParser 該当なし
FluidTemplate 該当なし
TemplateContext C#オブジェクト/文字列
TemplateOptions RenderingOptions
FluidValue C#ネイティブタイプ
外部PDFクラス ChromePdfRenderer

メソッドマッピング

流体メソッド IronPDF 同等物
new FluidParser() new ChromePdfRenderer()
parser.Parse(source) 該当なし
template.RenderAsync(context) renderer.RenderHtmlAsPdf(html)
context.SetValue("key", value) var key = value;

リキッド構文から C# へのマッピング

リキッド構文 C#相当
{{ variable }} $"{variable}"
{% for item in items %} foreach (var item in items)
{% if condition %} if (condition)
{{ x \|アップケース }} x.ToUpper()
{{ x \|date: '%Y-%m-%d' }}. x.ToString("yyyy-MM-dd")
{{ x \|数_with_precision: 2 }} x.ToString("F2")

一般的な移行の問題と解決策

課題1:リキッド構文変換

Fluid: {{ variable }} および {% control %} 構文を使用します。

解決策: C#の文字列補間と制御フローに置き換える:

// Liquid: {{ name | upcase }}
// C#: $"{name.ToUpper()}"

// Liquid: {% for item in items %}{{item}}{% endfor %}
// C#: foreach (var item in items) { html += $"{item}"; }
// Liquid: {{ name | upcase }}
// C#: $"{name.ToUpper()}"

// Liquid: {% for item in items %}{{item}}{% endfor %}
// C#: foreach (var item in items) { html += $"{item}"; }
$vbLabelText   $csharpLabel

課題 2: TemplateContext 変数について

Fluid: context.SetValue("key", value) を使用してデータを渡します。

解決策: C#の標準変数を使用する:

// Before (Fluid)
var context = new TemplateContext();
context.SetValue("customer", customerName);

// After (IronPDF)
var customer = customerName;
var html = $"<p>Customer: {customer}</p>";
// Before (Fluid)
var context = new TemplateContext();
context.SetValue("customer", customerName);

// After (IronPDF)
var customer = customerName;
var html = $"<p>Customer: {customer}</p>";
' Before (Fluid)
Dim context As New TemplateContext()
context.SetValue("customer", customerName)

' After (IronPDF)
Dim customer = customerName
Dim html = $"<p>Customer: {customer}</p>"
$vbLabelText   $csharpLabel

第3号:スレッドの安全性

Fluid: TemplateContext はスレッドセーフではないため、同時実行アプリケーションでは慎重な管理が必要です。

解決策: ChromePdfRenderer はスレッドセーフであり、スレッド間で共有できます。

// Thread-safe usage
private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

public byte[] GeneratePdf(string html)
{
    var pdf = _renderer.RenderHtmlAsPdf(html);
    return pdf.BinaryData;
}
// Thread-safe usage
private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

public byte[] GeneratePdf(string html)
{
    var pdf = _renderer.RenderHtmlAsPdf(html);
    return pdf.BinaryData;
}
' Thread-safe usage
Private Shared ReadOnly _renderer As New ChromePdfRenderer()

Public Function GeneratePdf(html As String) As Byte()
    Dim pdf = _renderer.RenderHtmlAsPdf(html)
    Return pdf.BinaryData
End Function
$vbLabelText   $csharpLabel

課題4: 2段階のエラー処理

流動的: テンプレート作成段階やPDF生成段階でエラーが発生する可能性があります。

ソリューション: IronPDFには1つのエラーソースがあります:

try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    // Single point of failure—easier debugging
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    // Single point of failure—easier debugging
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
Try
    Dim pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("output.pdf")
Catch ex As Exception
    ' Single point of failure—easier debugging
    Console.WriteLine($"PDF generation failed: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

流体マイグレーション チェックリスト

マイグレーション前のタスク

コードベースを監査し、すべてのFluidの使用法を特定します:

# Find all Fluid references
grep -r "FluidParser\|FluidTemplate\|TemplateContext\|using Fluid" --include="*.cs" --include="*.csproj" .

# Find Liquid template files
find . -name "*.liquid" -o -name "*.html" | xargs grep -l "{{"
# Find all Fluid references
grep -r "FluidParser\|FluidTemplate\|TemplateContext\|using Fluid" --include="*.cs" --include="*.csproj" .

# Find Liquid template files
find . -name "*.liquid" -o -name "*.html" | xargs grep -l "{{"
SHELL

ファイルの場所、使用する変数、ループと条件式、外部PDFライブラリの設定など、すべてのテンプレートを文書化すること。

コード更新タスク

1.Fluid.CoreのNuGetパッケージの削除 2.外部PDFライブラリパッケージの削除 3.IronPdf NuGetパッケージをインストールする

  1. 名前空間のインポートを Fluid から IronPdf に更新します。
  2. {{ variable }}$"{variable}" に変換します。
  3. {% for item in collection %} を C# foreach に変換する
  4. {% if condition %} を C# の if ステートメントに変換する 8.Liquid フィルタを C# メソッドに変換する (例: C# メソッド)| 大文字に変換.ToUpper())
  5. FluidParserChromePdfRenderer に置き換えます。
  6. TemplateContext.SetValue() を直接 C# 変数に置き換える 11.外部PDFライブラリ呼び出しを削除 12.起動時にIronPDFライセンスの初期化を追加する

移行後のテスト

移行後、これらの点を検証してください:

  • PDF出力が期待値と一致していることを確認
  • すべてのテンプレートバリエーションが正しくレンダリングされることをテストする
  • 画像とスタイルが正しく表示されることを確認
  • 改ページが正しく行われることを検証する
  • さまざまなデータサイズでテスト
  • パフォーマンステスト vs Fluid + 外部ライブラリ
  • 同時実行シナリオにおけるスレッドセーフのテスト

クリーンアップタスク

  • .liquid テンプレートファイルを削除する(不要になった場合)
  • Fluid関連のヘルパーコードを削除する
  • ドキュメントの更新
  • 未使用の依存関係のクリーンアップ

IronPDFに移行する主な利点

外部PDFライブラリを使ったFluid(テンプレート化)からIronPDFに移行することで、いくつかの重要な利点が得られます:

単一パッケージ ソリューション: 2 つのライブラリの依存関係を排除します。 IronPDFはテンプレート作成(HTML/CSS経由)とPDF生成の両方を1つのパッケージで行います。

新しい構文を学習する必要はありません: Liquid テンプレート構文を学習する代わりに、標準の C# 文字列補間と制御フローを使用します。

スレッドセーフなレンダリング: ChromePdfRenderer は、TemplateContext とは異なり、スレッドセーフであるため、同時 PDF 生成が簡素化されます。

Chromium レンダリング エンジン:業界標準のレンダリングにより、Flexbox や Grid を含む完全な CSS3 サポートと、完全なJavaScript実行が保証されます。

単一のエラー ソース:テンプレートと PDF 生成ステージ間の調整を行う代わりに、トラブルシューティングするライブラリが 1 つだけなので、デバッグが簡単になります。

積極的な開発: .NET 10 と C# 14 の採用が 2026 年まで増加するにつれて、IronPDF の定期的な更新により、現在のおよび将来 for .NETバージョンとの互換性が確保されます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね