C# .NETでのHTMLからPDFへの変換
IronPDFの開発者として、HTMLからPDFへの変換が顧客の期待に応える正確で高品質な結果を生み出すことがいかに重要であるかを理解しています。このC#チュートリアルでは、アプリケーション、プロジェクト、ウェブサイト用のHTMLからPDFへのコンバーターを構築する方法を案内します。C# HTMLからPDFへのコンバーターを開発し、IronPDFからの出力PDFドキュメントは、Google Chromeウェブブラウザによって生成されたPDFとピクセル単位で一致します。
-
1Install IronPDF with NuGet Package Manager
-
2このコード スニペットをコピーして実行します。
IronPdf.ChromePdfRenderer .StaticRenderHtmlAsPdf("<p>Hello World</p>") .SaveAs("pixelperfect.pdf");Dim Renderer = New IronPdf.ChromePdfRenderer() Renderer.StaticRenderHtmlAsPdf("<p>Hello World</p>").SaveAs("pixelperfect.pdf")Dim Renderer = New IronPdf.ChromePdfRenderer() Renderer.StaticRenderHtmlAsPdf("<p>Hello World</p>").SaveAs("pixelperfect.pdf") -
3実際の環境でテストするためにデプロイする
今日プロジェクトで IronPDF を使い始めましょう無料トライアル
概要
C#でHTMLをPDFに変換する方法

C# & VB.NET用HTMLからPDFへのコンバーター
.NETでプログラム的にPDFファイルを作成することは、フラストレーションを感じる作業になることがあります。PDFドキュメントファイル形式は、開発者よりもプリンター向けに設計されています。そして、C#にはPDF生成に適したライブラリや機能があまり組み込まれておらず、多くのライブラリは追加のセットアップが必要で、単純なタスクを達成するために複数行のコードを必要とするため、さらにフラストレーションを引き起こします。
このチュートリアルで使用するC# HTMLからPDFへの変換ツールは、Iron SoftwareによるIronPDFです。これは非常に人気のあるC# PDF生成および編集ライブラリです。このライブラリは完全なPDF編集および生成機能を備えており、すぐに使用でき、最小限の行数で必要なことを正確に行い、50以上の機能の優れたドキュメントを備えています。IronPDFは、.NET 10, .NET 9, .NET 8, .NET 7, .NET 6, .NET 5、.NET Core、.NET Standard、および.NET FrameworkをWindows、macOS、Linux、Docker、Azure、AWSでサポートしている点で際立っています。
C#とIronPDFを使用すると、「PDFドキュメントを生成する」または「HTMLからPDFへの変換」のロジックは簡単です。IronPDFの高度なChromeレンダラーのおかげで、PDFドキュメントのデザインとレイアウトのほとんどまたはすべてが既存のHTMLアセットを使用します。
この.NETでのHTML5を使用した動的PDF生成の方法は、コンソールアプリケーション、Windows Formsアプリケーション、WPF、ウェブサイト、MVCでも同様にうまく機能します。
IronPDFはまた、ピクセルパーフェクトなPDFのためにChromeでHTMLをデバッグすることをサポートしています。これを設定するためのチュートリアルはこちらで見つけることができます。
IronPDFは、.NETエコシステム内外のいくつかの言語で利用可能です。
IronPDFは開発用に無料で使用できます。ライブデプロイと試用版の透かしを削除するにはライセンスキーが必要です。こちらでライセンスを購入するか、無料の30日間試用キーにサインアップすることができます。
ステップ1
HTMLからPDFへのC#ライブラリをダウンロードしてインストールする
Visual Studio - NuGetパッケージマネージャー
Visual Studioで、プロジェクトソリューションエクスプローラーを右クリックし、「NuGetパッケージの管理...」を選択します。そこからIronPDFを検索し、最新バージョンをソリューションにインストールします...表示されるダイアログボックスにOKをクリックします。これはVB.NETプロジェクトでも同様に機能します。
NuGetウェブサイトでのIronPDF
IronPDFの機能、互換性、ダウンロードの詳細については、NuGetの公式ウェブサイトでIronPDFをご覧ください:https://www.nuget.org/packages/IronPdf
DLL経由でのインストール
もう一つのオプションは、IronPDF DLLを直接インストールすることです。IronPDFはhttps://ironpdf.com/packages/IronPdf.zipからダウンロードしてプロジェクトまたはGACに手動でインストールできます。
チュートリアル
C# .NETでHTML文字列でPDFを作成する
方法:HTML文字列をPDFに変換するには? C#で新しいPDFファイルを作成することは非常に効率的でやりがいのあるスキルです。
ChromePdfRenderer.RenderHtmlAsPdfメソッドを使用して、任意のHTML(HTML5)文字列をPDFに変換することができます。C# HTMLからPDFへのレンダリングは、IronPDF NuGetパッケージに付属するGoogle Chromiumエンジンの完全な機能バージョンによって行われます。
using IronPdf;
// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
var renderer = new ChromePdfRenderer();
// Render an HTML string. The result is a PdfDocument held in memory
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf");using IronPdf;
// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
var renderer = new ChromePdfRenderer();
// Render an HTML string. The result is a PdfDocument held in memory
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf");Imports IronPdf
' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
Dim renderer = New ChromePdfRenderer()
' Render an HTML string. The result is a PdfDocument held in memory
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf")Imports IronPdf
' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
Dim renderer = New ChromePdfRenderer()
' Render an HTML string. The result is a PdfDocument held in memory
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf")RenderHtmlAsPdfはHTML5、CSS3、JavaScript、画像を完全にサポートしています。これらのアセットがハードディスク上にある場合、RenderHtmlAsPdfの2番目のパラメータをアセットを含むディレクトリに設定することができます。このメソッドは、PDF情報を保持するために使用されるクラスであるPdfDocumentオブジェクトを返します。
IronPDFはChromeで表示される通りにHTMLをレンダリングします
HTML、CSS、JavaScriptを編集する際にChromeでの変更がIronPDFからの出力PDFとピクセル単位で同じであることを確認するために、Chromeを完全なHTMLデバッグ用に設定するためのチュートリアルがあります。チュートリアルはこちらでご覧ください:ChromeでHTMLをデバッグしてピクセルパーフェクトなPDFを作成する方法。
ベースURLパス(BaseUrlOrPath引数):
using IronPdf;
var renderer = new ChromePdfRenderer();
// The second argument is the base path. Relative URLs in the HTML (the image
// below, but also stylesheets, scripts and fonts) are resolved against it.
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");
pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// The second argument is the base path. Relative URLs in the HTML (the image
// below, but also stylesheets, scripts and fonts) are resolved against it.
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");
pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");Dim renderer = New ChromePdfRenderer()
' The second argument is the base path. Relative URLs in the HTML (the image
' below, but also stylesheets, scripts and fonts) are resolved against it.
Dim pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")
pdf.SaveAs("C:\MyProject\Assets\output.pdf")Dim renderer = New ChromePdfRenderer()
' The second argument is the base path. Relative URLs in the HTML (the image
' below, but also stylesheets, scripts and fonts) are resolved against it.
Dim pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")
pdf.SaveAs("C:\MyProject\Assets\output.pdf")すべての参照されたCSSスタイルシート、画像、JavaScriptファイルはそのベースパスに対して相対的であり、整然とした論理的な構造に保つことができます。また、もちろん、Google FontsやjQueryなどのウェブフォントを含むオンラインの画像、スタイルシート、アセットを参照することもできます。
既存のURLを使用してPDFをエクスポートする | URLからPDFへ
C#で既存のURLをPDFとしてレンダリングすることは非常に効率的で直感的です。これにより、チームがPDFデザインとバックエンドのPDFレンダリング作業を複数のチームに分割することができます。
次の例では、Wikipedia.comのページをレンダリングします:
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live web page straight from its URL
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live web page straight from its URL
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf");Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Render a live web page straight from its URL
Dim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
' The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf")Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Render a live web page straight from its URL
Dim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
' The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf")生成されたPDFには、ハイパーリンクやHTMLフォームさえも保持されていることに気付くでしょう。
既存のウェブページをレンダリングする際には、適用したいトリックがいくつかあります:
印刷とスクリーンCSS
CSSメディアタイプを使用すると、ページに印刷用とスクリーン用の別々のスタイルを持たせることができます。IronPDFに「印刷」CSSをレンダリングするよう指示することができ、これは通常よりシンプルです。デフォルトでは「スクリーン」CSSスタイルがレンダリングされ、ブラウザで見るものと一致します。
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Choose which CSS media type the page is rendered with.
// Screen (the default) renders the page as a browser displays it;
// Print applies the page's @media print rules instead.
// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Choose which CSS media type the page is rendered with.
// Screen (the default) renders the page as a browser displays it;
// Print applies the page's @media print rules instead.
// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Choose which CSS media type the page is rendered with.
' Screen (the default) renders the page as a browser displays it;
' Print applies the page's @media print rules instead.
' renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.PrintImports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Choose which CSS media type the page is rendered with.
' Screen (the default) renders the page as a browser displays it;
' Print applies the page's @media print rules instead.
' renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Printメイン記事:ピクセルパーフェクトなHTMLからPDFへの比較。
JavaScript
IronPDFはJavaScript、jQuery、さらにはAJAXをサポートしています。ウェブページのスナップショットをレンダリングする前に、IronPDFにJavaScriptまたはAJAXの完了を待つよう指示する必要があるかもしれません。
using IronPdf;
var renderer = new ChromePdfRenderer();
// Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = true;
// Give scripts and AJAX calls 500 milliseconds to finish before rendering.
// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
// for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500);using IronPdf;
var renderer = new ChromePdfRenderer();
// Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = true;
// Give scripts and AJAX calls 500 milliseconds to finish before rendering.
// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
// for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500);Dim renderer = New ChromePdfRenderer()
' Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = True
' Give scripts and AJAX calls 500 milliseconds to finish before rendering.
' For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
' for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500)Dim renderer = New ChromePdfRenderer()
' Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = True
' Give scripts and AJAX calls 500 milliseconds to finish before rendering.
' For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
' for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500)JavaScriptのサポートを示すために、ページが読み込まれるときにJavaScriptによってチャートが描画されるd3.js chord-diagramのドキュメントページをレンダリングします:
using IronPdf;
var renderer = new ChromePdfRenderer();
// The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
var pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");
pdf.SaveAs("chart.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
var pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");
pdf.SaveAs("chart.pdf");Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500)
' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
Dim pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord")
pdf.SaveAs("chart.pdf")Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500)
' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
Dim pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord")
pdf.SaveAs("chart.pdf")レスポンシブCSS
.NETでレスポンシブCSSを使用してHTMLからPDFへ!レスポンシブウェブページはブラウザで表示されるように設計されています。IronPDFはサーバーのOS内で実際のブラウザウィンドウを開きません。ブラウザのビューポートがないと、レスポンシブレイアウトは最も狭いブレークポイントに戻ることがあります。
この問題を回避するために印刷CSSメディアタイプを使用することをお勧めします。印刷CSSは通常レスポンシブではないはずです。
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Responsive layouts are designed for a browser viewport, so render the page's
// print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Responsive layouts are designed for a browser viewport, so render the page's
// print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Responsive layouts are designed for a browser viewport, so render the page's
' print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.PrintImports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Responsive layouts are designed for a browser viewport, so render the page's
' print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.PrintHTMLページからPDFを生成する
ハードディスク上の任意のHTMLページをPDFにレンダリングすることもできます。CSS、画像、jsなどのすべての相対アセットは、ファイルがfile://プロトコルを使用して開かれたかのようにレンダリングされます。
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render an HTML file from disk. Relative CSS, image and script paths
// resolve against the file's own folder, as if opened with file://
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// Render an HTML file from disk. Relative CSS, image and script paths
// resolve against the file's own folder, as if opened with file://
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");Dim renderer = New ChromePdfRenderer()
' Render an HTML file from disk. Relative CSS, image and script paths
' resolve against the file's own folder, as if opened with file://
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")Dim renderer = New ChromePdfRenderer()
' Render an HTML file from disk. Relative CSS, image and script paths
' resolve against the file's own folder, as if opened with file://
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")この方法には、開発中にブラウザでHTMLコンテンツをテストする機会を開発者に提供する利点があります。IronPDFのレンダリングエンジンが基づいているウェブブラウザであるChromeをお勧めします。
XMLをPDFに変換するには、XSLTテンプレートを使用してXMLコンテンツをPDFに印刷することができます。
カスタムヘッダーとフッターを追加する
ヘッダーとフッターは、IronPDFを使用してレンダリング時にPDFに追加することも、既存のPDFファイルに追加することもできます。
IronPDFを使用すると、ヘッダーとフッターにはTextHeaderFooterクラスを使用してシンプルなテキストベースのコンテンツを含めることができ、HtmlHeaderFooterクラスを使用して画像やリッチHTMLコンテンツを含めることができます。
using IronPdf;
using IronPdf.Rendering;
// Create a PDF from an existing HTML file with rendering options set up front
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Margins are in millimeters
MarginTop = 50,
MarginBottom = 50,
// Render the page's print stylesheet
CssMediaType = PdfCssMediaType.Print,
// Plain-text header: the document title, centered, above a divider line
TextHeader = new TextHeaderFooter
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
// Plain-text footer: date and time on the left, page numbers on the right
TextFooter = new TextHeaderFooter
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
}
}
};
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
// Open the result in the default PDF viewer
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "Invoice.pdf",
UseShellExecute = true
});using IronPdf;
using IronPdf.Rendering;
// Create a PDF from an existing HTML file with rendering options set up front
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Margins are in millimeters
MarginTop = 50,
MarginBottom = 50,
// Render the page's print stylesheet
CssMediaType = PdfCssMediaType.Print,
// Plain-text header: the document title, centered, above a divider line
TextHeader = new TextHeaderFooter
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
// Plain-text footer: date and time on the left, page numbers on the right
TextFooter = new TextHeaderFooter
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
}
}
};
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
// Open the result in the default PDF viewer
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "Invoice.pdf",
UseShellExecute = true
});Imports IronPdf
Imports IronPdf.Rendering
' Create a PDF from an existing HTML file with rendering options set up front
Dim renderer = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
' Margins are in millimeters
.MarginTop = 50,
.MarginBottom = 50,
' Render the page's print stylesheet
.CssMediaType = PdfCssMediaType.Print,
' Plain-text header: the document title, centered, above a divider line
.TextHeader = New TextHeaderFooter With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
' Plain-text footer: date and time on the left, page numbers on the right
.TextFooter = New TextHeaderFooter With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
}
}
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
' Open the result in the default PDF viewer
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo With {
.FileName = "Invoice.pdf",
.UseShellExecute = True
})Imports IronPdf
Imports IronPdf.Rendering
' Create a PDF from an existing HTML file with rendering options set up front
Dim renderer = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
' Margins are in millimeters
.MarginTop = 50,
.MarginBottom = 50,
' Render the page's print stylesheet
.CssMediaType = PdfCssMediaType.Print,
' Plain-text header: the document title, centered, above a divider line
.TextHeader = New TextHeaderFooter With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
' Plain-text footer: date and time on the left, page numbers on the right
.TextFooter = New TextHeaderFooter With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
}
}
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
' Open the result in the default PDF viewer
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo With {
.FileName = "Invoice.pdf",
.UseShellExecute = True
})次のハウツー記事で、すべてのレンダリングオプションを探求してください:レンダリングオプションの使用方法。
HTMLヘッダーとフッター
HtmlHeaderFooterクラスを使用すると、画像やスタイルシートを含むHTML5コンテンツを使用してリッチなヘッダーとフッターを生成することができます。
using IronPdf;
var renderer = new ChromePdfRenderer();
// An HTML footer can carry markup, styles and images.
// {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};using IronPdf;
var renderer = new ChromePdfRenderer();
// An HTML footer can carry markup, styles and images.
// {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};Dim renderer = New ChromePdfRenderer()
' An HTML footer can carry markup, styles and images.
' {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
}Dim renderer = New ChromePdfRenderer()
' An HTML footer can carry markup, styles and images.
' {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
}PDFヘッダーとフッターの動的データ
プレースホルダーを使用して、ヘッダーとフッターのテキストやHTMLにコンテンツを「メールマージ」することができます:
{page}現在のページ番号{total-pages}PDFの総ページ数{url}ウェブページからレンダリングされた場合のPDFのURL{date}今日の日付{time}現在の時刻{html-title}レンダリングされたHTMLドキュメントの<title>{pdf-title}ChromePdfRenderOptionsを介して設定されるドキュメントタイトル
C# HTMLからPDFへの変換設定
ユーザーやクライアントがPDFコンテンツのレンダリングに期待する方法には多くのニュアンスがあります。
ChromePdfRendererクラスには、これらのオプションを設定するために使用できるRenderingOptionsプロパティがあります。
たとえば、"print"スタイルのCSS3ディレクティブのみを受け入れるように選択することができます:
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf")Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf")また、印刷マージンのサイズを変更して、ページに余白を多く作り、大きなヘッダーやフッターのスペースを確保したり、パンフレットやポスターの商業印刷のためにゼロマージンを設定したりすることもできます:
using IronPdf;
var renderer = new ChromePdfRenderer();
// Page margins in millimeters. Larger margins leave room for headers and
// footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;using IronPdf;
var renderer = new ChromePdfRenderer();
// Page margins in millimeters. Larger margins leave room for headers and
// footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Page margins in millimeters. Larger margins leave room for headers and
' footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Page margins in millimeters. Larger margins leave room for headers and
' footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20HTML要素からの背景画像をオンまたはオフにすることもできます:
using IronPdf;
var renderer = new ChromePdfRenderer();
// Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");
pdf.SaveAs("output.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");
pdf.SaveAs("output.pdf");Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Dim pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>")
pdf.SaveAs("output.pdf")Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Dim pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>")
pdf.SaveAs("output.pdf")出力PDFを任意の仮想用紙サイズでレンダリングすることも可能です。縦向きや横向きのサイズ、さらにはミリメートルやインチで設定できるカスタムサイズも含まれます。
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Or a custom size, in millimeters or inches
// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);
// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Or a custom size, in millimeters or inches
// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);
// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Or a custom size, in millimeters or inches
' renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297)
' renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Or a custom size, in millimeters or inches
' renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297)
' renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)次のハウツー記事で、すべてのレンダリングオプションを探求してください:「レンダリングオプションの使用方法。」
HTMLテンプレートの適用
インターネットやウェブサイトの開発者にとって、PDFをテンプレート化または「バッチ作成」することは一般的な要件です。
IronPDFを使用すると、PDFドキュメント自体をテンプレート化するのではなく、既存のよく試された技術を使用してHTMLをテンプレート化することができます。HTMLテンプレートがクエリ文字列やデータベースからのデータと組み合わされると、動的に生成されたPDFドキュメントが得られます。
最も単純な場合、C#のString.Formatメソッドを使用することは基本的なサンプルに効果的です。
using IronPdf;
var renderer = new ChromePdfRenderer();
// Insert a value into an HTML template with string.Format
string html = string.Format("<h1>Hello {0}!</h1>", "World");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Hello.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// Insert a value into an HTML template with string.Format
string html = string.Format("<h1>Hello {0}!</h1>", "World");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Hello.pdf");Dim renderer As New ChromePdfRenderer()
' Insert a value into an HTML template with string.Format
Dim html As String = String.Format("<h1>Hello {0}!</h1>", "World")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Hello.pdf")Dim renderer As New ChromePdfRenderer()
' Insert a value into an HTML template with string.Format
Dim html As String = String.Format("<h1>Hello {0}!</h1>", "World")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Hello.pdf")HTMLファイルが長い場合、[[NAME]]のような任意のプレースホルダーを使用し、後で実際のデータに置き換えることがよくあります。
次の例では、各ユーザーにパーソナライズされた3つのPDFを作成します。
using IronPdf;
var renderer = new ChromePdfRenderer();
// A template with a placeholder to replace
var htmlTemplate = "<p>[[NAME]]</p>";
var names = new[] { "John", "James", "Jenny" };
// One personalized PDF per name
foreach (var name in names)
{
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
pdf.SaveAs(name + ".pdf");
}using IronPdf;
var renderer = new ChromePdfRenderer();
// A template with a placeholder to replace
var htmlTemplate = "<p>[[NAME]]</p>";
var names = new[] { "John", "James", "Jenny" };
// One personalized PDF per name
foreach (var name in names)
{
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
pdf.SaveAs(name + ".pdf");
}Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' A template with a placeholder to replace
Dim htmlTemplate = "<p>[[NAME]]</p>"
Dim names = New String() {"John", "James", "Jenny"}
' One personalized PDF per name
For Each name In names
Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name)
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
pdf.SaveAs(name & ".pdf")
NextImports IronPdf
Dim renderer = New ChromePdfRenderer()
' A template with a placeholder to replace
Dim htmlTemplate = "<p>[[NAME]]</p>"
Dim names = New String() {"John", "James", "Jenny"}
' One personalized PDF per name
For Each name In names
Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name)
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
pdf.SaveAs(name & ".pdf")
NextHandlebars.NETを使用した高度なテンプレート化
C#データをHTMLとマージしてPDFを生成するための洗練された方法は、Handlebarsテンプレート言語を使用することです。
Handlebarsを使用すると、C#オブジェクトやクラスインスタンス、データベースレコードを含む動的なHTMLを作成することができます。Handlebarsは、請求書の生成など、クエリが不明な数の行を返す場合に特に効果的です。
まず、プロジェクトにHandlebars.Net NuGetパッケージを追加する必要があります。
using HandlebarsDotNet;
// A Handlebars template with two placeholders
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile it once, then fill it with any object that has matching properties
var template = Handlebars.Compile(source);
var data = new { title = "My new post", body = "This is my first post!" };
string html = template(data);
// html now contains:
//
// <div class="entry">
// <h1>My new post</h1>
// <div class="body">
// This is my first post!
// </div>
// </div>using HandlebarsDotNet;
// A Handlebars template with two placeholders
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile it once, then fill it with any object that has matching properties
var template = Handlebars.Compile(source);
var data = new { title = "My new post", body = "This is my first post!" };
string html = template(data);
// html now contains:
//
// <div class="entry">
// <h1>My new post</h1>
// <div class="body">
// This is my first post!
// </div>
// </div>Imports HandlebarsDotNet
' A Handlebars template with two placeholders
Dim source = "<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile it once, then fill it with any object that has matching properties
Dim template = Handlebars.Compile(source)
Dim data = New With {.title = "My new post", .body = "This is my first post!"}
Dim html As String = template(data)
' html now contains:
'
' <div class="entry">
' <h1>My new post</h1>
' <div class="body">
' This is my first post!
' </div>
' </div>Imports HandlebarsDotNet
' A Handlebars template with two placeholders
Dim source = "<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile it once, then fill it with any object that has matching properties
Dim template = Handlebars.Compile(source)
Dim data = New With {.title = "My new post", .body = "This is my first post!"}
Dim html As String = template(data)
' html now contains:
'
' <div class="entry">
' <h1>My new post</h1>
' <div class="body">
' This is my first post!
' </div>
' </div>このHTMLをレンダリングするには、単にRenderHtmlAsPdfメソッドを使用します。
using HandlebarsDotNet;
using IronPdf;
// Fill the Handlebars template, then render the resulting HTML
var template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");
string html = template(new { title = "My new post", body = "This is my first post!" });
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Handlebars.pdf");using HandlebarsDotNet;
using IronPdf;
// Fill the Handlebars template, then render the resulting HTML
var template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");
string html = template(new { title = "My new post", body = "This is my first post!" });
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Handlebars.pdf");Imports HandlebarsDotNet
Imports IronPdf
' Fill the Handlebars template, then render the resulting HTML
Dim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")
Dim html As String = template(New With {.title = "My new post", .body = "This is my first post!"})
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Handlebars.pdf")Imports HandlebarsDotNet
Imports IronPdf
' Fill the Handlebars template, then render the resulting HTML
Dim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")
Dim html As String = template(New With {.title = "My new post", .body = "This is my first post!"})
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Handlebars.pdf")Handlebarsテンプレート言語とそのC#実装については、GitHubから詳しく学ぶことができます。
HTML5を使用したページブレークの追加
PDFドキュメントで一般的な要件はページネーションです。開発者は、PDFページの開始と終了を制御して、クリーンで読みやすいレイアウトを作成する必要があります。
これを行う最も簡単な方法は、印刷されたHTMLドキュメントにページブレークをレンダリングするあまり知られていないCSSトリックを使用することです。
<div style='page-break-after: always;'> </div>
提供されたHTMLは機能しますが、最善の方法ではありません。次の例のようにメディア属性を調整することをお勧めします。このように整然とした方法でマルチページHTMLコンテンツをレイアウトします。IronPDFはデフォルトでscreenメディアタイプでレンダリングするため、RenderingOptions.CssMediaTypeがPdfCssMediaType.Printに設定されている場合にのみmedia="print"スタイルシートが適用されます(上記の変換設定を参照)。
<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>This is Page 1</h1>
</div>
<div class="page">
<h1>This is Page 2</h1>
</div>
<div class="page">
<h1>This is Page 3</h1>
</div>
</body>
</html>
ハウツーでは、ページブレークのヒントとトリックをさらに詳しく説明しています。
PDFにカバーページを添付する
IronPDFを使用すると、PDFドキュメントを簡単にマージできます。この技術の最も一般的な使用法は、既存のレンダリングされたPDFドキュメントにカバーページまたはバックページを追加することです。
これを行うには、まずカバーページをレンダリングし、次にPdfDocument.Merge()静的メソッドを使用して2つのドキュメントを結合します。
using IronPdf;
var renderer = new ChromePdfRenderer();
// The document body, rendered from a web page
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
// Prepend an existing PDF as the cover page. Merge returns a new document.
var cover = PdfDocument.FromFile("CoverPage.pdf");
var pdfMerged = PdfDocument.Merge(cover, pdf);
pdfMerged.SaveAs("Combined.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// The document body, rendered from a web page
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
// Prepend an existing PDF as the cover page. Merge returns a new document.
var cover = PdfDocument.FromFile("CoverPage.pdf");
var pdfMerged = PdfDocument.Merge(cover, pdf);
pdfMerged.SaveAs("Combined.pdf");Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The document body, rendered from a web page
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
' Prepend an existing PDF as the cover page. Merge returns a new document.
Dim cover = PdfDocument.FromFile("CoverPage.pdf")
Dim pdfMerged = PdfDocument.Merge(cover, pdf)
pdfMerged.SaveAs("Combined.pdf")Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The document body, rendered from a web page
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
' Prepend an existing PDF as the cover page. Merge returns a new document.
Dim cover = PdfDocument.FromFile("CoverPage.pdf")
Dim pdfMerged = PdfDocument.Merge(cover, pdf)
pdfMerged.SaveAs("Combined.pdf")完全なコード例はこちらで見つけることができます:PDFカバーページコード例。
透かしを追加する
IronPDFがサポートする最終的なC# PDF機能は、ドキュメントに透かしを追加することです。これを使用して、ドキュメントが「機密」または「サンプル」であることを各ページに通知することができます。
using IronPdf;
using IronPdf.Editing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
// The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark(
"<h2 style='color:red; font-size:50px'>SAMPLE</h2>",
rotation: 30,
opacity: 50,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");using IronPdf;
using IronPdf.Editing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
// The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark(
"<h2 style='color:red; font-size:50px'>SAMPLE</h2>",
rotation: 30,
opacity: 50,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");Imports IronPdf
Imports IronPdf.Editing
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
' The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark("<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation:=30, opacity:=50, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")Imports IronPdf
Imports IronPdf.Editing
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
' The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark("<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation:=30, opacity:=50, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")完全なコード例はこちらで見つけることができます:PDF透かしコード例。
C#ソースコードをダウンロードする
このチュートリアルの無料HTMLからPDFへのコンバーターC#ソースコードは、Visual Studio 2022プロジェクトファイルとしてダウンロード可能です。C#でPDFドキュメントオブジェクトを生成するためにそのレンダリングエンジンを使用します。
このチュートリアルをVisual Studioプロジェクトとしてダウンロードする
無料ダウンロードには、HTMLからPDFを作成するために必要なすべてが含まれています - C# PDFコード例コードを含む:
- C#を使用してHTML文字列をPDFに変換する
- C#でHTMLファイルをPDFに(CSS、JavaScript、画像をサポート)
- C# HTMLからPDFへのURL(「URLからPDFへ」)
- C# PDF編集と設定の例
- JavaScriptキャンバスチャート(d3.jsなど)をPDFにレンダリングする
- C#用PDFライブラリ
クラスリファレンス
開発者はIronPdf.PdfDocumentクラスリファレンスにも興味があるかもしれません:
このオブジェクトモデルは、PDFドキュメントがどのように:
- 暗号化され、パスワードで保護されるか
- 編集または新しいHTMLコンテンツで「スタンプ」されるか
- 前景と背景画像で強化されるか
- ページまたはドキュメントレベルでマージ、結合、切り捨て、スプライスされるか
- プレーンテキストと画像を抽出するために解析されるか、IronOCRパッケージでOCR処理されるか
Blazor HTMLからPDFへ
BlazorサーバーにHTMLからPDFへの機能を追加するのは簡単です。単に:
- 新しいBlazorサーバープロジェクトを作成するか、既存のものを使用する
- プロジェクトにIronPDFライブラリをNuGetを使用して追加する
- 新しいRazorコンポーネントを追加するか、既存のものを使用する
InputTextAreaを追加し、IronPDFにリンクする- IronPDFに任せてデプロイする
詳細な手順については、BlazorアプリケーションでHTMLをPDFに変換するための完全なステップバイステップガイドを参照してください。
他のPDFライブラリとの比較
IronPDFは、現代の.NET開発者向けに特化した強力でフル機能のPDFライブラリです。高度なChromiumエンジンによるネイティブHTMLからPDFへの変換、直感的なAPI、定期的な更新により、開発を簡素化しながら高品質な結果を保証します。他のツールとどのように比較されるかを詳しく見てみましょう:
PDFSharp
- コア機能: PDFsharpは、管理コードでPDFドキュメントを作成および編集するためのオープンソース(MIT)ライブラリです。HTMLレンダリングエンジンを持たないため、WebコンテンツをPDFに変換するには、別のサードパーティのレンダラーが必要です。
- 最新の標準: IronPDFは、Chromiumベースのエンジンを通じてHTML、CSS、JavaScriptなどの最新のWeb技術を活用し、PDFが現代的な外観と感触を維持することを保証します。
- サポートと更新: PDFsharpはオープンソースであり、数か月ごとにリリースを行い、商業サポートはメンテナーによって別途販売されます。IronPDFは毎月リリースとセキュリティパッチを提供し、すべてのライセンスにはプロフェッショナルなエンジニアリングサポートが含まれており、企業アプリケーションにとって重要です。
wkhtmltopdf
- 統合の容易さ: wkhtmltopdfはCライブラリを持つコマンドラインツールであり、公式の.NETパッケージはありません。そのため、.NETから使用するにはネイティブバイナリを起動する(またはDinkToPdfなどのサードパーティラッパーを介して呼び出す)必要があり、デプロイするすべてのプラットフォームにそのバイナリを提供する必要があります。
- レンダリング技術: wkhtmltopdfはQtWebKitでレンダリングしますが、Qtは2015年にこのWebKitフォークを非推奨とし、Qt 5.6で削除しました。そのため、特に動的でコンテンツが豊富なWebサイトでは、最新のJavaScriptおよびCSS機能がサポートされません。IronPDFのChromiumエンジンは現在のWeb標準をレンダリングします。
- 継続的な開発: wkhtmltopdfの最後のリリースは2020年6月の0.12.6であり、そのGitHubリポジトリは2023年1月にアーカイブされました。そのため、ベンダーサポートはありません。IronPDFは毎月の更新と専用のカスタマーサービスで進化を続けています。
iTextSharp
- HTMLからPDFへのレンダリング: iTextは、ブラウザではなくCSSレイアウトエンジンである別のpdfHTMLアドオンを通じてHTMLを変換します。レガシーのiTextSharp 5ラインは現在、セキュリティ修正のみを受け取ります。IronPDFは、コアパッケージに埋め込まれたChromiumエンジンでHTMLをレンダリングし、アドオンは必要ありません。
- 開発者体験: iTextのAPIはPDFオブジェクトとレイアウト要素のレベルで動作し、強力ですが、日常的なタスクにはより多くのコードが必要です。IronPDFは、コーディングを簡素化し、プロジェクトの納期を短縮するクリーンで直感的なC# APIを提供します。
- メンテナンスとサポート: iTextの無料使用はAGPLの下で行われ、ベンダーサポートは商業ライセンスに限定されており、iTextSharp 5.xはセキュリティ修正を除いてサポート終了です。IronPDFには、プロフェッショナルサポートと毎月の更新がすべてのライセンスに含まれています。
Aspose.PDF
- 変換品質: Aspose.PDFは、ブラウザではなく独自のレイアウトエンジンでHTMLを変換します。そのドキュメントは、
HttpClientでHTMLをストリームにフェッチし、それをHtmlLoadOptionsでDocumentに渡すことでWebページを変換しますが、URLから直接レンダリングするわけではありません。以下のr/nflテストでは、出力はほぼ空で、コミュニティロゴ、1つの見出し、いくつかの空のボックスのみでした。IronPDFのChromiumエンジンは、JavaScriptを含むURLを直接レンダリングします。 - APIの使いやすさ: Aspose.PDFのAPIは冗長になることがありますが、IronPDFは開発者に優しい体験を重視し、セットアップ時間を最小限に抑え、生産性を向上させます。
- 出力の忠実度: IronPDFはChromiumでレンダリングするため、PDFは同じHTMLに対するChromeの表示と一致し、高ボリュームのPDF生成においてデザインとデバッグが予測可能になります。
Syncfusion PDF
- APIの複雑さ: Syncfusion PDFは、学習するAPIの範囲が広い有能なライブラリです。対照的に、IronPDFは迅速な統合のためのシンプルなAPIを提供します。
- レンダリングエンジン: SyncfusionのHTMLコンバーターは現在、Chromium Blinkエンジンを使用しています。以前のWebKitおよびInternet Explorerエンジンは、Essential Studio 2022 Volume 3で廃止されました。以下のr/nflテストでは、Syncfusionの出力はメインフィードを保持しましたが、ナビゲーションとコミュニティパネルは削除されました。一方、IronPDFのChromiumエンジンはページ全体をレンダリングしました。
- 変換を超えて: IronPDFのパッケージは、デジタル署名、注釈、フォーム入力、バーコードスタンプもカバーしており、同じライブラリでドキュメントワークフローの残りを処理します。
レンダリング比較
これらのライブラリのHTMLからPDFへの変換品質を比較するために、動的コンテンツ、ライブ更新、最新のCSS、およびJavaScriptベースの要素を含むRedditコミュニティページ、r/nflを使用しました。
https://www.reddit.com/r/nfl/

各ライブラリのデフォルト設定での単一の実行からの結果は次のとおりです。SyncfusionとAspose.PDFは評価ビルドとして実行され、そのため出力には評価用の透かしが含まれています(各画像をクリックすると拡大表示されます):
IronPDF
動的コンテンツと最新のスタイリングを保持した、フォーマットが良く視覚的に正確なPDF。SyncFusion
評価ビルドで変換。メインフィード、投稿コンテンツ、スタイリングは狭い単一カラムレイアウトで通過しましたが、左のナビゲーションと右のコミュニティパネルは削除されました。Aspose.PDF
評価ビルド; HTMLを最初にダウンロードする必要がありました(Aspose.PDFはURLではなくストリームからHTMLをロードします)。出力はほぼ空で、コミュニティロゴ、1つの見出し、いくつかの空のボックスのみでした。Wkhtmltopdf
wkhtmltopdfは変換を完了しましたが、結果はページのテキストと画像のみで、レイアウト、スタイリング、動的要素、インタラクティビティはありませんでした。これにより、wkhtmltopdfは現代の動的なWebページには不適です。結論
.NET開発者が現代的で信頼性のあるPDFソリューションを求める場合、IronPDFは強力な選択肢です。ChromiumベースのHTMLからPDFへの変換、使いやすさ、定期的な更新、幅広い機能セットにより、トップの選択肢となります。小規模なプロジェクトでも大規模な企業アプリケーションでも、IronPDFは生産性を向上させ、古いまたはサポートされていないライブラリに関連するリスクを回避します。商業アプリケーション向けに設計されたIronPDFは、プロジェクトを維持されサポートされたライブラリに保ちます。
実際の動的なWebページでのテストでは、IronPDFが最も完全で正確なレンダリングを生成しました。Syncfusionはナビゲーションとコミュニティパネルを削除しました。Aspose.PDFは最初にHTMLをダウンロードする必要があり、それでもページのほとんどをレンダリングしませんでした。wkhtmltopdfはページのスタイリングなしでテキストと画像を生成し、現代のサイトには不適です。
現代のHTMLからPDFへのワークフローにおいて、レンダリングの正確さと小さく読みやすいAPIの組み合わせがIronPDFを際立たせます。
動的で重いCSS HTMLを簡単にPDFに変換するIronPDFのフル機能スイートを体験してください。今すぐ無料トライアルでお試しください。
C#でのHTMLからPDFへのチュートリアルビデオを見る
PDFドキュメントを使用して、ChromeでPDFをダウンロードする代わりにブラウザで開くように設定する方法を学ぶために、次のリンクを訪問できます。
よくある質問
C#でIronPDFを使用してHTMLをPDFに変換するにはどうすればよいですか?
IronPDFを使用してHTMLをPDFに変換するには、ChromePdfRendererを初期化し、RenderHtmlAsPdfメソッドを使用してHTMLコンテンツをPDFとしてレンダリングし、その後PDFをファイルに保存する必要があります。
IronPDFのシステム要件は何ですか?
IronPDFは、Windows、macOS、Linux、Docker、Azure、AWS上で.NET 10、.NET 9、.NET 8、.NET 7、.NET 6、.NET 5、.NET Core、.NET Standard、.NET Frameworkをサポートしています。
IronPDFを他のプログラミング言語で使用できますか?
はい、IronPDFは.NETエコシステム内外の複数の言語で使用できます。F#、VB.NET、Python、Java、Node.jsを含みます。
IronPDFを使用してPDFにカスタムヘッダーとフッターを追加するにはどうすればよいですか?
IronPDFを使用すると、TextHeaderFooterクラスを使用してテキストベースのコンテンツを、HtmlHeaderFooterクラスを使用してリッチHTMLコンテンツを追加できます。
IronPDFで既存のURLからPDFをレンダリングすることは可能ですか?
はい、IronPDFのRenderUrlAsPdfメソッドを使用して既存のURLからPDFをレンダリングできます。
IronPDFは高度なCSSとJavaScriptのレンダリングをサポートしていますか?
はい、IronPDFはjQueryやAJAXを含む高度なCSS3とJavaScriptをサポートしており、現代のウェブデザインを正確にレンダリングします。
IronPDFでバッチPDF作成のためにHTMLテンプレートを適用できますか?
はい、C#のテンプレート技術を使用して、String.FormatやHandlebars.NETを含む動的にPDFを生成できます。
IronPDFは他のPDFライブラリとどのように比較されますか?
IronPDFは埋め込みのChromiumエンジンでHTMLをレンダリングし、毎月の更新を提供し、コンパクトなC# APIを持っています。このチュートリアルでは、PdfSharp、wkhtmltopdf、iTextSharp、Aspose.PDF、Syncfusion PDFと比較し、動的なウェブページのサイドバイサイドレンダリングテストを含みます。
IronPDFでPDFに透かしを追加できますか?
はい、IronPDFを使用すると、PDFドキュメントにテキストまたは画像の透かしを追加できます。
IronPDFの試用版はありますか?
はい、ライセンスを購入する前にIronPDFの機能をテストするための30日間の無料試用キーにサインアップできます。
ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。