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

C#とIronPDFを使用してASP.NETでデータベースからPDFファイルを取得する方法

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:イメージ5 - 出力

PDFドキュメントの取得と表示

PDFをデータベースに保存した後、次のステップは、WebブラウザでPDFを取り出して表示することです。 IronPDFはSQL Serverにバイナリデータとして格納されたPDFファイルのフェッチとレンダリングのプロセスを簡素化します。

データベースからPDFを取得する

SQL ServerデータベースからPDFドキュメントを取得し、ブラウザに送信する方法を紹介します:

using IronPdf;
using System.Data.SqlClient;
using System.IO;
using Microsoft.AspNetCore.Mvc;

public async Task<IActionResult> RetrievePdfFromDatabase(int documentId, string connectionString)
{
    using var connection = new SqlConnection(connectionString);
    await connection.OpenAsync();
    var query = "SELECT FileName, FileContent FROM PdfDocuments WHERE Id = @Id";
    using var command = new SqlCommand(query, connection);
    command.Parameters.AddWithValue("@Id", documentId);
    using var reader = await command.ExecuteReaderAsync();
    if (reader.Read())
    {
        var fileName = reader["FileName"].ToString();
        var pdfBytes = (byte[])reader["FileContent"];
        var contentType = "application/pdf";
        return new FileContentResult(pdfBytes, contentType)
        {
            FileDownloadName = fileName
        };
    }
    return new NotFoundResult();
}
using IronPdf;
using System.Data.SqlClient;
using System.IO;
using Microsoft.AspNetCore.Mvc;

public async Task<IActionResult> RetrievePdfFromDatabase(int documentId, string connectionString)
{
    using var connection = new SqlConnection(connectionString);
    await connection.OpenAsync();
    var query = "SELECT FileName, FileContent FROM PdfDocuments WHERE Id = @Id";
    using var command = new SqlCommand(query, connection);
    command.Parameters.AddWithValue("@Id", documentId);
    using var reader = await command.ExecuteReaderAsync();
    if (reader.Read())
    {
        var fileName = reader["FileName"].ToString();
        var pdfBytes = (byte[])reader["FileContent"];
        var contentType = "application/pdf";
        return new FileContentResult(pdfBytes, contentType)
        {
            FileDownloadName = fileName
        };
    }
    return new NotFoundResult();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このメソッドは、そのIDに基づいてPDFファイルをフェッチし、バイナリデータを取得し、ダウンロード可能なファイルとしてクライアントのブラウザに直接送信します。.NET CoreのFileContentResultクラスは、MIMEタイプとファイルダウンロード名を処理し、ブラウザがファイルをPDFドキュメントとして認識することを保証します。

ブラウザでPDFを表示する

PDFをダウンロードせずにブラウザに直接表示するには、FileContentResultを修正して、ブラウザウィンドウ内にPDFをレンダリングすることができます:

return new FileContentResult(pdfBytes, "application/pdf");
return new FileContentResult(pdfBytes, "application/pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この行は、PDFがブラウザのデフォルトのPDFビューアで開かれることを保証し、ドキュメントを閲覧するためのシームレスなユーザー体験を提供します。

結論

ASP.NET CoreでIronPDFを使用することで、開発者はSQL Serverデータベース内でPDFファイルを簡単に管理することができます。 IronPDFはPDFの保存と取得から表示まで、強力なChromeレンダリングエンジンを活用してPDF操作のあらゆる側面を処理します。このチュートリアルでは、IronPDFをASP.NET Coreアプリケーションに統合し、PDFドキュメントをアップロード、HTMLからの生成、表示のための取得のいずれにおいても効率的に処理する方法を説明しました。

IronPDFの機能とライセンスについての詳細は、IronPDF公式ウェブサイトをご覧ください。

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:イメージ5 - ウェブ出力

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:イメージ6 - SQLサーバーの出力

データベースから PDF ドキュメントを取得する

保存されたPDFを取得するには、SQL Serverからバイナリデータを読み取り、ブラウザ表示のためにHTTPレスポンスを適切にフォーマットする必要があります。 IronPDFはこのプロセスを大幅に効率化します。

検索コントローラの作成

.NET Coreアプリケーションで、PDF検索を処理するコントローラアクションを作成します。 このコントローラは、グリッドビューにリンクしたり、クエリストリングパラメータを介して呼び出したりして、ファイルを表示したりダウンロードしたりすることができます:

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.Data.SqlClient;
using System;
using System.Threading.Tasks;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    private readonly string _connectionString;
    public PdfController(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("DefaultConnection");
    }

    [HttpGet("{id}")]
    public async Task<IActionResult> GetPdf(int id)
    {
        try
        {
            // Retrieve PDF documents from database
            byte[] pdfBytes = await RetrievePdfFromDatabase(id);
            if (pdfBytes == null || pdfBytes.Length == 0)
                return NotFound();
            // Load the PDF document using IronPDF for potential modifications
            var pdfDocument = new PdfDocument(pdfBytes);
            // Return file for inline display in browser
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdfDocument.BinaryData, "application/pdf");
        }
        catch (Exception ex)
        {
            // Handle exception and log error details
            return StatusCode(500, "Error retrieving PDF file");
        }
    }

    private async Task<byte[]> RetrievePdfFromDatabase(int documentId)
    {
        using var connection = new SqlConnection(_connectionString);
        await connection.OpenAsync();
        var query = "SELECT FileContent FROM PdfDocuments WHERE Id = @Id";
        using var command = new SqlCommand(query, connection);
        command.Parameters.AddWithValue("@Id", documentId);
        var result = await command.ExecuteScalarAsync();
        return result as byte[];
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.Data.SqlClient;
using System;
using System.Threading.Tasks;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    private readonly string _connectionString;
    public PdfController(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("DefaultConnection");
    }

    [HttpGet("{id}")]
    public async Task<IActionResult> GetPdf(int id)
    {
        try
        {
            // Retrieve PDF documents from database
            byte[] pdfBytes = await RetrievePdfFromDatabase(id);
            if (pdfBytes == null || pdfBytes.Length == 0)
                return NotFound();
            // Load the PDF document using IronPDF for potential modifications
            var pdfDocument = new PdfDocument(pdfBytes);
            // Return file for inline display in browser
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdfDocument.BinaryData, "application/pdf");
        }
        catch (Exception ex)
        {
            // Handle exception and log error details
            return StatusCode(500, "Error retrieving PDF file");
        }
    }

    private async Task<byte[]> RetrievePdfFromDatabase(int documentId)
    {
        using var connection = new SqlConnection(_connectionString);
        await connection.OpenAsync();
        var query = "SELECT FileContent FROM PdfDocuments WHERE Id = @Id";
        using var command = new SqlCommand(query, connection);
        command.Parameters.AddWithValue("@Id", documentId);
        var result = await command.ExecuteScalarAsync();
        return result as byte[];
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このコントローラは、いくつかの重要な概念を示しています。まず、セキュリティのためにパラメータ化されたクエリを使用して、データベースからバイナリデータを取得します。 次に、FromBytes()メソッドを使ってPDFをIronPDFのPdfDocumentオブジェクトに読み込みます。 このステップは、クライアントに送信する前にPDFを修正できるため、非常に重要です。 最後に、inline: trueを持つFile()メソッドは、PDFがダウンロードをトリガーするのではなく、ブラウザに直接表示されることを保証し、C#を使用してASP.NETでデータベースからPDFを取得するという一般的な課題を解決します。

ダウンロード機能の実装

ユーザーがPDFファイルをインラインで表示するのではなく、ダウンロードする必要がある場合があります。新しいファイルを保存するためのアップロードボタンや、グリッドビューにダウンロードリンクを追加することができます。 ここでは、正しいファイル名とファイルパスの詳細を使用してダウンロードするためのレスポンスヘッダを修正する方法を説明します:

[HttpGet("download/{id}")]
public async Task<IActionResult> DownloadPdf(int id)
{
    // Retrieve stored PDF file from database
    byte[] pdfBytes = await RetrievePdfFromDatabase(id);
    string fileName = await GetFileName(id);
    if (pdfBytes == null || pdfBytes.Length == 0)
        return NotFound("PDF file not found");
    // Load and validate PDF document
    var pdfDocument = new PdfDocument(pdfBytes);
    // Set content disposition for attachment download
    Response.Headers.Append("Content-Disposition", $"attachment; filename={fileName}");
    // Return file for download with default PDF content type
    return File(pdfDocument.BinaryData, "application/pdf", fileName);
}

private async Task<string> GetFileName(int documentId)
{
    using var connection = new SqlConnection(_connectionString);
    await connection.OpenAsync();
    // Query to retrieve PDF file name from database
    var query = "SELECT FileName FROM PdfDocuments WHERE Id = @Id";
    using var command = new SqlCommand(query, connection);
    command.Parameters.AddWithValue("@Id", documentId);
    var result = await command.ExecuteScalarAsync();
    return result as string ?? "document.pdf"; // Default filename if null
}
[HttpGet("download/{id}")]
public async Task<IActionResult> DownloadPdf(int id)
{
    // Retrieve stored PDF file from database
    byte[] pdfBytes = await RetrievePdfFromDatabase(id);
    string fileName = await GetFileName(id);
    if (pdfBytes == null || pdfBytes.Length == 0)
        return NotFound("PDF file not found");
    // Load and validate PDF document
    var pdfDocument = new PdfDocument(pdfBytes);
    // Set content disposition for attachment download
    Response.Headers.Append("Content-Disposition", $"attachment; filename={fileName}");
    // Return file for download with default PDF content type
    return File(pdfDocument.BinaryData, "application/pdf", fileName);
}

private async Task<string> GetFileName(int documentId)
{
    using var connection = new SqlConnection(_connectionString);
    await connection.OpenAsync();
    // Query to retrieve PDF file name from database
    var query = "SELECT FileName FROM PdfDocuments WHERE Id = @Id";
    using var command = new SqlCommand(query, connection);
    command.Parameters.AddWithValue("@Id", documentId);
    var result = await command.ExecuteScalarAsync();
    return result as string ?? "document.pdf"; // Default filename if null
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

File()メソッドにfilenameパラメータを渡し、content dispositionを "attachment "に設定することで、.NET Coreは、ユーザーのデフォルトのダウンロードフォルダにPDFを保存するようブラウザに促します。

出力

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:イメージ7 - PDF出力をダウンロードする

取得したPDFをIronPDFで強化する

IronPDFの際立った特徴の一つは、PDFを取得した後に変更できることです。 ユーザーにドキュメントを送信する前に、透かしやスタンプ、セキュリティ機能を追加することができます。

取得したPDFに透かしを追加する

以下は、データベースから取得したPDF文書に透かしを追加する方法の例です。 これは、追加コメントやセキュリティマークでPDFページを埋める必要がある場合に便利です:

[HttpGet("watermarked/{id}")]
public async Task<IActionResult> GetWatermarkedPdf(int id)
{
    // Retrieve PDF file from database table
    byte[] pdfBytes = await RetrievePdfFromDatabase(id);
    if (pdfBytes == null || pdfBytes.Length == 0)
        return NotFound("Cannot retrieve PDF document");
    // Create new PdfDocument from stored byte array
    var pdfDocument = new PdfDocument(pdfBytes);
    // Add watermark to each page of the PDF document
    string watermarkHtml = "<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>";
    pdfDocument.ApplyWatermark(watermarkHtml, 30, VerticalAlignment.Middle, HorizontalAlignment.Center);
    // Write the modified PDF to response
    return File(pdfDocument.BinaryData, "application/pdf");
}
[HttpGet("watermarked/{id}")]
public async Task<IActionResult> GetWatermarkedPdf(int id)
{
    // Retrieve PDF file from database table
    byte[] pdfBytes = await RetrievePdfFromDatabase(id);
    if (pdfBytes == null || pdfBytes.Length == 0)
        return NotFound("Cannot retrieve PDF document");
    // Create new PdfDocument from stored byte array
    var pdfDocument = new PdfDocument(pdfBytes);
    // Add watermark to each page of the PDF document
    string watermarkHtml = "<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>";
    pdfDocument.ApplyWatermark(watermarkHtml, 30, VerticalAlignment.Middle, HorizontalAlignment.Center);
    // Write the modified PDF to response
    return File(pdfDocument.BinaryData, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

注: IronPdfの透かし機能はHTMLコンテンツに対応しており、CSSを使用して外観を完全にコントロールすることができます。 透かしはすべてのページに自動的に適用され、回転、位置、不透明度のパラメータを調整して要件を満たすことができます。 この機能は、データベースからPDFを取得し、セキュリティマークを追加したり、文書に追加の詳細を記入したりする必要がある場合に特に便利です。

IronPdfの透かし機能はHTMLコンテンツに対応しており、CSSを使って外観を完全にコントロールすることができます。 透かしはすべてのページに自動的に適用され、回転、位置、不透明度を調整して要件を満たすことができます。 この機能は、データベースからPDFを取得し、セキュリティマークを追加する必要がある場合に特に便利です。 より高度な電子透かし技術については、開発者はしばしばPDFセキュリティに関するMicrosoftのドキュメントを参照します。

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:イメージ8 - C#とIronPDFを使用してASP.NETでデータベースからPDFファイルを取得する方法

クロスプラットフォームデプロイメント

IronPDFのアーキテクチャは、あなたのPDF検索システムが異なるプラットフォーム間で一貫して機能することを保証します。 Windowsサーバー、Linuxコンテナ、AzureやAWSのようなクラウドプラットフォームのいずれにデプロイしても、同じコードが修正なしで実行されます。 このライブラリは、プラットフォーム固有のレンダリングの詳細を内部で処理するため、DockerやKubernetesを使用した最新のコンテナ化されたデプロイメントに最適です。

データベーステーブルからPDFドキュメントを取得する必要がある.NETアプリケーションを作成する場合、IronPDFのクロスプラットフォームサポートにより、コードを変更することなく、あるプラットフォームで開発し、別のプラットフォームにデプロイすることができます。 同じNuGetパッケージを参照し、すべての環境で同じAPIメソッドを使用するだけです。 このライブラリは、URLレンダリング、HTML変換、バイナリデータ処理をプラットフォーム間で一貫して自動的に処理します。

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:画像9 - クロスプラットフォームの互換性

ベストプラクティスとパフォーマンスに関する考察

データベースから PDF 文書を取得する際に最適なパフォーマンスを確保するために、以下の重要なプラクティスに従ってください。 この記事では、適切なエラー処理とリソース管理の実装を推奨しています:

接続文字列の管理: appsettings.jsonに接続文字列を保存し、依存性注入を通してアクセスします。 これにより、機密情報をコードに記載せず、環境固有の設定を簡単に行うことができます。 データベース接続文字列やライセンスキー情報をソースコードにハードコードしないでください。

リソースの廃棄: SqlConnectionPdfDocument はどちらも IDisposable を実装しています。 リソースの適切なクリーンアップを保証し、高トラフィックの.NETアプリケーションでメモリリークを防ぐために、常にusing文を使用してください。 これは、アップロードされた複数のファイルを処理したり、複数のユーザーにPDFを提供したりする場合に非常に重要です。

非同期操作:すべてのデータベース操作にasync/awaitパターンを使用して、スレッドのブロックを防ぎましょう。 これにより、アプリケーションのスケーラビリティと応答性が向上し、特に複数のPDFリクエストを同時に処理できるようになります。 データベース操作の完了を待つ間、システムは他のリクエストを処理できます。

エラー処理:例外を優雅に処理するために、常にtry-catchブロックでコードをラップしてください。 デバッグのためにエラーの詳細を記録し、問題が発生したときにユーザーに通知するために適切なHTTPステータスコードを返します。

ファイルタイプの検証:ユーザーがPDFをアップロードするとき、処理の前にファイルタイプとサイズを検証します。 これにより、ファイルが破損する問題を防ぎ、悪意のあるアップロードからサーバーを保護します。

結論

IronPDF を使えば、ASP.NET CoreでデータベースからPDFファイルを取得するのが驚くほど簡単になります。 Chromeレンダリングエンジンと直感的なAPIを活用することで、プロ品質の出力を維持しながら、最小限のコードで複雑なPDF操作を処理することができます。 このライブラリは、ADO.NETとASP.NET Coreのレスポンス処理とシームレスに統合されているため、信頼性の高いPDF文書管理を必要とするエンタープライズ.NETアプリケーションに最適です。

ドキュメントアーカイブシステムを構築する場合でも、ASP.NET C#アプリケーションでPDFストリームを表示する場合でも、データベースからファイルをダウンロードする機能を作成する場合でも、IronPDFはPDFドキュメントを効率的に取得するためのすべてのツールを提供します。 この記事で示す以下の名前空間とコード例は、その方法を示しています:

  • PDF形式のファイルをバイト配列として格納し、取得する。
  • アップロードボタンイベントで object sender EventArgs e を処理する
  • PDFコンテンツをブラウザに表示したり、ダウンロードをトリガーする
  • クエリ文字列パラメータを使用して、特定のドキュメントをリンクする
  • 透かしとコメントでページを埋める
  • SQLインジェクションを防ぐ安全なコードを書く
  • 本番システム用の堅牢なエラー処理を作成する

今すぐIronPDFの無料トライアルを開始し、ASP.NET Coreと.NET FrameworkアプリケーションでのPDFハンドリングをどのように変換するかを体験してください。 包括的なドキュメントと献身的なサポートにより、1回のスプリントでPDF検索システムを本番稼動させることができます。 より多くの例と詳細なAPIリファレンスについては、ドキュメントページをご覧ください。

How to Retrieve PDF File from Database in ASP.NET Using C# and IronPDF:イメージ10 - ライセンス

よくある質問

IronPDFとは?

IronPDFは.NETライブラリで、C#アプリケーションでPDFファイルの作成、編集、コンテンツの抽出を可能にします。

ASP.NETを使用してデータベースからPDFファイルを取得するにはどうすればよいですか?

ASP.NET で PDF フ ァ イ ルを デー タ ベース か ら 取得す る には、 C# コ ー ド を使っ てデー タ ベース に ク エ リ を実行 し 、 PDF デー タ をバ イ ト 配列に読み込みます。このバイト配列は必要に応じてIronPDFを使ってPDFをレンダリングしたり操作することができます。

なぜASP.NETアプリケーションでPDFを扱うのにIronPDFを使う必要があるのですか?

IronPDFはPDFの生成、HTMLからの変換、操作など、PDFを扱うための堅牢な機能を提供します。ASP.NETとシームレスに統合され、PDFを扱うための使いやすいAPIを提供します。

ASP.NETでIronPDFを使うための前提条件は何ですか?

ASP.NETでIronPDFを使用するには、Visual Studioなどの.NET開発環境をセットアップし、NuGetパッケージマネージャ経由でプロジェクトにIronPDFライブラリをインクルードする必要があります。

IronPdfを使って既存のPDFファイルを編集できますか?

はい、IronPdfは既存のPDFファイルを編集するために使用することができます。テキストや画像の追加、ドキュメントのマージなどの修正が可能です。

IronPdfでHTMLをPDFに変換することは可能ですか?

IronPDFはHTMLコンテンツを直接PDFフォーマットに変換することができ、ウェブページや他のHTMLコンテンツから簡単にPDFを生成することができます。

IronPDFを使ってPDFのセキュリティ機能を扱うにはどうすればいいですか?

IronPDFはPDFの様々なセキュリティ機能をサポートしており、パスワード保護や文書へのアクセスや編集を制御するための権限設定などが可能です。

どのような種類のデータベースがIronPDFのPDF検索と互換性がありますか?

IronPDFはSQL Server、MySQL、PostgreSQLのようなバイナリデータを格納できるデータベースと連携し、PDFファイルを取得、操作することができます。

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

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

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