# C# .NETでのHTMLからPDFへの変換
IronPDFの開発者として、HTMLからPDFへの変換が顧客の期待に応える正確で高品質な結果を生み出すことがいかに重要であるかを理解しています。このC#チュートリアルでは、アプリケーション、プロジェクト、ウェブサイト用のHTMLからPDFへのコンバーターを構築する方法を案内します。C# HTMLからPDFへのコンバーターを開発し、IronPDFからの出力PDFドキュメントは、Google Chromeウェブブラウザによって生成されたPDFとピクセル単位で一致します。
```cs
:title=Get started making PDFs now!
IronPdf.ChromePdfRenderer
.StaticRenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
```
<hr class="separator" />
<p class="main-content__segment-title">概要</p>
<div class="hsg-featured-snippet">
<h2>C#でHTMLをPDFに変換する方法</h2>
<img class="featured-snippet__image featured-snippet__image--float-right featured-snippet__image--html-pdf" src="/static-assets/pdf/images/html-to-pdf-converter-in-csharp.png" alt="C#でHTMLをPDFに変換する方法" />
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronPdf/">HTMLからPDFへのC#ライブラリをダウンロードしてインストールする</a></li>
<li><a href="#anchor-create-a-pdf-with-an-html-string-in-c-net">HTML文字列でPDFを作成する</a></li>
<li><a href="#anchor-create-a-pdf-with-an-html-string-in-c-net">RenderHtmlAsPdfメソッドを使用してHTML文字列をPDFに変換する</a></li>
<li><a href="#anchor-export-a-pdf-using-existing-url">既存のURLを使用してPDFをエクスポートする</a></li>
<li><a href="#anchor-generate-a-pdf-from-a-html-page">HTMLページからPDFを生成する</a></li>
<li><a href="#anchor-add-custom-headers-and-footers">カスタムヘッダーとフッターを追加する</a></li>
<li>SaveAsを呼び出してPDFファイルをコンピュータに保存する</li>
<li><a href="#anchor-c-html-to-pdf-conversion-settings">さらに詳しく</a></li>
</ol>
</div>
<br class="main-article__clear-both" />
## C# & VB.NET用HTMLからPDFへのコンバーター
.NETでプログラム的にPDFファイルを作成することは、フラストレーションを感じる作業になることがあります。PDFドキュメントファイル形式は、開発者よりもプリンター向けに設計されています。そして、C#にはPDF生成に適したライブラリや機能があまり組み込まれておらず、多くのライブラリは追加のセットアップが必要で、単純なタスクを達成するために複数行のコードを必要とするため、さらにフラストレーションを引き起こします。
このチュートリアルで使用するC# HTMLからPDFへの変換ツールは、Iron SoftwareによるIronPDFです。これは非常に人気のあるC# PDF生成および編集ライブラリです。このライブラリは完全なPDF編集および生成機能を備えており、すぐに使用でき、最小限の行数で必要なことを正確に行い、[50以上の機能の優れたドキュメント](/features/)を備えています。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を使用すると、「<a href="/how-to/create-new-pdfs/">PDFドキュメントを生成する</a>」または「<a href="/examples/using-html-to-create-a-pdf/">HTMLからPDFへの変換</a>」のロジックは簡単です。IronPDFの高度なChromeレンダラーのおかげで、PDFドキュメントのデザインとレイアウトのほとんどまたはすべてが既存のHTMLアセットを使用します。
この.NETでのHTML5を使用した動的PDF生成の方法は、コンソールアプリケーション、Windows Formsアプリケーション、WPF、ウェブサイト、MVCでも同様にうまく機能します。
**IronPDFはまた、ピクセルパーフェクトなPDFのためにChromeでHTMLをデバッグすることをサポートしています。これを設定するためのチュートリアルは<a href="/how-to/pixel-perfect-html-to-pdf/">こちら</a>で見つけることができます。**
IronPDFは、.NETエコシステム内外のいくつかの言語で利用可能です。
- [F#ガイド](/get-started/fsharp-pdf-library-html-to-pdf/)
- [VB.NETガイド](/get-started/vb-net-pdf/)
- [Python](/python/tutorials/html-to-pdf/)
- [Java](/java/tutorials/html-to-pdf/)
- [Node.js](/nodejs/tutorials/html-to-pdf/)
IronPDFは開発用に無料で使用できます。ライブデプロイと試用版の透かしを削除するにはライセンスキーが必要です。[こちらでライセンスを購入する](/licensing/)か、<a class='js-modal-open' data-modal-id='trial-license'>無料の30日間試用キーにサインアップする</a>ことができます。
<hr class="separator" />
<p class="main-content__segment-title">ステップ1</p>
## HTMLからPDFへのC#ライブラリをダウンロードしてインストールする
### Visual Studio - NuGetパッケージマネージャー
Visual Studioで、プロジェクトソリューションエクスプローラーを右クリックし、「NuGetパッケージの管理...」を選択します。そこからIronPDFを検索し、最新バージョンをソリューションにインストールします...表示されるダイアログボックスにOKをクリックします。これはVB.NETプロジェクトでも同様に機能します。
```shell
:ProductInstall
```
### NuGetウェブサイトでのIronPDF
IronPDFの機能、互換性、ダウンロードの詳細については、NuGetの公式ウェブサイトでIronPDFをご覧ください:<a class="js-modal-open" href="https://www.nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download">https://www.nuget.org/packages/IronPdf</a>
### DLL経由でのインストール
もう一つのオプションは、IronPDF DLLを直接インストールすることです。IronPDFは<a class="js-modal-open" href="/packages/IronPdf.zip" data-modal-id="trial-license-after-download">https://ironpdf.com/packages/IronPdf.zip</a>からダウンロードしてプロジェクトまたはGACに手動でインストールできます。
<hr class="separator" />
<p class="main-content__segment-title">チュートリアル</p>
## C# .NETでHTML文字列でPDFを作成する
**方法:HTML文字列をPDFに変換するには?** C#で新しいPDFファイルを作成することは非常に効率的でやりがいのあるスキルです。
[ChromePdfRenderer.RenderHtmlAsPdf](/object-reference/api/IronPdf.ChromePdfRenderer.html)メソッドを使用して、任意のHTML(HTML5)文字列をPDFに変換することができます。**C# HTMLからPDFへのレンダリング**は、IronPDF NuGetパッケージに付属するGoogle Chromiumエンジンの完全な機能バージョンによって行われます。
```csharp
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");
```
`RenderHtmlAsPdf`はHTML5、CSS3、JavaScript、画像を完全にサポートしています。これらのアセットがハードディスク上にある場合、`RenderHtmlAsPdf`の2番目のパラメータをアセットを含むディレクトリに設定することができます。このメソッドは、PDF情報を保持するために使用されるクラスである**PdfDocument**オブジェクトを返します。
### IronPDFはChromeで表示される通りにHTMLをレンダリングします
HTML、CSS、JavaScriptを編集する際にChromeでの変更がIronPDFからの出力PDFとピクセル単位で同じであることを確認するために、Chromeを完全なHTMLデバッグ用に設定するためのチュートリアルがあります。チュートリアルはこちらでご覧ください:[ChromeでHTMLをデバッグしてピクセルパーフェクトなPDFを作成する方法](/how-to/pixel-perfect-html-to-pdf/)。
**ベースURLパス**(`BaseUrlOrPath`引数):
```csharp
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");
```
すべての参照されたCSSスタイルシート、画像、JavaScriptファイルはそのベースパスに対して相対的であり、整然とした論理的な構造に保つことができます。また、もちろん、Google FontsやjQueryなどのウェブフォントを含むオンラインの画像、スタイルシート、アセットを参照することもできます。
<hr class="separator" />
## 既存のURLを使用してPDFをエクスポートする | URLからPDFへ
C#で既存のURLをPDFとしてレンダリングすることは非常に効率的で直感的です。これにより、チームがPDFデザインとバックエンドのPDFレンダリング作業を複数のチームに分割することができます。
次の例では、Wikipedia.comのページをレンダリングします:
```csharp
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");
```
生成されたPDFには、ハイパーリンクやHTMLフォームさえも保持されていることに気付くでしょう。
既存のウェブページをレンダリングする際には、適用したいトリックがいくつかあります:
### 印刷とスクリーンCSS
CSSメディアタイプを使用すると、ページに印刷用とスクリーン用の別々のスタイルを持たせることができます。IronPDFに「印刷」CSSをレンダリングするよう指示することができ、これは通常よりシンプルです。デフォルトでは「スクリーン」CSSスタイルがレンダリングされ、ブラウザで見るものと一致します。
```csharp
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;
```
メイン記事:[ピクセルパーフェクトなHTMLからPDFへの比較](/how-to/pixel-perfect-html-to-pdf/#decide-to-use-css-media-type-print-or-screen)。
### JavaScript
IronPDFはJavaScript、jQuery、さらにはAJAXをサポートしています。ウェブページのスナップショットをレンダリングする前に、[IronPDFにJavaScriptまたはAJAXの完了を待つよう指示する](/how-to/javascript-to-pdf/)必要があるかもしれません。
```csharp
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);
```
JavaScriptのサポートを示すために、ページが読み込まれるときにJavaScriptによってチャートが描画される[d3.js chord-diagramのドキュメントページ](https://d3js.org/d3-chord)をレンダリングします:
```csharp
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");
```
### レスポンシブCSS
.NETでレスポンシブCSSを使用してHTMLからPDFへはブラウザで表示されるように設計されています。IronPDFはサーバーのOS内で実際のブラウザウィンドウを開きません。ブラウザのビューポートがないと、レスポンシブレイアウトは最も狭いブレークポイントに戻ることがあります。
この問題を回避するために**印刷**CSSメディアタイプを使用することをお勧めします。印刷CSSは通常レスポンシブではないはずです。
```csharp
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;
```
<hr class="separator" />
## HTMLページからPDFを生成する
ハードディスク上の任意のHTMLページをPDFにレンダリングすることもできます。CSS、画像、jsなどのすべての相対アセットは、ファイルが**file://**プロトコルを使用して開かれたかのようにレンダリングされます。
```csharp
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");
```
この方法には、開発中にブラウザでHTMLコンテンツをテストする機会を開発者に提供する利点があります。IronPDFのレンダリングエンジンが基づいているウェブブラウザであるChromeをお勧めします。
[XMLをPDFに変換するには、XSLTテンプレートを使用してXMLコンテンツをPDFに印刷することができます](/how-to/xml-to-pdf/)。
<hr class="separator" />
## カスタムヘッダーとフッターを追加する
ヘッダーとフッターは、IronPDFを使用してレンダリング時にPDFに追加することも、既存のPDFファイルに追加することもできます。
IronPDFを使用すると、ヘッダーとフッターには*`TextHeaderFooter`*クラスを使用してシンプルなテキストベースのコンテンツを含めることができ、*`HtmlHeaderFooter`*クラスを使用して画像やリッチHTMLコンテンツを含めることができます。
```csharp
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
});
```
次のハウツー記事で、すべてのレンダリングオプションを探求してください:[レンダリングオプションの使用方法](/how-to/rendering-options/)。
### HTMLヘッダーとフッター
`HtmlHeaderFooter`クラスを使用すると、画像やスタイルシートを含むHTML5コンテンツを使用してリッチなヘッダーとフッターを生成することができます。
```csharp
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>"
};
```
### PDFヘッダーとフッターの動的データ
プレースホルダーを使用して、ヘッダーとフッターのテキストやHTMLにコンテンツを「メールマージ」することができます:
- `{page}` 現在のページ番号
- `{total-pages}` PDFの総ページ数
- `{url}` ウェブページからレンダリングされた場合のPDFのURL
- `{date}` 今日の日付
- `{time}` 現在の時刻
- `{html-title}` レンダリングされたHTMLドキュメントの`<title>`
- `{pdf-title}` ChromePdfRenderOptionsを介して設定されるドキュメントタイトル
<hr class="separator" />
## C# HTMLからPDFへの変換設定
ユーザーやクライアントがPDFコンテンツのレンダリングに期待する方法には多くのニュアンスがあります。
`ChromePdfRenderer`クラスには、これらのオプションを設定するために使用できる**RenderingOptions**プロパティがあります。
たとえば、"`print`"スタイルのCSS3ディレクティブのみを受け入れるように選択することができます:
```csharp
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");
```
また、印刷マージンのサイズを変更して、ページに余白を多く作り、大きなヘッダーやフッターのスペースを確保したり、パンフレットやポスターの商業印刷のためにゼロマージンを設定したりすることもできます:
```csharp
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;
```
HTML要素からの背景画像をオンまたはオフにすることもできます:
```csharp
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");
```
出力PDFを任意の仮想用紙サイズでレンダリングすることも可能です。縦向きや横向きのサイズ、さらにはミリメートルやインチで設定できるカスタムサイズも含まれます。
```csharp
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);
```
次のハウツー記事で、すべてのレンダリングオプションを探求してください:「[レンダリングオプションの使用方法](/how-to/rendering-options/)。」
<hr class="separator" />
## HTMLテンプレートの適用
インターネットやウェブサイトの開発者にとって、PDFをテンプレート化または「バッチ作成」することは一般的な要件です。
IronPDFを使用すると、PDFドキュメント自体をテンプレート化するのではなく、既存のよく試された技術を使用してHTMLをテンプレート化することができます。HTMLテンプレートがクエリ文字列やデータベースからのデータと組み合わされると、動的に生成されたPDFドキュメントが得られます。
最も単純な場合、C#のString.Formatメソッドを使用することは基本的なサンプルに効果的です。
```csharp
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");
```
HTMLファイルが長い場合、`[[NAME]]`のような任意のプレースホルダーを使用し、後で実際のデータに置き換えることがよくあります。
次の例では、各ユーザーにパーソナライズされた3つのPDFを作成します。
```csharp
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");
}
```
### Handlebars.NETを使用した高度なテンプレート化
C#データをHTMLとマージしてPDFを生成するための洗練された方法は、Handlebarsテンプレート言語を使用することです。
Handlebarsを使用すると、C#オブジェクトやクラスインスタンス、データベースレコードを含む動的なHTMLを作成することができます。Handlebarsは、請求書の生成など、クエリが不明な数の行を返す場合に特に効果的です。
まず、プロジェクトに[Handlebars.Net NuGetパッケージ](https://www.nuget.org/packages/Handlebars.NET/)を追加する必要があります。
```csharp
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>
```
このHTMLをレンダリングするには、単に`RenderHtmlAsPdf`メソッドを使用します。
```csharp
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");
```
Handlebarsテンプレート言語とそのC#実装については、[GitHub](https://github.com/Handlebars-Net/Handlebars.Net)から詳しく学ぶことができます。
### HTML5を使用したページブレークの追加
PDFドキュメントで一般的な要件はページネーションです。開発者は、PDFページの開始と終了を制御して、クリーンで読みやすいレイアウトを作成する必要があります。
これを行う最も簡単な方法は、印刷されたHTMLドキュメントにページブレークをレンダリングするあまり知られていないCSSトリックを使用することです。
```html
<div style='page-break-after: always;'> </div>
```
提供されたHTMLは機能しますが、最善の方法ではありません。次の例のようにメディア属性を調整することをお勧めします。このように整然とした方法でマルチページHTMLコンテンツをレイアウトします。IronPDFはデフォルトで`screen`メディアタイプでレンダリングするため、`RenderingOptions.CssMediaType`が`PdfCssMediaType.Print`に設定されている場合にのみ`media="print"`スタイルシートが適用されます(上記の[変換設定](#anchor-c-html-to-pdf-conversion-settings)を参照)。
```html
<!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>
```
ハウツーでは、[ページブレークのヒントとトリック](/how-to/html-to-pdf-page-breaks/)をさらに詳しく説明しています。
<hr class="separator" />
## PDFにカバーページを添付する
IronPDFを使用すると、PDFドキュメントを簡単にマージできます。この技術の最も一般的な使用法は、既存のレンダリングされたPDFドキュメントにカバーページまたはバックページを追加することです。
これを行うには、まずカバーページをレンダリングし、次に`PdfDocument.Merge()`静的メソッドを使用して2つのドキュメントを結合します。
```csharp
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");
```
完全なコード例はこちらで見つけることができます:[PDFカバーページコード例](/examples/pdf-cover-page/)。
<hr class="separator" />
## 透かしを追加する
IronPDFがサポートする最終的な[C# PDF](/use-case/csharp-pdf/)機能は、ドキュメントに透かしを追加することです。これを使用して、ドキュメントが「機密」または「サンプル」であることを各ページに通知することができます。
```csharp
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");
```
完全なコード例はこちらで見つけることができます:[PDF透かしコード例](/examples/pdf-watermarking/)。
<hr class="separator" />
## C#ソースコードをダウンロードする
このチュートリアルの**無料HTMLからPDFへのコンバーターC#ソースコード**は、Visual Studio 2022プロジェクトファイルとしてダウンロード可能です。C#でPDFドキュメントオブジェクトを生成するためにそのレンダリングエンジンを使用します。
[このチュートリアルをVisual Studioプロジェクトとしてダウンロードする](/tutorials/html-to-pdf/downloads/CSharp-Html-To-Pdf-Tutorial.zip)
無料ダウンロードには、HTMLからPDFを作成するために必要なすべてが含まれています - C# PDFコード例コードを含む:
1. C#を使用してHTML文字列をPDFに変換する
2. C#でHTMLファイルをPDFに(CSS、JavaScript、画像をサポート)
3. C# HTMLからPDFへのURL(「URLからPDFへ」)
4. C# PDF編集と設定の例
5. JavaScriptキャンバスチャート(d3.jsなど)をPDFにレンダリングする
6. C#用PDFライブラリ
### クラスリファレンス
開発者は`IronPdf.PdfDocument`クラスリファレンスにも興味があるかもしれません:
[IronPdf.PdfDocumentクラスリファレンス](https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html)
このオブジェクトモデルは、PDFドキュメントがどのように:
- 暗号化され、パスワードで保護されるか
- 編集または新しいHTMLコンテンツで「スタンプ」されるか
- 前景と背景画像で強化されるか
- ページまたはドキュメントレベルでマージ、結合、切り捨て、スプライスされるか
- プレーンテキストと画像を抽出するために解析されるか、IronOCRパッケージでOCR処理されるか
<hr class="separator" />
## Blazor HTMLからPDFへ
BlazorサーバーにHTMLからPDFへの機能を追加するのは簡単です。単に:
1. 新しいBlazorサーバープロジェクトを作成するか、既存のものを使用する
2. プロジェクトにIronPDFライブラリをNuGetを使用して追加する
3. 新しいRazorコンポーネントを追加するか、既存のものを使用する
4. `InputTextArea`を追加し、IronPDFにリンクする
5. IronPDFに任せてデプロイする
詳細な手順については、[BlazorアプリケーションでHTMLをPDFに変換する](/how-to/blazor-tutorial/)ための[完全なステップバイステップガイド](/how-to/blazor-tutorial/)を参照してください。
<img src="/static-assets/pdf/tutorials/blazor-tutorial/blazor-tutorial-3.webp" alt="IronPDFでBlazorサーバーページから生成されたPDF" />
<hr class="separator" />
## 他の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は評価ビルドとして実行され、そのため出力には評価用の透かしが含まれています(*各画像をクリックすると拡大表示されます*):
<div class="competitors-section__wrapper">
<div class="competitors__card half">
<p class="competitors__header">IronPDF</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-2.webp"
alt="IronPDFによるr/nfl RedditページのHTMLからPDFへの変換出力"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-2.webp" />
<small><strong>動的コンテンツと最新のスタイリングを保持した、フォーマットが良く視覚的に正確なPDF。</strong></small>
</div>
<div class="competitors__card half">
<p class="competitors__header">SyncFusion</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-3.webp"
alt="Syncfusionによるr/nfl RedditページのHTMLからPDFへの変換出力"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-3.webp" />
<small><strong>評価ビルドで変換。メインフィード、投稿コンテンツ、スタイリングは狭い単一カラムレイアウトで通過しましたが、左のナビゲーションと右のコミュニティパネルは削除されました。</strong></small>
</div>
</div>
<div class="competitors-section__wrapper">
<div class="competitors__card half">
<p class="competitors__header">Aspose.PDF</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-4.webp"
alt="Aspose.PDFによるr/nfl RedditページのHTMLからPDFへの変換出力"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-4.webp" />
<small><strong>評価ビルド; HTMLを最初にダウンロードする必要がありました(Aspose.PDFはURLではなくストリームからHTMLをロードします)。出力はほぼ空で、コミュニティロゴ、1つの見出し、いくつかの空のボックスのみでした。</strong></small>
</div>
<div class="competitors__card half">
<p class="competitors__header">Wkhtmltopdf</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-5.webp"
alt="wkhtmltopdfによるr/nfl RedditページのHTMLからPDFへの変換出力"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-5.webp" />
<small><strong>wkhtmltopdfは変換を完了しましたが、結果はページのテキストと画像のみで、レイアウト、スタイリング、動的要素、インタラクティビティはありませんでした。これにより、wkhtmltopdfは現代の動的なWebページには不適です。</strong></small>
</div>
</div>
[{i:(PDFsharpはHTMLレンダリングエンジンを持たず、iTextは別のpdfHTMLアドオンを通じてのみHTMLを変換するため、どちらもこのブラウザレンダリングテストには含まれていません。)}]
### 結論
.NET開発者が現代的で信頼性のあるPDFソリューションを求める場合、IronPDFは強力な選択肢です。ChromiumベースのHTMLからPDFへの変換、使いやすさ、定期的な更新、幅広い機能セットにより、トップの選択肢となります。小規模なプロジェクトでも大規模な企業アプリケーションでも、IronPDFは生産性を向上させ、古いまたはサポートされていないライブラリに関連するリスクを回避します。商業アプリケーション向けに設計されたIronPDFは、プロジェクトを維持されサポートされたライブラリに保ちます。
実際の動的なWebページでのテストでは、IronPDFが最も完全で正確なレンダリングを生成しました。Syncfusionはナビゲーションとコミュニティパネルを削除しました。Aspose.PDFは最初にHTMLをダウンロードする必要があり、それでもページのほとんどをレンダリングしませんでした。wkhtmltopdfはページのスタイリングなしでテキストと画像を生成し、現代のサイトには不適です。
現代のHTMLからPDFへのワークフローにおいて、レンダリングの正確さと小さく読みやすいAPIの組み合わせがIronPDFを際立たせます。
**動的で重いCSS HTMLを簡単にPDFに変換するIronPDFのフル機能スイートを体験してください。今すぐ[無料トライアル](trial-license)でお試しください。**
<hr class="separator" />
## C#でのHTMLからPDFへのチュートリアルビデオを見る
<a name="video"></a>
PDFドキュメントを使用して、[ChromeでPDFをダウンロードする代わりにブラウザで開くように設定する方法](https://support.google.com/chrome/answer/114662)を学ぶために、次のリンクを訪問できます。
!!!--LIBRARY_GET_STARTED_WITH_PRODUCT_TRIAL_EXTENDED_BLOCK--!!!
using IronPdf;// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome enginevar renderer = new ChromePdfRenderer();// Render an HTML string. The result is a PdfDocument held in memoryvar pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");// Write the PDF to diskpdf.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");
ImportsIronPdf' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engineDim renderer = New ChromePdfRenderer()' Render an HTML string. The result is a PdfDocument held in memoryDim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")' Write the PDF to diskpdf.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")
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")
using IronPdf;var renderer = new ChromePdfRenderer();// Render a live web page straight from its URLvar pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");// The PDF is written next to the executablepdf.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");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Render a live web page straight from its URLDim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")' The PDF is written next to the executablepdf.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")
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;
ImportsIronPdfImportsIronPdf.RenderingDim 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.Screenrenderer.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.Print
using IronPdf;var renderer = new ChromePdfRenderer();// Let the page's JavaScript run before the snapshot is takenrenderer.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 takenrenderer.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)
using IronPdf;var renderer = new ChromePdfRenderer();// The chart is drawn by JavaScript, so let it run and give it a moment to finishrenderer.RenderingOptions.EnableJavaScript = true;renderer.RenderingOptions.WaitFor.RenderDelay(500);// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScriptvar 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");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' The chart is drawn by JavaScript, so let it run and give it a moment to finishrenderer.RenderingOptions.EnableJavaScript = Truerenderer.RenderingOptions.WaitFor.RenderDelay(500)' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScriptDim 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")
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 stylesheetrenderer.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;
ImportsIronPdfImportsIronPdf.RenderingDim renderer As New ChromePdfRenderer()' Responsive layouts are designed for a browser viewport, so render the page's' print stylesheet instead of its screen stylesheetrenderer.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.Print
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")
using IronPdf;using IronPdf.Rendering;// Create a PDF from an existing HTML file with rendering options set up frontvar renderer = new ChromePdfRenderer{RenderingOptions = new ChromePdfRenderOptions { // Margins are in millimetersMarginTop = 50,MarginBottom = 50, // Render the page's print stylesheetCssMediaType = PdfCssMediaType.Print, // Plain-text header: the document title, centered, above a divider lineTextHeader = new TextHeaderFooter {CenterText = "{pdf-title}",DrawDividerLine = true,FontSize = 16 }, // Plain-text footer: date and time on the left, page numbers on the rightTextFooter = 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 viewerSystem.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
});
ImportsIronPdfImportsIronPdf.Rendering' Create a PDF from an existing HTML file with rendering options set up frontDim renderer = New ChromePdfRendererWith { .RenderingOptions = New ChromePdfRenderOptionsWith { ' 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 TextHeaderFooterWith { .CenterText = "{pdf-title}", .DrawDividerLine = True, .FontSize = 16 }, ' Plain-text footer: date and time on the left, page numbers on the right .TextFooter = New TextHeaderFooterWith { .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 viewerSystem.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfoWith { .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
})
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 HtmlHeaderFooterWith { .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>"
}
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Render the page's @media print CSS rather than its screen stylesrenderer.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");
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Render the page's @media print CSS rather than its screen stylesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Printrenderer.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;
ImportsIronPdfDim 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 = 50renderer.RenderingOptions.MarginBottom = 50renderer.RenderingOptions.MarginLeft = 20renderer.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 = 20
HTML要素からの背景画像をオンまたはオフにすることもできます:
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");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Include CSS background colors and images in the PDF (set false to drop them)renderer.RenderingOptions.PrintHtmlBackgrounds = TrueDim 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")
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Standard paper sizes and orientationrenderer.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);
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Standard paper sizes and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4renderer.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)
using IronPdf;var renderer = new ChromePdfRenderer();// Insert a value into an HTML template with string.Formatstring 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.FormatDim html AsString = 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")
using IronPdf;var renderer = new ChromePdfRenderer();// A template with a placeholder to replacevar htmlTemplate = "<p>[[NAME]]</p>";var names = new[] { "John", "James", "Jenny" };// One personalized PDF per nameforeach (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");
}
ImportsIronPdfDim renderer = New ChromePdfRenderer()' A template with a placeholder to replaceDim htmlTemplate = "<p>[[NAME]]</p>"Dim names = New String() {"John", "James", "Jenny"}' One personalized PDF per nameFor Each name In names Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name) Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance) pdf.SaveAs(name & ".pdf")Next
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")
Next
using HandlebarsDotNet;// A Handlebars template with two placeholdersvar 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 propertiesvar 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>
ImportsHandlebarsDotNet' A Handlebars template with two placeholdersDim 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 propertiesDim template = Handlebars.Compile(source)Dim data = New With {.title = "My new post", .body = "This is my first post!"}Dim html AsString = 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 HTMLvar 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");
ImportsHandlebarsDotNetImportsIronPdf' Fill the Handlebars template, then render the resulting HTMLDim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")Dim html AsString = 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")
using IronPdf;var renderer = new ChromePdfRenderer();// The document body, rendered from a web pagevar 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");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' The document body, rendered from a web pageDim 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")
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");
ImportsIronPdfImportsIronPdf.EditingDim 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")