IRONSOFTWAREHOME
ビデオ

How to Convert QR Code to PDF in C# | IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

QuestPDF からIronPDFへの移行は、C#の流暢なレイアウトAPIから、より広範なPDF操作機能を持つ標準のHTML/CSSベースのアプローチにワークフローを移行させます。 このガイドは、既存のウェブスキルを活用し、HTMLテンプレートを再利用し、QuestPDFのコアライブラリに含まれていない機能を取り入れるステップバイステップの移行パスを提供します。

QuestPDFからIronPDFに移行する理由

QuestPDFを理解する

QuestPDFは、C#でプログラム的にPDFを生成するために特別に作成された、現代的で流暢なAPIです。 包括的なHTMLからPDFへの変換を提供するライブラリとは異なり、QuestPDFのコアライブラリはプログラム的なレイアウトAPIに限定されています。 QuestPDFは、開発者がHTMLに頼ることなく、C#コードを使用してゼロからドキュメントを生成する必要があるシナリオで優れています。

コミュニティ層は、個人、非営利、FOSSプロジェクト、年間総収益が100万米ドル未満の組織に対してMIT条件で無料です。 それを超える場合、QuestPDFは999ドルから始まるProfessionalライセンス(永久、最大10人の開発者)と2999ドルのEnterpriseライセンス(永久、組織全体)を提供しており、長期的な計画に考慮する必要があります。

コア問題:コアライブラリにHTMLエンジンがない

QuestPDFはHTMLからPDFへの変換に推奨されることがありますが、コアライブラリはHTMLをレンダリングしません。 コミュニティが維持管理しているQuestPDF.HTMLエクステンションは、限定されたサブセットのHTML/CSSをカバーしていますが、コアエンジンはプログラムによるものであり、実際のブラウザエンジンを実行しません。すでにHTML/CSSテンプレートを持っているチームは、通常、これらをコーディング主体のAPIで再構築する必要があります。

フィーチャーQuestPDFIronPDF
HTMLからPDF(コア)サポートされていません(流暢なAPIのみ)フルサポート
HTMLからPDF(拡張)部分的にQuestPDF.HTML (限定的なサブセット)フルサポート
CSSスタイリング拡張による限定的完全なCSS3
既存のテンプレートゼロからの再構築が必要HTML/CSSアセットの再利用
デザインツールの互換性Noneあらゆるウェブデザインツール
ラーニングカーブ新しい流暢なC# APIウェブスキルの移転
レイアウトプレビューコンパニオンアプリどのブラウザでもプレビュー
PDF操作マージ/抽出/オーバーレイ/暗号化(ドキュメント操作API、2024.12.0以上)マージ、分割、編集、署名

IronPDFは、QuestPDFのコアが含まないネイティブなHTMLからPDFへのレンダリングを提供し、C#コードで手動でドキュメントを再構築する必要を排除します。 また、マージ、分割、編集、セキュリティの確保、デジタル署名などのPDF操作機能もカバーしています。QuestPDFのドキュメント操作API(2024.12.0以上)は、マージ、ページ抽出、オーバーレイ/アンダーレイ、添付ファイル、暗号化をカバーしていますが、既存のページコンテンツの編集、OCR、またはデジタル署名はカバーしていません。

QuestPDFのライセンスモデルについて

QuestPDFのコミュニティライセンス(MIT条項)は、個人、非営利、FOSSプロジェクト、年間総収益が100万USD未満の組織に対して無料です。 それを超える場合、999ドルのProfessionalライセンス(永久、最大10名の開発者用)または2999ドルのEnterprise(永久、組織全体)が必要です。 収益トリガーが組織の収益であり、席数ではないため、これは下流のクライアントとの会話や自身のライセンスにも影響を与える可能性があります。

IronPDFは開発者ごとの商用ライセンスを提供しており、収益監査やクライアントのライセンス要件なく、予測可能なコストで使用できます。

最新 for .NETバージョンを採用しているチームにとって、IronPDFは収益に基づくトリガーのない開発者別のライセンスを提供し、既存のウェブ開発スキルを活用する標準のHTML/CSSアプローチを提供します。


始める前に

前提条件

  1. .NET環境: .NET Framework 4.6.2+ または.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGetアクセス: NuGetパッケージをインストールする機能
  3. IronPDFライセンス: IronPDFからライセンスキーを取得します。

NuGetパッケージの変更

# Remove QuestPDF
dotnet remove package QuestPDF

# Add IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

QuestPDFの使い方を探す

# Find all QuestPDF usages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .
SHELL

完全な API リファレンス

名前空間の変更

// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

// After: IronPDF
using IronPdf;

コア API マッピング

QuestPDFのコンセプトIronPDF 同等物
Document.Create()new ChromePdfRenderer()
.Page()RenderHtmlAsPdf()
.Text()HTML <p>, <h1>, <span>
.Bold()CSS font-weight: bold
.FontSize(24)CSS font-size: 24px
.Image()HTML <img src="...">
.Table()HTML <table>
.Column()CSS display: flex; フレックス方向:列
.Row()CSS display: flex; フレックス方向: row
PageSizes.A4RenderingOptions.PaperSize
.Margin()RenderingOptions.Margin*
.GeneratePdf()pdf.SaveAs()
該当なしPdfDocument.Merge()
該当なしPdfDocument.FromFile()
該当なしpdf.SecuritySettings

コード移行の例

例 1: 基本的なドキュメントの作成 (HTML-to-PDF)

翻訳前 (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;
        
        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>");
        pdf.SaveAs("output.pdf");
    }
}

この例はパラダイムの違いを示しています。 QuestPDFでは、その流暢なAPIであるDocument.Create(), container.Page(), page.Content().Column(), .FontSize(20).Bold()のようにメソッドチェーンを利用します。 また、QuestPDF.Settings.License = LicenseType.Communityでライセンスタイプを設定する必要があります。

IronPDFは、すべてのウェブ開発者が知っている標準的なHTMLを使用します。見出しには<p>を使用します。新しいレイアウトDSLを学ぶ必要はありません。 IronPDFのアプローチは、よりクリーンな構文を提供し、最新 for .NETウェブスタックの残りと統合されます。 包括的な例については、HTML to PDF documentationを参照してください。

例2: 請求書の作成

翻訳前 (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;
        
        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("INVOICE").FontSize(24).Bold();
                    column.Item().Text("Invoice #: 12345").FontSize(12);
                    column.Item().PaddingTop(20);
                    column.Item().Text("Customer: John Doe");
                    column.Item().Text("Total: $100.00").Bold();
                });
            });
        }).GeneratePdf("invoice.pdf");
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = @"
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        ";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("invoice.pdf");
    }
}

QuestPDFはレイアウトに.PaddingTop(20)を使用します。 IronPDFは標準的なHTMLを使用します。タイトルには<strong>を使用します。

本当の利点: IronPDFを使えば、デザイナーは独立してHTMLテンプレートを作成、修正することができます。 QuestPDFでは、設計変更のたびにC#開発者がコードを修正する必要があります。 詳しくは、チュートリアルをご覧ください。

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

翻訳前 (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;
        
        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                
                page.Header().Text("Document Header").FontSize(14).Bold();
                
                page.Content().Text("Main content of the document.");
                
                page.Footer().AlignCenter().Text(text =>
                {
                    text.Span("Page ");
                    text.CurrentPageNumber();
                });
            });
        }).GeneratePdf("document.pdf");
    }
}

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<p>Main content of the document.</p>";
        
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        
        pdf.Header = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 14
        };
        
        pdf.Footer = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };
        
        pdf.SaveAs("document.pdf");
    }
}

QuestPDFは.CurrentPageNumber()のような流暢なメソッドを取り入れます。 IronPDFはFontSizeのようなプロパティを持っています。 {page}プレースホルダーは、自動的に現在のページ番号を挿入します。


重要な移行に関する注意事項

パラダイムシフトについて

主な変更点はカスタムC#流暢なレイアウトAPIから標準的なHTML/CSSに移行することです:

// QuestPDF: Fluent C# layout API
container.Page(page =>
{
    page.Content().Column(column =>
    {
        column.Item().Text("Invoice").Bold().FontSize(24);
        column.Item().Row(row =>
        {
            row.RelativeItem().Text("Customer:");
            row.RelativeItem().Text("Acme Corp");
        });
    });
});

// IronPDF: Standard HTML/CSS
var html = @"
<div style='font-family: Arial; padding: 40px;'>
    <h1 style='font-weight: bold; font-size: 24px;'>Invoice</h1>
    <div style='display: flex; justify-content: space-between;'>
        <span>Customer:</span>
        <span>Acme Corp</span>
    </div>
</div>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

レイアウト パターンの変換

QuestPDFパターンHTML/CSS相当
.Column()表示: flex; フレックス方向:列
.Row()表示: flex; フレックス方向: row
.RelativeItem()flex: 1
.Table()<table>要素
.PaddingTop(20)<br/>
.AlignCenter()text-align: center
.FontSize(24)font-size: 24px
.Bold()<strong>

ページ設定の変換

// QuestPDF
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);

// IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;    // mm (2cm = 20mm)
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

移行後の新機能

IronPDFに移行した後は、QuestPDFでは提供できない機能を得ることができます:

PDFマージ

var cover = renderer.RenderHtmlAsPdf("<h1>Cover</h1>");
var content = renderer.RenderHtmlAsPdf(reportHtml);
var existing = PdfDocument.FromFile("appendix.pdf");

var merged = PdfDocument.Merge(cover, content, existing);
merged.SaveAs("complete.pdf");

PDFのセキュリティ

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");

URLをPDFに

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");

既存のPDFを読み込んで編集する

var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");

機能比較の概要

フィーチャーQuestPDFIronPDF
HTMLからPDFへCore: サポートなし (QuestPDF.HTMLエクステンションを通じて限定的)主な機能
ラーニングカーブ流暢なC# API標準的なウェブスキル
テンプレートプレビューコンパニオンアプリブラウザ
デザインコラボレーション開発者のみデザイナー + 開発者
既存の資産再構築必須HTML/CSSの再利用
PDF操作マージ/抽出/オーバーレイ(ドキュメント操作API、2024.12.0+)サポート対象
セキュリティ/署名暗号化 + 許可(デジタル署名なし)暗号化 + デジタル署名
ライセンスモデル収益基準 ($1M のしきい値)開発者ごと
クライアントへの影響収益が 1M USD を超える場合には、ライセンスが必要になる可能性がありますNone
Bootstrap/Tailwind(ブートストラップ/テイルウィンドサポートされていませんサポート対象
URLからPDFへサポートされていませんサポート対象

移行チェックリスト

移行前

  • すべてのQuestPDFドキュメントテンプレートを識別する (QuestPDF.HTML, .GeneratePdf)
  • 使用されているDSLパターンを文書化する (.Column(), .Row(), .Table(), .Text())
  • スタイリング方法を CSS の同等物にマッピングする
  • IronPDFからIronPDFライセンスキーを取得します

パッケージの変更

  • QuestPDF NuGetパッケージを削除
  • IronPdf NuGetパッケージをインストールする: dotnet add package IronPdf

コードの変更

  • 名前空間のインポートを更新する
  • QuestPDF.Settings.License = LicenseType.Communityを削除する
  • ChromePdfRenderer + HTMLに変換する
  • .Column() / .Row()をCSS Flexboxに置き換える
  • .Table()をHTML <table>要素に置き換える
  • <h1 style='...'>に変換する
  • page.Header() / TextHeaderFooterで置き換える
  • {page}プレースホルダーに置き換える
  • pdf.SaveAs()に変換する
  • アプリケーションの起動時にライセンスの初期化を追加

移行後

  • PDF出力の視覚的な比較
  • 複数ページのドキュメントで正しいページ区切りをテストする
  • 必要に応じて新しい機能(セキュリティ、結合、URLからPDFへの変換)を追加します

ご注意: QuestPDFはその所有者の商標です。 このサイトは、Codeux Software または QuestPDF メンテナーと提携しておらず、支持されてもおらず、スポンサー提供もされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。