フッターコンテンツにスキップ
IRONPDFの使用

ASP.NET でデータベースから PDF を表示する (開発者ガイド)

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 でパッケージ マネージャー コンソールを開き、ツールの設定に応じて次のいずれかのコマンドを実行します。

Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
SHELL

NuGet Package Manager UIからプロジェクトのBrowseタブでIronPdfを検索してIronPDFをインストールすることもできます。 インストール後、アプリケーションの起動時にライセンス キーを設定します。

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

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

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

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

using IronPdf;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
using IronPdf;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
Imports IronPdf
Imports System.Data.SqlClient
Imports System.IO
Imports System.Configuration
$vbLabelText   $csharpLabel

接続文字列を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
);

このテーブルは、各 PDF ファイルをバイト配列として FileData 列に格納します。 CODE-1428--@@データ型は、ほとんどのPDF文書に十分な2GBまでのファイルを保持できます。 CODE-1429--@@フィールドは、表示とダウンロードの目的で元のファイル名を保持します。

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

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

CREATE INDEX IX_PdfDocuments_UploadDate
ON PdfDocuments(UploadDate DESC);

CREATE INDEX IX_PdfDocuments_FileName
ON PdfDocuments(FileName);

この構造は、アップロードされたファイルの効率的な保存と取得を保証し、必要に応じて追加のメタデータフィールドを追加する柔軟性を維持します。 非常に大きな 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>
<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出力例

"Choose file"ボタンと"Upload PDF"ボタンのあるPDFアップロードフォームと、文書管理のための空のPDF Documents Listセクションを下に表示するASP.NETウェブアプリケーションインターフェイス

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

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

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.";
    }
}
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.";
    }
}
Imports System
Imports System.IO
Imports System.Data.SqlClient
Imports System.Configuration
Imports IronPdf

Protected Sub btnUpload_Click(sender As Object, e As EventArgs)
    If FileUpload1.HasFile AndAlso FileUpload1.PostedFile.ContentType = "application/pdf" Then
        Try
            Dim fileName As String = FileUpload1.FileName
            Dim fileBytes As Byte() = FileUpload1.FileBytes
            Dim maxFileSize As Integer = 10 * 1024 * 1024 ' 10MB limit

            If fileBytes.Length > maxFileSize Then
                lblMessage.Text = "File size exceeds 10MB limit."
                Return
            End If

            ' Validate PDF using IronPDF
            Using stream As New MemoryStream(fileBytes)
                Dim testPdf As New IronPdf.PdfDocument(stream)
                If testPdf.PageCount = 0 Then
                    lblMessage.Text = "Invalid PDF file."
                    Return
                End If
            End Using

            Dim constr As String = ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString
            Using conn As New SqlConnection(constr)
                Dim query As String = "INSERT INTO PdfDocuments (FileName, FileData, FileSize, CreatedBy) " &
                                      "VALUES (@FileName, @FileData, @FileSize, @CreatedBy)"
                Using cmd As New SqlCommand(query, conn)
                    cmd.Parameters.AddWithValue("@FileName", fileName)
                    cmd.Parameters.AddWithValue("@FileData", fileBytes)
                    cmd.Parameters.AddWithValue("@FileSize", fileBytes.Length)
                    cmd.Parameters.AddWithValue("@CreatedBy", If(User.Identity.Name, "Anonymous"))

                    conn.Open()
                    cmd.ExecuteNonQuery()
                End Using
            End Using
            lblMessage.Text = "PDF document uploaded successfully!"
            lblFileInfo.Text = $"File: {fileName} ({fileBytes.Length \ 1024}KB)"
            LoadPdfList()
        Catch ex As Exception
            lblMessage.Text = "Error uploading file: " & ex.Message
        End Try
    Else
        lblMessage.Text = "Please select a valid PDF file."
    End If
End Sub
$vbLabelText   $csharpLabel

このコードは、アップロード前にファイルの種類を検証し、有効な 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();
    }
}
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();
    }
}
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports IronPdf

Private Sub LoadPdfList()
    Dim constr As String = ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString
    Using conn As New SqlConnection(constr)
        Dim query As String = "SELECT Id, FileName, FileSize, UploadDate, CreatedBy FROM PdfDocuments ORDER BY UploadDate DESC"
        Using cmd As New SqlCommand(query, conn)
            conn.Open()
            Dim adapter As New SqlDataAdapter(cmd)
            Dim dt As New DataTable()
            adapter.Fill(dt)

            For Each row As DataRow In dt.Rows
                Dim fileSize As Integer = Convert.ToInt32(row("FileSize"))
                row("FileSize") = FormatFileSize(fileSize)
            Next

            GridView1.DataSource = dt
            GridView1.DataBind()
        End Using
    End Using
End Sub

Private Function FormatFileSize(bytes As Integer) As String
    If bytes < 1024 Then Return bytes & " B"
    If bytes < 1048576 Then Return (bytes \ 1024) & " KB"
    Return (bytes \ 1048576) & " MB"
End Function

Private Function GetPdfFromDatabase(id As Integer) As PdfData
    Dim pdfBytes As Byte() = Nothing
    Dim filename As String = ""
    Dim constr As String = ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString
    Using conn As New SqlConnection(constr)
        Dim query As String = "SELECT FileData, FileName FROM PdfDocuments WHERE Id = @Id"
        Using cmd As New SqlCommand(query, conn)
            cmd.Parameters.AddWithValue("@Id", id)
            conn.Open()
            Using reader As SqlDataReader = cmd.ExecuteReader()
                If reader.Read() Then
                    pdfBytes = CType(reader("FileData"), Byte())
                    filename = reader("FileName").ToString()
                End If
            End Using
        End Using
    End Using
    If pdfBytes IsNot Nothing Then
        Return New PdfData With {.Bytes = pdfBytes, .FileName = filename}
    End If
    Return Nothing
End Function

Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs)
    If e.CommandName = "ViewPdf" Then
        Dim documentId As Integer = Convert.ToInt32(e.CommandArgument)
        ViewPdfDocument(documentId)
    ElseIf e.CommandName = "DownloadPdf" Then
        Dim documentId As Integer = Convert.ToInt32(e.CommandArgument)
        DownloadPdfDocument(documentId)
    End If
End Sub

Private Sub ViewPdfDocument(id As Integer)
    Dim pdfData = GetPdfFromDatabase(id)
    If pdfData IsNot Nothing Then
        Dim pdf As PdfDocument
        Using stream As New MemoryStream(pdfData.Bytes)
            pdf = New PdfDocument(stream)
        End Using

        ' 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()
    End If
End Sub
$vbLabelText   $csharpLabel

CODE-1432--@@メソッドは、適切なセキュリティ設定を適用して、ドキュメントをクライアントにストリームバックします。 CODE-1433は、ダウンロードを促すのではなく、PDFを表示するようにブラウザに指示します。 ドキュメント ポリシーの要件に合わせて、印刷権限やコピー アンド ペーストの制限などのセキュリティ設定を調整できます。

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

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

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

"PDF とは何ですか"というタイトルのドキュメントと Portable Document Format に関する説明テキストを表示する PDF ビューア インターフェイス。

表示前に 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;
// 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;
' 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
$vbLabelText   $csharpLabel

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

PDF viewer display a document about 'What is a PDF?' with detailed text content and diagonal 'CONFIDENTIAL' watermark demonstration ironPDF's watermarking capabilities for document security PDF viewer display a document about 'PDF?

透かしは、ユーザーが閲覧できるが逐語的に再現できない文書を表示する場合に特に役立ちます。 また、表示前に 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';
}
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

ダウンロード・パスは、同じデータベース検索ロジックに従いますが、inlineの代わりにattachmentをコンテンツの性質として使用します。 これにより、ブラウザはファイルを表示するのではなく保存するようになります。 どちらのパスも同じGetPdfFromDatabase@ヘルパーを共有し、データアクセスコードをDRYに保ちます。

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

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

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

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

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

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

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

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

1.NuGet経由でIronPDFをインストールしてください(Install-Package IronPdfもしくはdotnet add package IronPdf)。 2.上記のSQLスキーマを使用して、PdfDocuments@テーブルを作成してください。

  1. .aspx コード ビハインドにアップロード ハンドラーを追加します。
  2. IronPDFを介してバイトをストリームするビュー ハンドラーとダウンロード ハンドラーを追加します。
  3. ハンドラーを指す行コマンドを使用して GridView を接続します。

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

よくある質問

ASP.NETでデータベースからPDFを表示する主な焦点は何ですか?

主な焦点は、ASP.NETウェブアプリケーション内でデータベースから直接PDFを表示する効果的な方法を開発者に提供し、プロジェクトの機能とユーザーエクスペリエンスを向上させることです。

IronPDFはASP.NETでデータベースからPDFを表示するのにどのように役立ちますか?

IronPDFは、開発者がデータベースストレージからシームレスにPDFをレンダリングできる強力なライブラリを提供することでプロセスを簡素化し、ASP.NETアプリケーションへのスムーズな統合を保証します。

ASP.NETでのPDF表示にIronPDFを使用する利点は何ですか?

IronPDFを使用することで、容易な統合、高品質なレンダリング、またさまざまなPDF機能のサポートなどの利点があり、ASP.NETアプリケーションの使いやすさとパフォーマンスを大きく向上させることができます。

IronPDFはデータベースからの大きなPDFファイルを効率的に処理できますか?

はい、IronPDFは大きなPDFファイルを効率的に処理するように設計されており、素早い読み込みとレンダリング時間を保証し、アプリケーションパフォーマンス維持に欠かせません。

IronPDFを使用してASP.NETでPDF表示をカスタマイズすることは可能ですか?

もちろん、IronPDFはさまざまなカスタマイズオプションを提供しているため、開発者はASP.NET環境内で特定の要件に従ってPDF表示を調整することができます。

IronPDFはASP.NETアプリケーションでどのファイル形式をPDFに変換できますか?

IronPDFは、HTML、画像などのさまざまなファイル形式をPDFに変換することをサポートしており、ASP.NETアプリケーションでの動的コンテンツ生成に特に便利です。

IronPDFはASP.NETアプリケーションでの安全なPDF処理をサポートしていますか?

はい、IronPDFは暗号化およびパスワード保護などの安全なPDF処理をサポートしており、ASP.NETアプリケーション内で機密情報を保護するのに役立ちます。

IronPDFは他のIron Software製品と統合して機能を強化できますか?

はい、IronPDFはIronOCRやIronBarcodeなど、他のIron Software製品と統合して、ASP.NETアプリケーションでのドキュメント管理と処理に包括的なソリューションを提供できます。

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

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね