Lightning Blog
Blazor記事イメージ画像

【Blazor】 iframeでPDFを表示する

更新日:2024/07/24
この記事では、Blazorで<iframe>を使って、PDFを表示するサンプルを紹介します。 <iframe>を使うことで、PDFの内容を確認したり、印刷したりすることができます。

    目次

  • サンプルコード
  • base64を使って表示
  • まとめ

サンプルコード

セクション画像

以下のサンプルコードになります。


@page "/"
@inject IJSRuntime JSRuntime
@inject IWebHostEnvironment WebHostEnvironment

<PageTitle>Index</PageTitle>

<h1>PDFをiframeを表示する</h1>
@if (pdfUrl != null)
{
    <iframe src="@pdfUrl" width="100%" height="600px"></iframe>
}

@code{
    public string? pdfUrl = $"/download/Test.pdf";
}

<iframe>では、srcにファイルのパスを設定することで、PDFを表示することができます。 そのため、C#側からsrcへテスト用のPDFまでのパス/download/Test.pdfをセットしています。

実際に実行すると、以下のようになります。PDFが表示されることを確認してみてください。

動作確認

base64を使って表示

セクション画像

base64を使って、PDFを表示することもできます。 base64については、以下記事に読むと理解が深まると思います。

base64ってなんぞ??理解のために実装してみた

以下base64を使ったサンプルコードになります。


@page "/"
@inject IJSRuntime JSRuntime
@inject IWebHostEnvironment WebHostEnvironment

<PageTitle>Index</PageTitle>

<h1>PDFをiframeを表示する</h1>
@if (pdfUrl != null)
{
    <iframe src="@pdfUrl" width="100%" height="600px"></iframe>
}

@code{
    public string? pdfUrl = $"/download/Test.pdf";
}

wwwroot/download/Test.pdfからbyte配列で読み込んだ後、Convert.ToBase64Stringでbase64へ変換しています。

今回はファイルを読み込んでbase64をセットしていますが、あらかじめ変換したbase64を静的ファイルとして組み込んでおけば、 ファイル読み込む処理を省くこともできます。


まとめ

セクション画像

今回は、iframeを使ってPDFを表示する方法について解説しました。

PDFの内容を確認したり、印刷したりすることができるので、簡単な帳票アプリなら利用できるかもしれません。 使う機会があれば、使ってみてください。


ブログ内の記事で書かれているサンプルコードは、GitHubから確認する事ができます。 是非参考にしてみてください。

この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?

合わせて読みたい

カード画像
タイマーを使ったコンポーネント

Blazorの記事では、System.Timers.Timerクラスを使用して、1秒ごとに色が変わるカラーボックスを作成する方法を解説します。このタイマーは、定期的なイベント処理に有用で、リアルタイムのデータ更新やバックグラウンド処理に適しています。Blazorアプリでタイマー機能を実装したい場合に役立つ内容です。

更新日:2024/06/05

カード画像
カレンダー(DatePicker)から値を取得する

Blazorで<input type="date">を使いカレンダー(DatePicker)から日付を取得する方法を解説。サンプルコード、日付範囲設定を紹介。

更新日:2024/06/25

An error has occurred. This application may no longer respond until reloaded. Reload 🗙