IronPDF Blazorサーバーチュートリアル:C#でHTMLをPDF 変換・レンダリングする方法
IronPdfは.NET 6をサポートし、Blazorコンポーネントから直接PDF生成機能を提供し、最小限のセットアップでC#を使用したBlazor ServerアプリケーションのHTMLからPDFへの変換を可能にします。
クイックスタート: Blazor Server で PDF をレンダリングする
Blazor ServerアプリケーションでIronPDFを使い始めましょう。 この例では、HTMLコンテンツをPDFにレンダリングする方法を示します。 数行のコードでBlazorコンポーネントをPDFに変換します。
最小限のワークフロー(5ステップ)
- Blazorアプリケーション用HTML-to-PDFライブラリをインストールする。
- Visual Studioで新しいBlazorプロジェクトを作成してください。
- URLからウェブページをPDFドキュメントに変換する
- クライアントのウェブブラウザにウェブページをレンダリングする
- HTML文字列からPDFドキュメントを表示する
新しい Blazor Server プロジェクトを作成するには?
新しいプロジェクトを作成し、Blazorサーバーアプリのタイプを選択します。Visual Studioは、PDF生成に.NETを使用できるサーバーサイドBlazorアプリケーションを構築するためのテンプレートを提供します。 Blazor Serverホスティングモデルは、アプリケーションロジックをサーバー上で実行するため、サーバーサイド処理を必要とするPDF生成シナリオに適しています。
Blazorサーバーアプリの前提条件は何ですか?
IronPdfでBlazorサーバーアプリケーションを作成する前に、Visual Studio 2022以降がASP.NETとウェブ開発ワークロードと共にインストールされていることを確認してください。 .NET 6 SDK以上が必要です。 Blazor Serverアプリはサーバーへの常時接続を必要とするため、複雑なHTMLコンテンツからPDFを生成する必要がある場合や、サーバーに残すべき機密データを扱う場合に適しています。
ど for .NETバージョンを使うべきですか?
Blazor ServerアプリケーションでのIronPDFの互換性とパフォーマンスのために、.NET 6以上を使用してください。 IronPDF は .NET Core 3.1, .NET 5, .NET 6, .NET 7, .NET 8 と互換性があります。最新のLTSバージョン(.NET 6または.NET 8)は安定性と長期サポートを提供します。 Azureにデプロイする場合は、Azure App Serviceプランが選択した.NETバージョンをサポートしていることを確認してください。
プロジェクトの設定はどのようにすればよいですか?
Blazor Serverプロジェクトを設定する際、クライアントとサーバー間の安全な通信を確保するため、"Configure for HTTPS "を選択してください。 DockerでIronPDFを実行する予定がない限り、"Enable Docker "のチェックは外したままにしてください。 認証については、最初は"なし"を選択してください。 プロジェクト名はC#の命名規則に従い、スペースや特殊文字は避けてください。
BlazorプロジェクトにIronPDFをインストールするには?
プロジェクトを作成した後、以下の手順に従ってIronPDF library from NuGetをVisual Studioにインストールしてください。 IronPDFはHTML文字列、URL、既存のPDFドキュメントからPDFを作成するためのAPIを提供します。
- Visual Studio のソリューション エクスプローラー ウィンドウで、
Referencesを右クリックし、Manage NuGet Packagesを選択します。 - [参照] を選択し、
IronPdfを検索します。 - パッケージの最新バージョンを選択し、プロジェクトのチェックボックスを確認してインストールをクリックします。
または、.NET CLIを使用してインストールできます:
Install-Package IronPdf
特定のプラットフォームをターゲットとするプロジェクトでは、プラットフォーム固有のパッケージが必要になる場合があります。 たとえば、Linuxにデプロイする場合は、Linuxインストールガイドを確認してください。
なぜ CLI よりも NuGet Package Manager を選ぶのですか?
Visual StudioのNuGet Package Manager GUIは、パッケージバージョンの参照、依存関係の表示、複数のプロジェクトの同時管理を容易にするビジュアルインターフェイスを提供します。 IronPDFを初めて使う開発者が、利用可能なパッケージとその説明を調べるのに役立ちます。 CLIアプローチは、経験豊富な開発者にとってより速く、自動化されたビルドパイプラインやDockerコンテナで作業する場合に適しています。
どのバージョンのIronPDFをインストールすべきですか?
IronPDFの最新安定版をインストールすることで、新機能、パフォーマンス向上、セキュリティアップデートにアクセスできます。 最近のアップデートの詳細については、更新履歴を確認してください。 既存のプロジェクトで作業している場合は、他の依存関係とのバージョンの互換性を確認してください。 本番環境では、メジャーバージョンをアップグレードする前に十分にテストしてください。
インストールが成功したことを確認するにはどうすればよいですか?
インストール後、ソリューションエクスプローラーの "Packages "フォルダを確認し、IronPDFが正しくインストールされていることを確認してください。 プロジェクトの依存関係に "IronPdf "がリストされているはずです。 C# ファイルに using IronPdf; を追加します - IntelliSense は名前空間を認識するはずです。 また、HTMLから基本的なPDFを作成して簡単なテストを実行し、すべてが正しく動作することを確認することもできます。
PDF生成用の新しいRazorコンポーネントを追加するには?
IronPdfをBlazorプロジェクトにインストールしたら、新しいRazorコンポーネントを追加してください。 このチュートリアルでは "IronPdfComponent "と名付けてください。 このコンポーネントは、ユーザー入力を処理し、HTMLコンテンツに基づいて動的にPDFを生成します。 Blazorのコンポーネントアーキテクチャにより、アプリケーション全体で共有できる再利用可能なPDF生成機能を簡単に作成することができます。
その後、コードを以下のように更新します:
@page "/IronPdf"
@inject IJSRuntime JS
<h3>IronPdfComponent</h3>
<EditForm Model="@_InputMsgModel" id="inputText">
<div>
<InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
</div>
<div>
<button type="button" @onclick="@SubmitHTML">Render HTML</button>
</div>
</EditForm>
@page "/IronPdf"
@inject IJSRuntime JS
<h3>IronPdfComponent</h3>
<EditForm Model="@_InputMsgModel" id="inputText">
<div>
<InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
</div>
<div>
<button type="button" @onclick="@SubmitHTML">Render HTML</button>
</div>
</EditForm>
@code {
// Model to bind user input
private InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Create a renderer to convert HTML to PDF
var render = new IronPdf.ChromePdfRenderer();
// Configure rendering options for better output
render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
render.RenderingOptions.MarginTop = 40;
render.RenderingOptions.MarginBottom = 40;
// Render the HTML input into a PDF document
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
// Create a stream reference for the PDF content
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
// Invoke JavaScript function to download the PDF in the browser
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = @"<h1>Welcome to IronPDF</h1>
<p>This is a sample PDF generated from HTML content in Blazor Server.</p>
<ul>
<li>Easy to use API</li>
<li>High-quality rendering</li>
<li>Full HTML5 and CSS3 support</li>
</ul>";
}
}
@code {
// Model to bind user input
private InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Create a renderer to convert HTML to PDF
var render = new IronPdf.ChromePdfRenderer();
// Configure rendering options for better output
render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
render.RenderingOptions.MarginTop = 40;
render.RenderingOptions.MarginBottom = 40;
// Render the HTML input into a PDF document
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
// Create a stream reference for the PDF content
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
// Invoke JavaScript function to download the PDF in the browser
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = @"<h1>Welcome to IronPDF</h1>
<p>This is a sample PDF generated from HTML content in Blazor Server.</p>
<ul>
<li>Easy to use API</li>
<li>High-quality rendering</li>
<li>Full HTML5 and CSS3 support</li>
</ul>";
}
}
Imports System.Threading.Tasks
Imports Microsoft.JSInterop
Imports IronPdf
@Code
' Model to bind user input
Private _InputMsgModel As New InputHTMLModel()
Private Async Function SubmitHTML() As Task
' Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
' Create a renderer to convert HTML to PDF
Dim render = New IronPdf.ChromePdfRenderer()
' Configure rendering options for better output
render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
render.RenderingOptions.MarginTop = 40
render.RenderingOptions.MarginBottom = 40
' Render the HTML input into a PDF document
Dim doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML)
Dim fileName = "iron.pdf"
' Create a stream reference for the PDF content
Using streamRef = New DotNetStreamReference(stream:=doc.Stream)
' Invoke JavaScript function to download the PDF in the browser
Await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef)
End Using
End Function
Public Class InputHTMLModel
Public Property HTML As String = "<h1>Welcome to IronPDF</h1>
<p>This is a sample PDF generated from HTML content in Blazor Server.</p>
<ul>
<li>Easy to use API</li>
<li>High-quality rendering</li>
<li>Full HTML5 and CSS3 support</li>
</ul>"
End Class
このコンポーネントは、PDF生成にChromePdfRendererクラスを使用します。 カスタム用紙サイズ、余白、ヘッダー/フッターなど、さまざまなオプションでレンダリングをカスタマイズできます。
BlazorアプリケーションでIronPDFによってレンダリングされた PDF のダウンロードを許可するには、次 for JavaScriptコードを _layout.cshtml に追加します。
<script>
// JavaScript function to download PDFs generated by IronPdf
window.SubmitHTML = async (fileName, contentStreamReference) => {
// Get the PDF content as an ArrayBuffer
const arrayBuffer = await contentStreamReference.arrayBuffer();
// Create a Blob from the ArrayBuffer
const blob = new Blob([arrayBuffer]);
// Create an object URL for the Blob
const url = URL.createObjectURL(blob);
// Create an anchor element to initiate the download
const anchorElement = document.createElement("a");
anchorElement.href = url;
anchorElement.download = fileName ?? "download.pdf";
// Programmatically click the anchor to start the download
anchorElement.click();
// Clean up by removing the anchor and revoking the object URL
anchorElement.remove();
URL.revokeObjectURL(url);
};
</script>
<script>
// JavaScript function to download PDFs generated by IronPdf
window.SubmitHTML = async (fileName, contentStreamReference) => {
// Get the PDF content as an ArrayBuffer
const arrayBuffer = await contentStreamReference.arrayBuffer();
// Create a Blob from the ArrayBuffer
const blob = new Blob([arrayBuffer]);
// Create an object URL for the Blob
const url = URL.createObjectURL(blob);
// Create an anchor element to initiate the download
const anchorElement = document.createElement("a");
anchorElement.href = url;
anchorElement.download = fileName ?? "download.pdf";
// Programmatically click the anchor to start the download
anchorElement.click();
// Clean up by removing the anchor and revoking the object URL
anchorElement.remove();
URL.revokeObjectURL(url);
};
</script>
Shared フォルダー内の NavMenu.razor ファイルを編集して、新しいRazorコンポーネントへのナビゲーション タブを追加します。 以下のコードを追加してください:
<div class="nav-item px-3">
<NavLink class="nav-link" href="IronPdf">
<span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="IronPdf">
<span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
</NavLink>
</div>
これがすべて適用されたら、ソリューションを実行し、このように表示されるはずです:
なぜBlazorでPDFダウンロードにJavaScriptを使うのですか?
Blazor Server は SignalR 接続で動作し、すべての C# コードはサーバー上で実行されます。 ファイルダウンロードのようなブラウザ固有のアクションをトリガーするには、JavaScriptの相互運用が必要です。 DotNetStreamReference クラスは、PDF 全体を一度にメモリにロードせずに、バイナリ データをサーバーからクライアントに転送します。 このアプローチは、base64エンコーディングよりも効率的で、大きなPDFにも有効です。 別のアプローチとしては、PDFをメモリストリームにエクスポートするを検討してください。
PDFダウンロードを実装する際によくある問題とは
一般的な課題としては、SignalR接続がタイムアウトする可能性のある大容量ファイルの処理、並行するPDF生成リクエストの管理、リソースの適切な廃棄などがあります。 メモリリークを避けるため、PDF文書とストリームは常に適切に破棄してください。 より良いパフォーマンスのために、asyncPDF生成の実装を検討してください。 レンダリングの問題が発生した場合は、レンダリング オプション ドキュメントで設定のヒントを確認してください。
大きなPDFファイルをどのように扱えばよいですか?
大きなPDFの場合は、進捗インジケータとチャンクダウンロードの実装を検討してください。 圧縮技術を使ってPDFサイズを最適化することができます。 Blazor サーバー設定で適切なタイムアウトを設定してください:
services.AddServerSideBlazor()
.AddHubOptions(options =>
{
options.MaximumReceiveMessageSize = 10 * 1024 * 1024; // 10MB
options.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
});
services.AddServerSideBlazor()
.AddHubOptions(options =>
{
options.MaximumReceiveMessageSize = 10 * 1024 * 1024; // 10MB
options.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
});
非常に大きなドキュメントの場合、最初にサーバーストレージに保存し、直接ストリーミングする代わりにダウンロードリンクを提供することを検討してください。
ストリーム参照と直接ダウンロードはいつ使い分けるべきですか?
すぐにダウンロードする必要がある 50 MB 未満の PDF には、DotNetStreamReference を使用します。 ファイルサイズが大きい場合や、PDFをディスクに保存する必要がある場合は、サーバー上でPDFを生成し、ダウンロードリンクを提供することを検討してください。 レポートや請求書は直接ダウンロードするのが効果的ですが、バッチ処理や複数のPDFをマージするにはサーバーサイドのストレージが有効です。 アプローチを選択する際には、アプリケーションのメモリ制約とユーザーエクスペリエンスの要件を考慮してください。
よくある質問
PDF 生成用の Blazor Server プロジェクトを新規作成するには?
IronPDFでBlazor Serverプロジェクトを作成するには、Visual Studioでプロジェクトの種類として'Blazor Server App'を選択します。Blazor Serverホスティングモデルはサーバー上でアプリケーションロジックを実行するため、IronPDFでサーバーサイド処理を必要とするPDF生成シナリオに最適です。
Blazor ServerアプリをPDF生成で使用するための前提条件は何ですか?
ASP.NETおよびWeb開発ワークロードを搭載したVisual Studio 2022以降と、.NET 6 SDK以降が必要です。Blazor Serverアプリは常時サーバー接続を必要とするため、IronPDFを使用して複雑なHTMLコンテンツからPDFを生成する場合や、サーバーに残すべき機密データを扱う場合に適しています。
BlazorでのPDF生成には、ど for .NETバージョンを使うべきですか?
Blazor ServerアプリケーションでIronPDFの互換性とパフォーマンスを最適化するには、.NET 6以上を使用してください。IronPDFは.NET Core 3.1, .NET 5, .NET 6, .NET 7, .NET 8をサポートしています。最新のLTSバージョン(.NET 6または.NET 8)は安定性と長期サポートを提供します。
Blazor PDFアプリケーションのプロジェクト設定はどのように行うのですか?
IronPDF用にBlazor Serverプロジェクトを設定する際、安全な通信のために'Configure for HTTPS'を選択してください。DockerコンテナでIronPDFを実行する予定がない限り、'Enable Docker'のチェックは外したままにしてください。認証は'None'から始めてください。スペースや特殊文字を使用せず、適切なC#命名規則を使用してください。
Blazor ServerでHTMLからPDFを素早く生成するには?
IronPDFはBlazor ServerでHTMLをPDFに変換するシンプルなワンラインソリューションを提供します:IronPDF.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath).これにより、最小限のコードでBlazorコンポーネントをPDFに変換することができます。
Blazor で PDF 生成を実装するための最小限のワークフローを教えてください。
最小限のワークフローは5つのステップで構成されています:1) HTML-to-PDFライブラリIronPDFをインストール、2) Visual Studioで新しいBlazorプロジェクトを作成、3) URLによるウェブページをIronPDFを使ってPDFドキュメントに変換、4) ウェブページをクライアントのウェブブラウザにレンダリング、5) HTML文字列から生成されたPDFドキュメントを表示。

