IRONPDFの使用

IronPDFを使用してC#で2つのPDFファイルを比較する方法

Curtis Chau
Curtis Chau
Updated: 2026年7月12日

ASP.NETでデータベースから PDF を表示するには、保存されているバイナリ データを取得し、 IronPDF の PdfDocument クラスを使用してレンダリングします。このクラスは、バイト配列を効率的に処理し、カスタマイズ オプションを備えたブラウザー互換の出力を提供します。

ASP.NETでの PDF データベース表示とは何ですか?

ASP.NETアプリケーションでPDF ドキュメントを管理する場合、多くの場合、PDF ファイルをファイル システムではなくデータベースに直接保存する必要があります。 この方法により、セキュリティが向上し、バックアップが集中化され、展開が簡素化されます。 しかし、適切なツールなしでデータベースからPDFドキュメントを取得して表示するのは困難です。

データベーステーブルにPDFファイルをバイナリデータとして保存することで、ドキュメントのアクセスとバージョン管理をより良く制御できます。 ユーザーにPDFドキュメントを表示する必要がある場合、データベースからバイト配列を効率的に取得し、ブラウザでレンダリングしなければなりません。 IronPDF は、 ASP.NETアプリケーションで PDF ドキュメントを処理するための効果的な API を使用して、このプロセス全体を簡素化します。

このチュートリアルでは、IronPDF の実証済み機能を使用して、データベース機能からASP.NET でPDF を表示する方法を説明します。 最適なパフォーマンスとセキュリティを備えた PDF ファイルをアップロード、保存、表示するための完全なソリューションを作成する方法を学習します。 このライブラリは、さまざまなレンダリング オプションと高度な PDF 操作機能をサポートしており、実稼働レベルのドキュメント管理システムを簡単に構築できます。

ASP.NETプロジェクトに PDF ライブラリをインストールするにはどうすればよいでしょうか?

PDF表示機能を実装する前に、ASP.NETプロジェクトにIronPDFがインストールされていることを確認してください。 Visual Studio でパッケージ マネージャー コンソールを開き、ツールの設定に応じて次のいずれかのコマンドを実行します。

PM > Install-Package IronPdf

あなたのプロジェクトのブラウズタブでIronPdfを検索することで、NuGet パッケージマネージャー UIを通じてIronPDFをインストールすることもできます。 インストール後、アプリケーションの起動時にライセンス キーを設定します。

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

無料試用ライセンスでは、評価期間中にすべての機能に完全にアクセスできます。 実稼働環境での展開の場合は、利用可能なライセンス レベルを確認して、プロジェクトの規模に適したオプションを見つけてください。

どのようなデータベース構造が必要ですか?

PDFファイルをバイナリデータとして保存するために、データベースのテーブル構造にはvarbinary(max)列が必要です。 管理の向上のために、テーブルにはファイル名、アップロード日、ファイルサイズといったメタデータフィールドを含めるべきです。 次の SQL は、このシナリオに適したテーブルを作成します。

using IronPdf;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;

データベース接続を確立するためにweb.configファイルで接続文字列を設定してください。 PDF ビューアの実装では、この接続を使用して、データベースからアップロードされたファイルを取得し、PDF コンテンツをスムーズに表示します。

ソリューションにはどのような名前空間が必要ですか?

このソリューションでは、 IronPDF名前空間とともに標準の ADO .NET名前空間を使用します。 サードパーティの ORM は必要ありません。直接的な ADO .NETアプローチにより依存関係が最小限に抑えられ、クエリ実行を完全に制御できます。 接続文字列が、PDF ストレージ テーブルが存在する SQL Server インスタンスを指していることを確認します。

PDF 用のデータベース テーブルを作成するにはどうすればよいですか?

まず、PDFドキュメントを保存するために特別に設計されたデータベーステーブルを作成します。 テーブル構造は、PDF ドキュメントを管理するためのバイナリ データと重要なメタデータの両方に対応する必要があります。

CREATE TABLE PdfDocuments (
    Id INT PRIMARY KEY IDENTITY(1,1),
    FileName NVARCHAR(255) NOT NULL,
    FileData VARBINARY(MAX) NOT NULL,
    ContentType NVARCHAR(100) DEFAULT 'application/pdf',
    FileSize INT,
    UploadDate DATETIME DEFAULT GETDATE(),
    CreatedBy NVARCHAR(100),
    LastModified DATETIME,
    DocumentVersion INT DEFAULT 1
);
SQL

このテーブルでは、各PDFファイルをFileData列にバイト配列として保存します。 varbinary(max)データ型は最大2GBのファイルを保持でき、ほとんどのPDFドキュメントに十分です。 FileNameフィールドは表示およびダウンロード目的で元のファイル名を保持します。

PDF 取得のデータベース パフォーマンスを向上させるにはどうすればよいでしょうか?

PDFドキュメントを取得する際に、性能を向上させるために頻繁にクエリされる列にインデックスを追加することを検討してください。 次の SQL は、WHERE 句と ORDER BY 句に最も頻繁に出現する列にインデックスを作成します。

CREATE INDEX IX_PdfDocuments_UploadDate
ON PdfDocuments(UploadDate DESC);

CREATE INDEX IX_PdfDocuments_FileName
ON PdfDocuments(FileName);
SQL

この構造は、アップロードされたファイルの効率的な保存と取得を保証し、必要に応じて追加のメタデータフィールドを追加する柔軟性を維持します。 非常に大きな PDF ファイルの場合、データベース ストレージがアーキテクチャに適しているかどうか、またはハイブリッド アプローチ (ファイルをディスクまたはオブジェクト ストレージに保存し、メタデータのみをデータベースに保存する) の方が大規模な場合にパフォーマンスが向上するかどうかを検討してください。

PDF保存戦略の比較
戦略最適な用途利点考慮事項
データベース (VARBINARY)小~中規模のファイル、高いセキュリティトランザクションの一貫性、集中バックアップデータベースのサイズを急速に増やすことができる
ファイルシステム大容量ファイル、高スループット高速ファイルIO、低いデータベースオーバーヘッド別途バックアップ戦略が必要
オブジェクト ストレージ (Azure Blob/S3)クラウド展開、無制限のスケールコスト効率が高く、可用性が高い追加のSDK依存関係

PDF ファイルをデータベースにアップロードするにはどうすればよいでしょうか?

ASP.NETのFileUploadコントロールを使用してアップロード機能を実装します。 適切な検証を行って、次の HTML マークアップをフォーム要素内の .aspx ページに追加します。

<div class="pdf-upload-container">
    <asp:FileUpload ID="FileUpload1" runat="server" accept=".pdf" />
    <asp:Button ID="btnUpload" Text="Upload PDF"
                OnClick="btnUpload_Click" runat="server" CssClass="btn-primary" />
    <asp:Label ID="lblMessage" runat="server" CssClass="status-message" />
    <div class="file-info">
        <asp:Label ID="lblFileInfo" runat="server" />
    </div>
</div>
HTML

UI出力例

ASP.NETウェブアプリケーションインターフェースでは、PDFアップロードフォームに

ファイルアップロードイベントをどのように処理しますか?

アップロードボタンはサーバー側のイベントハンドラをトリガーします。 以下は、アップロードされたファイルをバイト配列に変換し、適切なエラー処理を行って保存するアップロード関数の完全な実装です。

protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentType == "application/pdf")
    {
        try
        {
            string fileName = FileUpload1.FileName;
            byte[] fileBytes = FileUpload1.FileBytes;
            int maxFileSize = 10 * 1024 * 1024; // 10MB limit

            if (fileBytes.Length > maxFileSize)
            {
                lblMessage.Text = "File size exceeds 10MB limit.";
                return;
            }

            // Validate PDF using IronPDF
            using (var stream = new MemoryStream(fileBytes))
            {
                var testPdf = new IronPdf.PdfDocument(stream);
                if (testPdf.PageCount == 0)
                {
                    lblMessage.Text = "Invalid PDF file.";
                    return;
                }
            }

            string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(constr))
            {
                string query = "INSERT INTO PdfDocuments (FileName, FileData, FileSize, CreatedBy) " +
                               "VALUES (@FileName, @FileData, @FileSize, @CreatedBy)";
                using (SqlCommand cmd = new SqlCommand(query, conn))
                {
                    cmd.Parameters.AddWithValue("@FileName", fileName);
                    cmd.Parameters.AddWithValue("@FileData", fileBytes);
                    cmd.Parameters.AddWithValue("@FileSize", fileBytes.Length);
                    cmd.Parameters.AddWithValue("@CreatedBy", User.Identity.Name ?? "Anonymous");

                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
            }
            lblMessage.Text = "PDF document uploaded successfully!";
            lblFileInfo.Text = $"File: {fileName} ({fileBytes.Length / 1024}KB)";
            LoadPdfList();
        }
        catch (Exception ex)
        {
            lblMessage.Text = "Error uploading file: " + ex.Message;
        }
    }
    else
    {
        lblMessage.Text = "Please select a valid PDF file.";
    }
}

このコードは、アップロード前にファイルの種類を検証し、有効な PDF ファイルのみがデータベースに保存されるようにします。 バイト配列変換はFileBytesプロパティを通じて自動的に行われます。 追加の検証には、PDF の整合性とファイル サイズの制限のチェックが含まれます。 保存する前にIronPDFを使用してバイト配列を開くと、ファイルが単なる拡張子が変更されたファイルではなく、本物の解析可能な PDF ドキュメントであることが確認されます。

アップロードされたファイル付きのUI

ASP.NETウェブアプリケーションインターフェースでは、ファイルアップロードフォームを使ったPDFアップロード機能を表示し、アップロードされたPDFドキュメントをリストするテーブル、閲覧およびダウンロードアクションボタンを備え、完全なドキュメント管理を実現しています

データベースから PDF を取得して表示するにはどうすればよいですか?

IronPDFは、データベースから取得したPDFドキュメントのレンダリングに優れています。 このライブラリは、高度なレンダリング機能を備えたブラウザで PDF コンテンツを表示するための複数のオプションを提供します。 まず、データベース テーブルからバイナリ データを取得し、それをIronPDFに渡して処理してから、クライアントにストリーミングで返します。

private void LoadPdfList()
{
    string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(constr))
    {
        string query = @"SELECT Id, FileName, FileSize, UploadDate, CreatedBy
                        FROM PdfDocuments
                        ORDER BY UploadDate DESC";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            conn.Open();
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            adapter.Fill(dt);

            foreach (DataRow row in dt.Rows)
            {
                int fileSize = Convert.ToInt32(row["FileSize"]);
                row["FileSize"] = FormatFileSize(fileSize);
            }

            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }
}

private string FormatFileSize(int bytes)
{
    if (bytes < 1024) return bytes + " B";
    if (bytes < 1048576) return (bytes / 1024) + " KB";
    return (bytes / 1048576) + " MB";
}

private PdfData GetPdfFromDatabase(int id)
{
    byte[] pdfBytes = null;
    string filename = "";
    string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(constr))
    {
        string query = "SELECT FileData, FileName FROM PdfDocuments WHERE Id = @Id";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@Id", id);
            conn.Open();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    pdfBytes = (byte[])reader["FileData"];
                    filename = reader["FileName"].ToString();
                }
            }
        }
    }
    if (pdfBytes != null)
    {
        return new PdfData { Bytes = pdfBytes, FileName = filename };
    }
    return null;
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ViewPdf")
    {
        int documentId = Convert.ToInt32(e.CommandArgument);
        ViewPdfDocument(documentId);
    }
    else if (e.CommandName == "DownloadPdf")
    {
        int documentId = Convert.ToInt32(e.CommandArgument);
        DownloadPdfDocument(documentId);
    }
}

private void ViewPdfDocument(int id)
{
    var pdfData = GetPdfFromDatabase(id);
    if (pdfData != null)
    {
        IronPdf.PdfDocument pdf;
        using (var stream = new System.IO.MemoryStream(pdfData.Bytes))
        {
            pdf = new IronPdf.PdfDocument(stream);
        }

        // Apply security settings
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;

        Response.Clear();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", $"inline; filename={pdfData.FileName}");
        Response.AddHeader("content-length", pdf.BinaryData.Length.ToString());
        Response.BinaryWrite(pdf.BinaryData);
        Response.End();
    }
}

ViewPdfDocumentメソッドは適切なセキュリティ設定を適用してドキュメントをクライアントにストリーミング返送します。 inlineコンテンツディスポジションはブラウザにダウンロードではなくPDFを表示するよう指示します。 ドキュメント ポリシーの要件に合わせて、印刷権限やコピー アンド ペーストの制限などのセキュリティ設定を調整できます。

PDF レンダリング パラメータをどのように処理しますか?

SQL コマンドのパラメータは、主キーによって特定の PDF を安全に取得するために重要です。 パラメータ化されたクエリは、SQL インジェクション攻撃を防ぎ、正しいデータ バインディングを保証します。 バイナリデータを取得した後、IronPDFはMemoryStreamからそれを読み込み、ドキュメントオブジェクトに完全にアクセスし、操作を行ってからブラウザに送信します。

アップロードされたPDFファイルを表示する

'PDFとは?'というタイトルのドキュメントが、ポータブルドキュメントフォーマットについての解説文と共に100%ズームで表示され、ナビゲーションコントロールおよび多ページサポート指標も示されています

表示前に PDF に追加できる高度な機能は何ですか?

IronPDF の PDF 操作機能は、単純な表示にとどまりません。 レンダリング前に、透かし、ヘッダーとフッター、デジタル署名を使用して PDF ドキュメントを操作できます。

// Add a confidentiality watermark before displaying
pdf.ApplyWatermark("<h2 style='color:red; font-family:Arial'>CONFIDENTIAL</h2>",
                   rotation: 30,
                   opacity: 50);

// Add page numbers in the footer
pdf.AddTextHeaders("{page} of {total-pages}",
                  IronPdf.Editing.TextHeaderFooter.DisplayLocation.BottomCenter);

// Add document metadata
pdf.MetaData.Author = "Your Application";
pdf.MetaData.ModifiedDate = DateTime.Now;

ウォーターマーク付きPDFを表示する

'PDFとは?'についてのドキュメントを表示するPDFビューアーで、IronPDFのウォーターマーク機能によるドキュメントセキュリティを示すために、詳細なテキストコンテンツと斜めの

透かしは、ユーザーが閲覧できるが逐語的に再現できない文書を表示する場合に特に役立ちます。 また、表示前に PDF からテキストを抽出して検索インデックスを作成したり、特定のページを画像に変換してサムネイルを生成したりすることもできます。

このアプローチが本番環境アプリケーションに適しているのはなぜでしょうか?

ADO .NETとIronPDFを組み合わせることで、小規模な社内ツールからエンタープライズ ドキュメント管理システムまで拡張可能な簡単なパターンが提供されます。 このアプローチは完全にサーバー側で行われます。クライアント側の PDF レンダリング ライブラリは必要なく、正しい MIME タイプが返されると、ブラウザーに組み込まれた PDF ビューアーが表示を処理します。

このパターンの主な強みは次のとおりです。

-アップロード時の検証: IronPDF はファイルがデータベースに到達する前にファイルを開き、破損したファイルや PDF 以外のファイルを直ちに拒否します。 -表示時のセキュリティ制御: バイトがブラウザーに到達する前に、印刷やコピー アンド ペーストなどの権限がIronPDFによって適用されます。 -最小限のクライアント側コード: ブラウザがネイティブにレンダリングを処理するため、 JavaScript の複雑さが軽減されます。 -柔軟な前処理: PDF 変換に HTML 文字列を適用したり、結合および分割操作でドキュメントを結合したり、ストリーミングの前にカスタム透かしを追加したりできます。これらはすべて同じサーバー側メソッド内で実行できます。

ブラウザ統合とダウンロード オプションをどのように処理しますか?

より適切な Web 統合を行うには、現在のページを置き換えるのではなく、 JavaScriptを使用して新しいタブでドキュメントを開きます。 これにより、ユーザーはドキュメント リストを閲覧する際のエクスペリエンスが向上します。

function openPdfInNewTab(documentId) {
    window.open('/PdfHandler.ashx?id=' + documentId, '_blank');
}

function openPdfInModal(documentId) {
    var modal = document.getElementById('pdfModal');
    var iframe = document.getElementById('pdfFrame');
    iframe.src = '/PdfHandler.ashx?id=' + documentId;
    modal.style.display = 'block';
}
JavaScript

ダウンロードパスは同じデータベース取得ロジックに従いますが、コンテンツディスポジションとしてattachmentを使用します。 これにより、ブラウザはファイルを表示するのではなく保存するようになります。 両方のパスはGetPdfFromDatabaseヘルパーを共有し、データアクセスコードをDRYで保ちます。

フォームベースのドキュメントワークフローには、IronPDFのPDFフォームフィリング機能を探ってください。ドキュメントの表示またはダウンロード前にフォームフィールドを事前に入力でき、請求書生成や契約管理のシナリオに役立ちます。

PDF 配信におけるセキュリティ上の考慮事項は何ですか?

バイトを提供する前に、要求元のユーザーが要求されたドキュメント ID にアクセスする権限を持っていることを常に検証します。 クエリ文字列内の単純な整数 ID は簡単に列挙できます。承認チェックがなければ、認証されたユーザーは誰でも ID を推測して任意のドキュメントを表示できます。

ベストプラクティスは次のとおりです。

  • FileDataをクエリする前に現在のユーザーアイデンティティに対して検証します。
  • 列挙を非実用的にするために、ドキュメント識別子として連続した整数ではなく GUID を使用します。
  • 機密性の高いドキュメントの場合は、アップロード時にPDF パスワード保護を適用します。これにより、アプリケーション外部からアクセスされた場合でもファイル自体は保護されます。
  • 監査証跡のすべての表示およびダウンロード イベントをログに記録します。

ASP.NETセキュリティ パターンに関する外部リファレンスとしては、 OWASP ASP.NETセキュリティ チート シートとMicrosoft のASP.NET向けセキュア コーディング ガイドラインが信頼できるガイダンスを提供します。 IronPDFのNuGetギャラリーエントリには、バージョン履歴および依存関係も記録されています。

PDF データベース表示を開始するにはどうすればよいですか?

このソリューションを独自のプロジェクトに実装するには:

  1. NuGetを介してIronPDFをインストールします(dotnet add package IronPdf)。
  2. 上記のSQLスキーマを使用してPdfDocumentsテーブルを作成します。
  3. .aspx コード ビハインドにアップロード ハンドラーを追加します。
  4. IronPDFを介してバイトをストリームするビュー ハンドラーとダウンロード ハンドラーを追加します。
  5. ハンドラーを指す行コマンドを使用して GridView を接続します。

IronPDF の全機能セットを調べると、ドキュメント管理ワークフローに自然に適合するHTML から PDF への変換やPDF の結合と分割などの追加機能が見つかります。 ライセンスを購入する前に、無料トライアルを開始して完全な API をテストしてください。

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

詳しく読む

関連する記事