IRONSOFTWAREHOME
IRONPDFの使用

ASP.NET Core: IronPDFでPDFを即時生成

Curtis Chau
Curtis Chau
Updated: 2026年9月4日

Windows フォーム アプリケーション内で PDF ページを表示することは、ドキュメント管理ツール、レポート ビューアー、およびファイル プレビュー ユーティリティの一般的な要件です。 そのPictureBoxコントロールはすでにフォーム内での画像レンダリングを処理しているため、自然な候補です。 問題は、PDF ファイルが画像ではないことです。標準的な画像コントロールで表示するには、特殊なレンダリングが必要です。 このガイドは、IronPDFを使用してPDFページをビットマップ画像に変換し、PictureBoxコントロール内で表示する方法を解説します。ページナビゲーション、印刷、保存のサポートも含まれています。

最初のステップ:
arrow pointer

なぜ PictureBox は PDF ファイルを直接表示できないのですか?

PictureBoxコントロールは、Windows FormsでBMP、PNG、JPG、GIF、TIFF、その他いくつかの画像フォーマット専用に設計されています。 PDFファイルパスをPictureBox.ImageLocationに割り当てたり、PDFストリームをPictureBox.Imageにロードしようとすると、PDFバイナリーフォーマットが認識されていない画像フォーマットであるため、コントロールは例外をスローします。

いくつかのアプローチでは、COM相互運用機能を介してAdobe Acrobatを埋め込むことでこの問題を回避しようと試みます。しかし、これはアプリケーションを実行するすべてのマシンにAdobe Readerがインストールされているという強い依存関係を生み出し、エンタープライズ環境では管理が困難な展開上の制約となります。 また、レンダリング エンジンはユーザーが使用している Acrobat のバージョンにロックされるため、異なるマシン間で互換性の問題が発生する可能性があります。

よりクリーンなアプローチは、実行時にPDFページをビットマップ画像に変換する.NET PDFライブラリを使用することです。IronPDFは、そのToBitmapメソッドを通じてまさにこの能力を提供し、PDF文書の各ページをAnyBitmapオブジェクトにレンダリングします。 その後、そのオブジェクトを標準のSystem.Drawing.Bitmapに変換し、PictureBox.Imageに直接割り当てることができます。 Adobe のインストールは不要、COM の登録も不要、アプリケーション ウィンドウに埋め込まれた外部ビューアも不要です。

この手法は、 .NET Framework 4.6.2 以上、および Windows 上の .NET 6、8、10 で機能します。 IronPDF内のレンダリング エンジンは Chrome ベースであるため、複雑なレイアウト、埋め込みフォント、画像とテキストの混在コンテンツを含む PDF でも忠実度の高い出力を生成します。

Windows フォーム プロジェクトにIronPDFをインストールするにはどうすればよいでしょうか?

コードを記述する前に、プロジェクトにIronPDFを追加する必要があります。 最も速い方法は、 NuGetパッケージ マネージャー CLI を使用することです。

> dotnet add package IronPdf

あるいは、Visual Studio パッケージ マネージャー コンソールを使用します。

PM > Install-Package IronPdf

インストール後、パッケージ参照が.csprojファイルに表示されることを確認します。IronPDFは.NET 6以降のWindowsを対象にしているので、プロジェクトファイルでクロスプラットフォームターゲットを使用している場合は、Windows用の<RuntimeIdentifiers>または<Platforms>の制限を追加してください。 Windows フォーム プロジェクトの場合、これは通常、Visual Studio でプロジェクト テンプレートを作成するときに既に構成されています。

運用環境でのライセンスの場合は、 IronPDF の呼び出しの前に、アプリケーションの起動コードにライセンス キーを配置します。

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

開発および評価中、 IronPDF は試用モードで実行され、レンダリングされた出力に透かしが追加されます。 無料試用ライセンスでは、テスト目的で透かしが削除されます。

Windows フォーム プロジェクト構造をどのように設定しますか?

Visual Studioを開き、.NET 10をターゲットとした新しいWindows Formsアプリプロジェクトを作成します。プロジェクトテンプレートはForm1.csとProgram.csエントリーポイントを生成します。

デザイナー画面で、次のコントロールをフォームに追加します。

  • フォームの大部分をカバーするpictureBoxPdfという名前のPictureBox。SizeModeはZoomに設定します
  • "Open PDF"というテキストのbtnOpenという名前のButton
  • "Previous"というテキストのbtnPreviousという名前のButton
  • "Next"というテキストのbtnNextという名前のButton
  • "Save Page"というテキストのbtnSaveという名前のButton
  • "Print"というテキストのbtnPrintという名前のButton
  • 現在のページ番号を表示するためのlblPageInfoという名前のLabel

PictureBoxのSizeMode = Zoom設定は、PDFページがアスペクト比を歪めずにコントロールに適合するようにスケーリングされることを保証します。 これは、PDF ページのサイズがさまざまであるため重要です。レター、A4、リーガル形式はすべて寸法が異なり、ビューアでこれらすべてを適切に処理する必要があります。

以下は、PDF ビューア アプリケーションの完全なフォーム コードです。 これはProgram.csでトップレベルステートメントを使用し、完全なビューロジックをForm1.cs内に配置します。

using IronPdf;
using IronSoftware.Drawing;
using System.Drawing;

public partial class Form1 : Form
{
    private PdfDocument? currentPdf;
    private AnyBitmap[]? pageImages;
    private int currentPageIndex = 0;

    public Form1()
    {
        InitializeComponent();
        pictureBoxPdf.SizeMode = PictureBoxSizeMode.Zoom;
        UpdateNavigationState();
    }

    private void UpdateNavigationState()
    {
        bool hasPdf = pageImages != null && pageImages.Length > 0;
        btnPrevious.Enabled = hasPdf && currentPageIndex > 0;
        btnNext.Enabled = hasPdf && currentPageIndex < (pageImages?.Length - 1 ?? 0);
        btnSave.Enabled = hasPdf;
        btnPrint.Enabled = hasPdf;
        lblPageInfo.Text = hasPdf
            ? $"Page {currentPageIndex + 1} of {pageImages!.Length}"
            : "No document loaded";
    }
}

UpdateNavigationStateヘルパーメソッドは、PDFがロードされているかどうかと現在ビューアーが表示しているページに基づいて、ナビゲーションとアクションボタンを無効または有効にします。 これにより、ユーザーがドキュメントを読み込む前にボタンをクリックしたときに null 参照エラーが発生するのを防ぎます。

VB .NET Display PDF in PictureBox: Render PDF Pages as Images in Windows Forms: Image 1 - Install IronPDF

PDF ページを PictureBox に読み込んでレンダリングするにはどうすればよいでしょうか?

PDFをロードしてPictureBoxにレンダリングするには、ドキュメントをPdfDocument.FromFileでロードし、その後ToBitmapを呼び出してすべてのページをビットマップオブジェクトの配列に変換する2つのステップが含まれます。

PDF to image conversionメソッドToBitmapは、要求されたDPIでPDFのすべてのページをレンダリングします。 DPI を高くすると画像は鮮明になりますが、メモリの消費量も多くなります。 通常、150 DPI の値はドキュメント ビューアーにとって適切なバランスであり、大きなドキュメントをギガバイト単位の RAM を必要とせずに画面上で読み取ることができます。

private void btnOpen_Click(object sender, EventArgs e)
{
    using OpenFileDialog openDialog = new OpenFileDialog();
    openDialog.Filter = "PDF Files|*.pdf";
    openDialog.Title = "Select a PDF Document";

    if (openDialog.ShowDialog() == DialogResult.OK)
    {
        LoadPdfDocument(openDialog.FileName);
    }
}

private void LoadPdfDocument(string filePath)
{
    currentPdf?.Dispose();
    currentPdf = PdfDocument.FromFile(filePath);

    // Render all pages as bitmaps at 150 DPI
    pageImages = currentPdf.ToBitmap(150);
    currentPageIndex = 0;

    DisplayCurrentPage();
    UpdateNavigationState();
}

private void DisplayCurrentPage()
{
    if (pageImages == null || pageImages.Length == 0) return;

    // Convert AnyBitmap to System.Drawing.Bitmap for PictureBox
    System.Drawing.Bitmap bitmap = pageImages[currentPageIndex].ToImage<System.Drawing.Bitmap>();
    pictureBoxPdf.Image?.Dispose();
    pictureBoxPdf.Image = bitmap;

    UpdateNavigationState();
}

PdfDocument.FromFileメソッドはPDFをディスクからメモリにロードします。 ToBitmapをDPIパラメータと共に呼び出すと、ページごとに1つのAnyBitmapオブジェクトの配列を返します。 AnyBitmap型は、IronPDFのフォーマットに依存しないビットマップクラスで、ToImage<System.Drawing.Bitmap>()はそれをPictureBox.Imageが期待するSystem.Drawing.Bitmap型に変換します。

前のPictureBox.Imageが新しいものに割り当てられる前に破棄されることに注意してください。 これは重要です--それぞれのBitmapオブジェクトは、アンマネージドのGDI+リソースを保持しており、古いビットマップを破棄しないと、長時間動作しているアプリケーションでメモリリークが発生します。

VB .NET Display PDF in PictureBox: Render PDF Pages as Images in Windows Forms: Image 2 - Example blank windows form ready for use

読み込まれると、ビューアはすぐに最初のページを表示します。 lblPageInfoラベルは、現在のページ番号と総ページ数を表示するように更新されます。

VB .NET Display PDF in PictureBox: Render PDF Pages as Images in Windows Forms: Image 3 - Example input PDF displayed in our viewer

PDF ページ間にページナビゲーションを追加するにはどうすればよいですか?

最初のページのみを表示する PDF ビューアは、複数ページのドキュメントには役立ちません。 ナビゲーション ボタンを使用すると、ユーザーはレンダリングされたページ配列内を前後に移動できます。

private void btnPrevious_Click(object sender, EventArgs e)
{
    if (currentPageIndex > 0)
    {
        currentPageIndex--;
        DisplayCurrentPage();
    }
}

private void btnNext_Click(object sender, EventArgs e)
{
    if (pageImages != null && currentPageIndex < pageImages.Length - 1)
    {
        currentPageIndex++;
        DisplayCurrentPage();
    }
}

各クリックハンドラは、currentPageIndexを1調整し、DisplayCurrentPageを呼び出し、それが対応するビットマップにPictureBox.Imageを切り替えます。currentPageIndex > 0とcurrentPageIndex < pageImages.Length - 1の境界チェックは、インデックスアウトオブバウンズ例外を防ぎますが、UpdateNavigationStateも範囲外になるとボタンを無効にします。

大きなドキュメントの場合、特定のページ番号を入力してそのページに直接ジャンプできるページ番号入力フィールドや、横にあるスクロール可能なサムネイルストリップを追加することも検討してください。pageImages配列にはすでにすべてのレンダリングされたページが含まれているので、任意のページにジャンプするのは、currentPageIndexを目標インデックスに設定してDisplayCurrentPageを呼び出すだけの問題です。

VB .NET Display PDF in PictureBox: Render PDF Pages as Images in Windows Forms: Image 4 - Navigating to page 2 with our buttons

ビューアから PDF ページを保存および印刷するにはどうすればよいですか?

ドキュメント ビューアは通常、現在のページを画像ファイルとして保存することと、ドキュメントをプリンターに送信することの両方をサポートする必要があります。 IronPDF を使用すると、どちらも簡単になります。

現在のページを画像ファイルとして保存する

現在のページは既にPictureBox.Image内でSystem.Drawing.Bitmapとして利用可能です。 ユーザーが選択するファイル拡張子から推論されるフォーマットで、それをImage.Saveを使って保存してください。

private void btnSave_Click(object sender, EventArgs e)
{
    if (pictureBoxPdf.Image == null) return;

    using SaveFileDialog saveDialog = new SaveFileDialog();
    saveDialog.Filter = "PNG Image|*.png|JPEG Image|*.jpg|TIFF Image|*.tif";
    saveDialog.Title = "Save Page As Image";
    saveDialog.FileName = $"page_{currentPageIndex + 1}";

    if (saveDialog.ShowDialog() == DialogResult.OK)
    {
        pictureBoxPdf.Image.Save(saveDialog.FileName);
    }
}

PDF文書の印刷

印刷するには、IronPDF のPrint メソッドを使用します。このメソッドは、レンダリングされた画像ではなく、実際の PDF コンテンツを Windows 印刷インフラストラクチャに直接 PDF を送信します。 これにより、プリンタ ドライバがラスタライズされた画像ではなくベクター PDF 命令を受信するため、ビットマップを印刷するよりもはるかに鮮明な出力が生成されます。

private void btnPrint_Click(object sender, EventArgs e)
{
    if (currentPdf == null) return;

    using PrintDialog printDialog = new PrintDialog();
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        currentPdf.Print();
    }
}

PrintDialogは、印刷が始まる前にターゲットプリンタを選択し、設定を構成することができます。 実際の印刷ジョブは、Windows 印刷スプーラーと統合された IronPDF の内部レンダリング エンジンによって処理されます。

VB .NET Display PDF in PictureBox: Render PDF Pages as Images in Windows Forms: Image 5 - Example of print button working

メモリと廃棄を正しく処理するにはどうすればよいでしょうか?

PDF ドキュメントとレンダリングされたビットマップは、特に DPI 設定が高い場合やドキュメントが大きい場合に、大量のメモリを消費します。 適切に破棄しないと、長時間実行されるビューア アプリケーションは使用可能なメモリを徐々に使い果たしてしまいます。

廃棄チェックリスト

このパターンで正しく廃棄するための重要なポイントは次のとおりです。

  • 新しいドキュメントをロードする前にcurrentPdf?.Dispose()を呼び出してください。 PdfDocumentはIDisposableを実装しており、アンマネージドリソースを保持しています。
  • 新しいビットマップをPictureBox.Imageに割り当てる前にpictureBoxPdf.Image?.Dispose()を呼び出します。 レンダリングされた各ページは、個別のアンマネージ GDI+ オブジェクトです。
  • pageImages配列にはAnyBitmapオブジェクトが含まれています。 ページを移動し、古いビットマップが不要になったとき、PictureBox.Imageに対するDisposeの呼び出しはSystem.Drawing.Bitmapのコピーを処理しますが、新しいドキュメントを読み込むときに配列内のAnyBitmapオブジェクトを破棄することも考えてもよいでしょう。

フォームが閉じたときにクリーンアップするには、Form1.Disposeをオーバーライドします。

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        currentPdf?.Dispose();
        pictureBoxPdf.Image?.Dispose();

        if (pageImages != null)
        {
            foreach (var bitmap in pageImages)
                bitmap.Dispose();
        }

        components?.Dispose();
    }
    base.Dispose(disposing);
}

このパターンにより、フォームが閉じられたときにすべてのIronPDFおよび GDI+ リソースが解放され、実稼働環境でのメモリ リークが防止されます。

すべてのページではなく、表示されているページのみをレンダリングするにはどうすればよいですか?

数十ページまたは数百ページの大きなPDFの場合、ToBitmapを使って事前にすべてのページをレンダリングするのは遅く、メモリを多く消費します。より効率的なアプローチは、ユーザーが表示したいページだけをオンデマンドでレンダリングすることです。

IronPDFのRasterizeToImageFilesアプローチはページごとのレンダリングをサポートしていますが、メモリ内使用のためにはPageCountを使い、一度に1ページずつレンダリングすることもできます。

private void DisplayPageLazy(int pageIndex)
{
    if (currentPdf == null) return;

    // Render only the requested page
    AnyBitmap[] singlePage = currentPdf.ToBitmap(150, pageIndex, pageIndex);

    System.Drawing.Bitmap bitmap = singlePage[0].ToImage<System.Drawing.Bitmap>();
    pictureBoxPdf.Image?.Dispose();
    pictureBoxPdf.Image = bitmap;

    singlePage[0].Dispose();

    lblPageInfo.Text = $"Page {pageIndex + 1} of {currentPdf.PageCount}";
    UpdateNavigationState();
}

ToBitmap(dpi, startPage, endPage)オーバーロードは、特定のページ範囲をレンダリングします。 startPageとendPageの両方に同じインデックスを渡すことにより、一度に1ページだけがレンダリングされます。これは、非常に大きなドキュメントに対してピークメモリ使用量を低く抑えるために、ナビゲーションごとのレンダリング時間を交換することができます。

IronPDF の画像出力機能の詳細については、 PDF から画像へのドキュメントとPDF ラスタライズ ガイドを参照してください。

実用的な PDF ビューアでは、ユーザーがコンテンツを拡大したり、ページを回転したりすることも可能である必要があります。 ズーム用に、ToBitmapに渡されるDPIを動的に調整してください -- currentDpiフィールドを(150で開始)保存し、ズームボタンクリック時に50ずつ加減して、その後、更新されたDPIで遅延ページレンダラーを呼び出します。 高DPIは大きな画像を生成し、ZoomモードのPictureBoxがコントロールに合わせてスケールします。 72から400 DPIの範囲を保持し、Math.MinとMath.Maxを使用して、低DPIでぼやけた出力や高DPIでの過度なメモリ消費を避けてください。

画像のレンダリングと同時に PDF からテキストを抽出するなど、より高度なレンダリング オプションについては、 PDF テキスト抽出ガイドとPDF 画像抽出ドキュメントを参照してください。

IronPDFのより高度なビューアでは、 PDF文書の結合、透かしの追加、 PDFページの回転、注釈の追加といった機能も利用できます。

Windows フォーム用の PDF レンダリング ライブラリをどのように選択すればよいでしょうか?

Windowsフォーム用のPDFレンダリングライブラリを選択する際には、いくつかの選択肢があります。以下に、選択肢を評価するのに役立つ簡単な比較を示します。

Windows フォーム アプリケーション用の PDF レンダリング オプション
オプション外部依存.NETサポート商用ライセンス画像出力
IronPDFなし(自己完結型).NET 4.6.2 -- .NET 10はい(試用版あり)設定可能なDPIで高忠実度を実現
Adobe Acrobat COMAdobe Reader/AcrobatがインストールされているWindows .NET FrameworkのみAdobeライセンスインストールされているバージョンに依存
PDFium.NETPDFiumネイティブバイナリ.NET 5以上BSD(オープンソース)高品質、手動DPI制御
GhostScriptラッパーGhostScriptがインストールされている任意(CLIまたはCOM経由)AGPLまたは商用品質は良いがレンダリングが遅い

Windows フォームの使用例における IronPDF の主な利点は、完全に自己完結型であるため、エンド ユーザーのマシンに外部ソフトウェアをインストールする必要がないことです。 IronPDF のライセンス ページには、価格と無料試用オプションに関する詳細が記載されています。 パッケージは、ダウンロード統計とバージョン履歴とともにNuGet.orgで見つかります。 PDF 仕様でページ レンダリングがどのように定義されているかを詳しく知るには、ISO が発行したISO 32000-2 PDF 標準で、 IronPDFやその他のレンダラーが実装する必要がある形式について説明されています。

画像のレンダリング以外の IronPDF の機能の詳細については、 IronPDF のドキュメント ホームで、PDF の作成、HTML から PDF への変換、フォームの処理、デジタル署名などについて説明しています。

次のステップは何ですか?

このチュートリアルで示されたパターン -- ToBitmapでレンダリングし、PictureBoxで表示し、インデックスベースのコントロールでナビゲートする -- は、Windows Formsで動作し、依存関係のないPDFビューアを提供します。 ここからは、アプリケーションの要件に応じて、いくつかの方向性を検討する価値があります。

制作品質のビューアの場合は、大きなドキュメントを効率的に処理するために遅延ページ レンダリングを検討し、メイン ビューアの横にスクロール可能なサムネイル パネルを追加し、DPI パラメータに関連付けられたズーム コントロールを公開します。 ドキュメント管理アプリケーションの場合、ビューアと IronPDF のテキスト抽出機能およびフォーム フィールド読み取り機能を組み合わせて、検索可能なドキュメント インデックスを構築します。

ワークフローで PDF を表示する前にプログラムで生成する必要がある場合、 IronPDF はHTML から PDF への変換とPDF の最初からの作成もサポートしているため、同じライブラリで生成と表示の両方を処理できます。

無料トライアルを開始して開発のための透かしのないライセンスキーを取得し、またはPdfDocument、AnyBitmap、およびサポートするレンダリングクラスに利用可能なメソッドの完全なセットを確認するには完全なAPIリファレンスをレビューしてください。 IronPDFのサンプルギャラリーには、C#で一般的なPDFタスクを網羅した、すぐに実行できるコードサンプルも用意されています。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
あなたの詳細は常に守秘されます。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
世界中の数百万人のエンジニアから信頼されています。
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.10

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.10

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から