BlazorでIronPDFを使用したPDF生成方法 | IronPDF

IronPDF Blazorサーバーチュートリアル:C#でHTMLをPDFにレンダリングする

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPdfは.NET 6をサポートし、Blazorコンポーネントから直接PDF生成機能を提供し、最小限のセットアップでC#を使用したBlazor ServerアプリケーションのHTMLからPDFへの変換を可能にします。

クイックスタート: Blazor Server で PDF をレンダリングする

Blazor ServerアプリケーションでIronPDFを使い始めましょう。 この例では、HTMLコンテンツをPDFにレンダリングする方法を示します。 数行のコードでBlazorコンポーネントをPDFに変換します。

  1. IronPDF をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPdf
  2. このコード スニペットをコピーして実行します。

    IronPdf.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath);
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル

    arrow pointer

新しい Blazor Server プロジェクトを作成するには?

新しいプロジェクトを作成し、Blazorサーバーアプリのタイプを選択します。Visual Studioは、PDF生成に.NETを使用できるサーバーサイドBlazorアプリケーションを構築するためのテンプレートを提供します。 Blazor Serverホスティングモデルは、アプリケーションロジックをサーバー上で実行するため、サーバーサイド処理を必要とするPDF生成シナリオに適しています。

Blazor Server Appとその他のBlazorプロジェクトテンプレートを説明とともに表示するVisual Studioのプロジェクト作成ダイアログ

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を提供します。

  1. Visual Studio のソリューション エクスプローラー ウィンドウで、References を右クリックし、Manage NuGet Packages を選択します。
  2. [参照] を選択し、IronPdf を検索します。
  3. パッケージの最新バージョンを選択し、プロジェクトのチェックボックスを確認してインストールをクリックします。

または、.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生成機能を簡単に作成することができます。

Razor Componentが選択され、IronPdfComponentがファイル名として入力されたVisual StudioのAdd New Itemダイアログ

その後、コードを以下のように更新します:

@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>
HTML
@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>";
    }
}
$vbLabelText   $csharpLabel

このコンポーネントは、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>
JAVASCRIPT

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>
HTML

これがすべて適用されたら、ソリューションを実行し、このように表示されるはずです:

IronPDFコンポーネントを使用したBlazorアプリ、メインコンテンツエリアにHTML入力テキストエリアとHTMLレンダリングボタンを表示

なぜ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);
    });
$vbLabelText   $csharpLabel

非常に大きなドキュメントの場合、最初にサーバーストレージに保存し、直接ストリーミングする代わりにダウンロードリンクを提供することを検討してください。

ストリーム参照と直接ダウンロードはいつ使い分けるべきですか?

すぐにダウンロードする必要がある 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ドキュメントを表示。

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 17,803,474 | バージョン: 2026.3 リリース
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPdf
サンプルを実行するHTML が PDF に変換されるのを確認します。