C#でQuestPDFからIronPDFに移行する方法
QuestPDFからIronPDFへの移行:完全なC#移行ガイド
QuestPDFからIronPDFに移行することで、PDF生成のワークフローが、独自のC#流暢なAPIから、包括的なPDF操作機能を持つ標準的なHTML/CSSベースのアプローチに変わります。 このガイドでは、既存のWebスキルを活用し、HTMLテンプレートを再利用し、QuestPDFでは提供できない機能を得ることができる、完全でステップバイステップの移行パスを提供します。
QuestPDFからIronPDFに移行する理由
QuestPDFを理解する
QuestPDFは、C#でプログラム的にPDFを生成するために特別に作成された、現代的で流暢なAPIです。 包括的なHTMLからPDFへの変換機能を提供する同業他社とは異なり、QuestPDFはプログラムレイアウトAPI機能に限定されています。 QuestPDFは、開発者がHTMLに頼ることなく、C#コードを使用してゼロからドキュメントを生成する必要があるシナリオで優れています。
このライブラリは、収益が100万ドル未満の企業は無料で利用できますが、この収益レベルを証明する必要があり、一部の企業にとってはコンプライアンス上の負担となる可能性があります。 この閾値を超えるユーザーはライセンスを購入する必要があり、QuestPDFを潜在的なソリューションとして評価する際には、長期的な計画に織り込んでおく必要があります。
核心的な問題: HTML をサポートしていない。
QuestPDFはHTMLからPDFへの変換によく推奨されますが、HTMLをまったくサポートしていません。 QuestPDFは、開発者フォーラムで大々的に宣伝されているにもかかわらず、独自のレイアウト言語を使用しているため、既存のWebスキルを活用する代わりに、まったく新しいDSLを習得する必要があります。
| フィーチャー | QuestPDF | IronPDF |
|---|---|---|
| HTMLからPDFへ。 | サポート対象外 | フルサポート |
| CSSスタイリング。 | サポート対象外 | 完全なCSS3 |
| 既存のテンプレート | ゼロからの再構築が必要 | HTML/CSSアセットの再利用 |
| デザインツールの互換性 | なし | あらゆるウェブデザインツール |
| ラーニングカーブ | 新しい独自DSL | ウェブスキルの移転 |
| レイアウトプレビュー | IDEプラグインが必要 | どのブラウザでもプレビュー |
| PDF操作 | なし | マージ、分割、編集 |
IronPDFはQuestPDFに全く欠けているHTMLからPDFへのネイティブレンダリングを提供し、C#コードでドキュメントを手動で再構築する必要性を排除します。 QuestPDFが実行できない包括的なPDF操作機能(マージ、分割、編集、セキュア)を含みます。
QuestPDFのライセンスモデルについて
QuestPDFの"コミュニティライセンス"は、貴社の年間総収入が100万ドル未満の場合のみ無料です。 顧客(開発者であるあなただけではありません)は、収益のしきい値を超えた場合、ライセンスを購入する必要があるかもしれません。 単純な開発者ごとの商用ライセンスとは異なり、QuestPDF のモデルでは、収益の開示とコンプライアンスの追跡が必要です。
IronPdfはシンプルなライセンシングを提供します: 開発者1人につき1ライセンス、収益監査なし、クライアントライセンス要件なし、明確で予測可能なコスト。
2025年と2026年まで.NET 10とC# 14の導入を計画しているチームにとって、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.comからライセンスキーを取得してください。
NuGetパッケージの変更
# Remove QuestPDF
dotnet remove package QuestPDF
# Add IronPDF
dotnet add package IronPdf# Remove QuestPDF
dotnet remove package QuestPDF
# Add IronPDF
dotnet add package IronPdfライセンス構成
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.comQuestPDFの使い方を探す
# Find all QuestPDF usages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .# Find all QuestPDF usages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .完全な API リファレンス
名前空間の変更
// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
// After: IronPDF
using IronPdf;// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
// After: IronPDF
using IronPdf;IRON VB CONVERTER ERROR developers@ironsoftware.comコア API マッピング
| QuestPDFのコンセプト | IronPDF 同等物 | ノート |
|---|---|---|
| <コード>Document.Create()</コード | new ChromePdfRenderer(). | レンダラー作成 |
| <コード>.Page()</コード | <コード>RenderHtmlAsPdf()</コード | HTMLをPDFにレンダリング |
| <コード>.Text()</コード | HTML <p>、<h1>、<span>。 | 標準HTMLタグ |
.Bold(). | CSS <コード>font-weight: bold | 標準CSS |
.FontSize(24). | CSS フォントサイズ: 24px | 標準CSS |
| <コード>.Image()</コード | HTML <コード> | 標準HTML |
| <コード>.Table()</コード | HTML <コード><テーブル><コード></コード | 標準HTML |
| <コード>.Column()</コード | CSS display: flex; フレックス方向:列。 | CSSフレックスボックス |
.Row(). | CSS display: flex; フレックス方向: row | CSSフレックスボックス |
| <コード>ページサイズ.A4</コード | <コード>RenderingOptions.PaperSize</コード | 用紙寸法 |
.Margin() | レンダリングオプション.マージン* | ページの余白 |
| <コード>.GeneratePdf()</コード | <コード>pdf.SaveAs()</コード | ファイル出力 |
| 該当なし | PdfDocument.Merge()を使用してください。 | PDFのマージ |
| 該当なし | PdfDocument.FromFile()を使用してください。 | 既存のPDFを読み込む |
| 該当なし | <コード>pdf.SecuritySettings</コード | PDF暗号化 |
コード移行の例
例 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");
}
}// 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(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");
}
}// 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこの例は、基本的なパラダイムの違いを示しています。 QuestPDF の流暢な API を学ぶ必要があります:Document.Create()、container.Page()、page.Content().Column()、column.Item().Text()、.FontSize(20).Bold()のようなメソッドの連鎖によるスタイリング。 また、QuestPDF.Settings.License = LicenseType.Communityでライセンスタイプを設定する必要があります。
IronPDFはウェブ開発者なら誰でも知っている標準的なHTMLを使用します: <h1>は見出しに、<p>は段落に使用します。独自のDSLを学ぶ必要はありません。 IronPDFのアプローチは、よりきれいな構文と最新の.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");
}
}// 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(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");
}
}// 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comQuestPDFは、レイアウトに.Column()と.Item()を使用し、スペーシングに.PaddingTop(20)を使用します。 IronPDFは標準的なHTMLを使用します:<h1>はタイトル、<p>は段落、<br/>はスペーシング、<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");
}
}// 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(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");
}
}// 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comQuestPDFは、.page.Header()と.page.Footer()を、.AlignCenter()や.CurrentPageNumber()のような流暢なメソッドとともに使用します。 IronPDFはCenterTextやFontSizeのようなプロパティを持つTextHeaderFooterオブジェクトを使用します。 {page}プレースホルダは、現在のページ番号を自動的に挿入します。
重要な移行に関する注意事項
パラダイムシフトについて
根本的な変化は、独自のC# DSLから標準的なHTML/CSSへの移行です:
// QuestPDF: Proprietary fluent 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: Proprietary fluent 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);IRON VB CONVERTER ERROR developers@ironsoftware.comレイアウト パターンの変換
| QuestPDFパターン | HTML/CSS相当 |
|---|---|
| <コード>.Column()</コード | 表示: flex; フレックス方向:列`。 |
.Row(). | 表示: flex; フレックス方向: row` |
| <コード>.RelativeItem()</コード | <コード>フレックス: 1 |
| <コード>.Table()</コード | <table>要素 |
| <コード>.PaddingTop(20)</コード | padding-top: 20px または <br/> にしてください。 |
.AlignCenter(). | text-align: center<//code> |
.FontSize(24). | フォントサイズ: 24px |
.Bold(). | font-weight: 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;// 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;IRON VB CONVERTER ERROR developers@ironsoftware.com移行後の新機能
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");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");IRON VB CONVERTER ERROR developers@ironsoftware.comPDFのセキュリティ
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comURLをPDFに
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com既存のPDFを読み込んで編集する
var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com機能比較の概要
| フィーチャー | QuestPDF | IronPDF |
|---|---|---|
| HTMLからPDFへ。 | サポートされていません | 主な機能 |
| ラーニングカーブ | 独自のDSL | 標準的なウェブスキル |
| テンプレートプレビュー | 必要なプラグイン | ブラウザ |
| デザインコラボレーション | 開発者のみ | デザイナー + 開発者 |
| 既存の資産 | 再構築必須 | HTML/CSSの再利用 |
| PDF操作 | サポートされていません | フルサポート |
| セキュリティ/署名 | サポートされていません | フルサポート |
| ライセンスモデル | 収益ベース | 開発者ごと |
| クライアントへの影響 | ライセンスが必要な場合があります | なし |
| Bootstrap/Tailwind(ブートストラップ/テイルウィンド | サポートされていません | フルサポート |
| URLからPDFへ。 | サポートされていません | フルサポート |
移行チェックリスト
移行前
- [ ] すべての QuestPDF 文書テンプレート (
Document.Create,.GeneratePdf) を特定する。 - [ ] 使用したDSLパターン(
.Column(),.Row(),.Table(),.Text())を文書化する。 - [スタイルメソッドをCSSに対応させる
- [ironpdf.comからIronPDFライセンスキーを入手してください。
パッケージの変更
- [ ]
QuestPDFNuGetパッケージを削除する。 - [ ]
IronPdfNuGetパッケージをインストールします:dotnet add package IronPdfNuGetパッケージをインストールします。
コードの変更
- [名前空間インポートの更新
- [ ]
QuestPDF.Settings.License=LicenseType.Communityを削除します。 - [ ]
Document.Create()パターンをChromePdfRenderer+ HTMLに変換する - [ ]
.Column()/.Row()をCSS Flexboxに置き換える - [ ]
.Table()をHTMLの<table>要素に置き換えてください。 - [ ]
.Text().Bold().FontSize(24)を<h1> style="...">に変換してください。 - [ ]
page.Header()/page.Footer()をTextHeaderFooterに置き換えてください。 - [ ]
.CurrentPageNumber()を{page}プレースホルダーに置き換えてください。 - [ ]
.GeneratePdf()をpdf.SaveAs()に変換する。 - [アプリケーション起動時のライセンス初期化機能の追加
移行後
- [PDF 出力の視覚的比較
- [複数ページの文書が正しく改ページされているかテストしてください。
- [必要に応じて、新しい機能(セキュリティ、マージ、URL-to-PDF)を追加してください。
結論
QuestPDFとIronPDFはPDFの生成と操作の領域で異なる目的を果たします。 QuestPDFは、プログラム的なアプローチでPDFのデザインを綿密に作成する必要がある状況で輝きます。 流暢なAPIは、HTML変換よりも高い忠実度を好むユーザーにとって有利です。
一方、IronPDFはHTML変換や高度な操作機能を含む包括的なPDFソリューションを必要とする開発者に、透過的なライセンスモデルで堅牢なスイートを提供します。
この移行における主な変更点は以下のとおりです: 1.パラダイム:独自のC#流暢API → 標準的なHTML/CSS 2.テンプレート作成:C#コードのみ → デザイナーはHTML/CSSを提供できます。 3.プレビュー: IDE プラグインが必要です。 4.初期化:QuestPDF.Settings.License = LicenseType.Community → IronPdf.License.LicenseKey. 5.レイアウト:.Column() /.Row().→ CSS Flexbox 6.スタイリング:メソッドの連鎖 (.Bold().FontSize(24)) → CSS プロパティ 7.ヘッダー/フッター:page.Header() / page.Footer() → TextHeaderFooter オブジェクト 8.ページ番号:.CurrentPageNumber() → {ページ}プレースホルダ 9.保存します:.GeneratePdf("file.pdf") → pdf.SaveAs("file.pdf"). 10.新機能:PDFマージ、分割、セキュリティ、デジタル署名、URL-to-PDF
結局のところ、QuestPDFとIronPDFのどちらを選択するかは、プロジェクトの特定の要件に依存します。 シームレスなHTML統合と幅広いPDF操作が重要であれば、IronPDFは優れた選択肢です。
完全なIronPDFドキュメント、チュートリアル、APIリファレンスをご覧になり、QuestPDFへの移行を促進してください。






