ASP.NETでC#を使用してデータベースからPDFファイルを取得する方法
ASP.NETで C# を使用してデータベースから PDF ファイルを取得するには、3 つの手順が必要です。データベース テーブルからバイナリ BLOB 列をクエリし、 IronPDFを使用してバイトを PdfDocument オブジェクトにロードし、ファイルコンテンツResult または File() レスポンスを介してバイトをブラウザーに返します。 IronPDF はレンダリング、透かし、セキュリティ機能を処理するため、データ アクセス ロジックに集中できます。
IronPDF for ASP.NETをインストールするにはどうすればよいですか?
PDF 取得コードを書く前に、 NuGetパッケージ マネージャーを使用してIronPDF をプロジェクトに追加します。
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
インストール後、 IronPDFメソッドを呼び出す前に、ライセンス キーを Program.cs または appsettings.json に設定してください。
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
IronPDF は、 .NET 10 、 .NET 8、 .NET 6、および.NET Framework 4.6.2+ をサポートしています。 追加の依存関係やヘッドレス ブラウザのインストールを必要とせず、Windows、Linux、macOS で動作します。 評価用に無料の試用ライセンスが利用可能です。
SQL Server データベース テーブルをどのように設定しますか?
最も一般的な方法は、PDF ファイルを SQL Server の VARBINARY(最大) 列にバイナリ データとして保存することです。 これにより、ドキュメントとそのメタデータが 1 つのテーブルにまとめられ、バックアップが簡素化され、ファイル システム パスの管理が不要になります。
次の SQL スクリプトを使用してストレージ テーブルを作成します。
// SQL Server table definition (run this in SSMS or via EF migrations)
// CREATE TABLE PdfDocuments (
// Id INT IDENTITY(1,1) PRIMARY KEY,
// FileName NVARCHAR(255) NOT NULL,
// FileContent VARBINARY(MAX) NOT NULL,
// UploadedAt DATETIME2 DEFAULT GETUTCDATE()
// );
// SQL Server table definition (run this in SSMS or via EF migrations)
// CREATE TABLE PdfDocuments (
// Id INT IDENTITY(1,1) PRIMARY KEY,
// FileName NVARCHAR(255) NOT NULL,
// FileContent VARBINARY(MAX) NOT NULL,
// UploadedAt DATETIME2 DEFAULT GETUTCDATE()
// );
テーブルが作成されたら、appsettings.json で接続文字列を設定します。
// appsettings.json snippet (not C# -- shown as reference)
// "ConnectionStrings": {
// "DefaultConnection": "Server=localhost;Database=PdfStorage;Integrated Security=True;"
// }
// appsettings.json snippet (not C# -- shown as reference)
// "ConnectionStrings": {
// "DefaultConnection": "Server=localhost;Database=PdfStorage;Integrated Security=True;"
// }
' appsettings.json snippet (not VB.NET -- shown as reference)
' "ConnectionStrings": {
' "DefaultConnection": "Server=localhost;Database=PdfStorage;Integrated Security=True;"
' }
Program.cs で依存性注入を介して接続文字列を登録します。
using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddSingleton<IConfiguration>(builder.Configuration);
IronPdf.License.LicenseKey = builder.Configuration["IronPdf:LicenseKey"];
var app = builder.Build();
app.MapControllers();
app.Run();
using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddSingleton<IConfiguration>(builder.Configuration);
IronPdf.License.LicenseKey = builder.Configuration["IronPdf:LicenseKey"];
var app = builder.Build();
app.MapControllers();
app.Run();
Imports Microsoft.Extensions.DependencyInjection
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllers()
builder.Services.AddSingleton(Of IConfiguration)(builder.Configuration)
IronPdf.License.LicenseKey = builder.Configuration("IronPdf:LicenseKey")
Dim app = builder.Build()
app.MapControllers()
app.Run()
ASP.NET Coreで SQL Server から PDF を取得するにはどうすればよいでしょうか?
取得パターンは、接続を開き、パラメータ化された SELECT クエリを実行し、バイナリ列を byte[] に読み込むという 3 つのステップに従います。 IronPDF は、その配列をPdfDocumentオブジェクトにロードし、クライアントにストリーミングする前にオプションの処理を行います。
APIコントローラーの構築
インライン表示とファイルのダウンロードの両方に対して GET エンドポイントを公開するコントローラーを作成します。
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Data.SqlClient;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
private readonly string _connectionString;
public PdfController(IConfiguration configuration)
{
_connectionString = configuration.GetConnectionString("DefaultConnection")
?? throw new InvalidOperationException("Connection string not found.");
}
[HttpGet("{id}")]
public async Task<IActionResult> GetPdf(int id)
{
byte[] pdfBytes = await RetrievePdfBytesAsync(id);
if (pdfBytes is null || pdfBytes.Length == 0)
return NotFound("PDF document not found.");
// Load into IronPDF for validation or optional modification
using var pdfDocument = new PdfDocument(pdfBytes);
// Inline display -- browser opens PDF viewer
Response.Headers.Append("Content-Disposition", "inline; filename=\"document.pdf\"");
return File(pdfDocument.BinaryData, "application/pdf");
}
private async Task<byte[]> RetrievePdfBytesAsync(int documentID)
{
await using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
const string query = "SELECT FileContent FROM PdfDocuments WHERE Id = @Id";
await using var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Id", documentID);
var result = await command.ExecuteScalarAsync();
return result as byte[] ?? Array.Empty<byte>();
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Data.SqlClient;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
private readonly string _connectionString;
public PdfController(IConfiguration configuration)
{
_connectionString = configuration.GetConnectionString("DefaultConnection")
?? throw new InvalidOperationException("Connection string not found.");
}
[HttpGet("{id}")]
public async Task<IActionResult> GetPdf(int id)
{
byte[] pdfBytes = await RetrievePdfBytesAsync(id);
if (pdfBytes is null || pdfBytes.Length == 0)
return NotFound("PDF document not found.");
// Load into IronPDF for validation or optional modification
using var pdfDocument = new PdfDocument(pdfBytes);
// Inline display -- browser opens PDF viewer
Response.Headers.Append("Content-Disposition", "inline; filename=\"document.pdf\"");
return File(pdfDocument.BinaryData, "application/pdf");
}
private async Task<byte[]> RetrievePdfBytesAsync(int documentID)
{
await using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
const string query = "SELECT FileContent FROM PdfDocuments WHERE Id = @Id";
await using var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Id", documentID);
var result = await command.ExecuteScalarAsync();
return result as byte[] ?? Array.Empty<byte>();
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Data.SqlClient
<ApiController>
<Route("api/[controller]")>
Public Class PdfController
Inherits ControllerBase
Private ReadOnly _connectionString As String
Public Sub New(configuration As IConfiguration)
_connectionString = configuration.GetConnectionString("DefaultConnection")
If _connectionString Is Nothing Then
Throw New InvalidOperationException("Connection string not found.")
End If
End Sub
<HttpGet("{id}")>
Public Async Function GetPdf(id As Integer) As Task(Of IActionResult)
Dim pdfBytes As Byte() = Await RetrievePdfBytesAsync(id)
If pdfBytes Is Nothing OrElse pdfBytes.Length = 0 Then
Return NotFound("PDF document not found.")
End If
' Load into IronPDF for validation or optional modification
Using pdfDocument As New PdfDocument(pdfBytes)
' Inline display -- browser opens PDF viewer
Response.Headers.Append("Content-Disposition", "inline; filename=""document.pdf""")
Return File(pdfDocument.BinaryData, "application/pdf")
End Using
End Function
Private Async Function RetrievePdfBytesAsync(documentID As Integer) As Task(Of Byte())
Await Using connection As New SqlConnection(_connectionString)
Await connection.OpenAsync()
Const query As String = "SELECT FileContent FROM PdfDocuments WHERE Id = @Id"
Await Using command As New SqlCommand(query, connection)
command.Parameters.AddWithValue("@Id", documentID)
Dim result = Await command.ExecuteScalarAsync()
Return If(TryCast(result, Byte()), Array.Empty(Of Byte)())
End Using
End Using
End Function
End Class
このコントローラは、パラメータ化されたクエリを使用して SQL インジェクションを防止し、await using を正しく破棄します。 PdfDocument クラスはバイト配列を検証し、ストリーミング用に BinaryData プロパティを公開します。
ダウンロード用に名前付きファイルを返す
ユーザーがドキュメントをインラインで表示するのではなく保存する必要がある場合は、Content-Disposition ヘッダーを attachment に設定し、元のファイル名を渡します。
[HttpGet("download/{id}")]
public async Task<IActionResult> DownloadPdf(int id)
{
await using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
const string query = "SELECT FileName, FileContent FROM PdfDocuments WHERE Id = @Id";
await using var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Id", documentID);
await using var reader = await command.ExecuteReaderAsync();
if (!await reader.ReadAsync())
return NotFound("Document not found.");
var fileName = reader.GetString(reader.GetOrdinal("FileName"));
var pdfBytes = (byte[])reader["FileContent"];
using var pdfDocument = new PdfDocument(pdfBytes);
return File(pdfDocument.BinaryData, "application/pdf", fileName);
}
[HttpGet("download/{id}")]
public async Task<IActionResult> DownloadPdf(int id)
{
await using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
const string query = "SELECT FileName, FileContent FROM PdfDocuments WHERE Id = @Id";
await using var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Id", documentID);
await using var reader = await command.ExecuteReaderAsync();
if (!await reader.ReadAsync())
return NotFound("Document not found.");
var fileName = reader.GetString(reader.GetOrdinal("FileName"));
var pdfBytes = (byte[])reader["FileContent"];
using var pdfDocument = new PdfDocument(pdfBytes);
return File(pdfDocument.BinaryData, "application/pdf", fileName);
}
Imports System.Data.SqlClient
Imports Microsoft.AspNetCore.Mvc
<HttpGet("download/{id}")>
Public Async Function DownloadPdf(id As Integer) As Task(Of IActionResult)
Await Using connection As New SqlConnection(_connectionString)
Await connection.OpenAsync()
Const query As String = "SELECT FileName, FileContent FROM PdfDocuments WHERE Id = @Id"
Await Using command As New SqlCommand(query, connection)
command.Parameters.AddWithValue("@Id", id)
Await Using reader As SqlDataReader = Await command.ExecuteReaderAsync()
If Not Await reader.ReadAsync() Then
Return NotFound("Document not found.")
End If
Dim fileName As String = reader.GetString(reader.GetOrdinal("FileName"))
Dim pdfBytes As Byte() = CType(reader("FileContent"), Byte())
Using pdfDocument As New PdfDocument(pdfBytes)
Return File(pdfDocument.BinaryData, "application/pdf", fileName)
End Using
End Using
End Using
End Using
End Function
fileName を File() の 3 番目の引数として渡すと、Content-Disposition ヘッダーが自動的に attachment に設定されます。 ASP.NET Core は、スペースを含むファイル名を正しく引用符で囲みます。
取得した PDF に透かしを追加するにはどうすればよいでしょうか?
最も実用的な取得後の操作の 1 つは、ドキュメントを提供する前に各ページに透かしを刻印することです。 これは、機密レポート、ドラフト文書、または目に見えるセキュリティ マーキングが必要なファイルに役立ちます。
IronPDFで HTML 透かしを適用する
IronPDF の透かし API は任意の HTML 文字列を受け入れるため、インライン CSS を使用して透かしテキストのスタイルを設定できます。 下にあるコンテンツが読みやすい程度に不透明度を低く設定します。
[HttpGet("watermarked/{id}")]
public async Task<IActionResult> GetWatermarkedPdf(int id)
{
byte[] pdfBytes = await RetrievePdfBytesAsync(id);
if (pdfBytes is null || pdfBytes.Length == 0)
return NotFound("PDF document not found.");
using var pdfDocument = new PdfDocument(pdfBytes);
// HTML watermark applied to every page
string watermarkHtml = "<h2 style='color:red; opacity:0.4; font-family:Arial;'>CONFIDENTIAL</h2>";
pdfDocument.ApplyWatermark(
watermarkHtml,
rotation: 30,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center
);
return File(pdfDocument.BinaryData, "application/pdf");
}
[HttpGet("watermarked/{id}")]
public async Task<IActionResult> GetWatermarkedPdf(int id)
{
byte[] pdfBytes = await RetrievePdfBytesAsync(id);
if (pdfBytes is null || pdfBytes.Length == 0)
return NotFound("PDF document not found.");
using var pdfDocument = new PdfDocument(pdfBytes);
// HTML watermark applied to every page
string watermarkHtml = "<h2 style='color:red; opacity:0.4; font-family:Arial;'>CONFIDENTIAL</h2>";
pdfDocument.ApplyWatermark(
watermarkHtml,
rotation: 30,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center
);
return File(pdfDocument.BinaryData, "application/pdf");
}
Imports Microsoft.AspNetCore.Mvc
<HttpGet("watermarked/{id}")>
Public Async Function GetWatermarkedPdf(id As Integer) As Task(Of IActionResult)
Dim pdfBytes As Byte() = Await RetrievePdfBytesAsync(id)
If pdfBytes Is Nothing OrElse pdfBytes.Length = 0 Then
Return NotFound("PDF document not found.")
End If
Using pdfDocument As New PdfDocument(pdfBytes)
' HTML watermark applied to every page
Dim watermarkHtml As String = "<h2 style='color:red; opacity:0.4; font-family:Arial;'>CONFIDENTIAL</h2>"
pdfDocument.ApplyWatermark(
watermarkHtml,
rotation:=30,
verticalAlignment:=VerticalAlignment.Middle,
horizontalAlignment:=HorizontalAlignment.Center
)
Return File(pdfDocument.BinaryData, "application/pdf")
End Using
End Function
ApplyWatermarkメソッドは標準の HTML と CSS を受け入れるため、フォント、色、透明度、位置を完全に制御できます。 透かしはドキュメント内のすべてのページに自動的に適用されます。 画像へのスタンプ挿入、ヘッダーとフッターの追加、複数のドキュメントの結合など、 PDF操作に関するその他の機能については、 IronPDFのドキュメントを参照してください。
アップロードした PDF を SQL Server にどのように保存しますか?
ラウンドトリップを完了するには、受信したフォーム ファイルを読み取ってデータベースに書き込むアップロード エンドポイントが必要です。 これを上記の検索エンドポイントと組み合わせて、完全なドキュメント管理システムを形成します。
[HttpPost("upload")]
public async Task<IActionResult> UploadPdf(IFormFile file)
{
if (file is null || file.Length == 0)
return BadRequest("No file uploaded.");
if (!file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase))
return BadRequest("Only PDF files are accepted.");
using var memoryStream = new MemoryStream();
await file.CopyToAsync(memoryStream);
byte[] pdfBytes = memoryStream.ToArray();
// Validate using IronPDF before storage
using var pdfDocument = new PdfDocument(pdfBytes);
await using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
const string insertQuery = @"
INSERT INTO PdfDocuments (FileName, FileContent)
VALUES (@FileName, @FileContent);
SELECT SCOPE_IDENTITY();";
await using var command = new SqlCommand(insertQuery, connection);
command.Parameters.AddWithValue("@FileName", file.FileName);
command.Parameters.AddWithValue("@FileContent", pdfDocument.BinaryData);
var newId = Convert.ToInt32(await command.ExecuteScalarAsync());
return Ok(new { id = newId, fileName = file.FileName });
}
[HttpPost("upload")]
public async Task<IActionResult> UploadPdf(IFormFile file)
{
if (file is null || file.Length == 0)
return BadRequest("No file uploaded.");
if (!file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase))
return BadRequest("Only PDF files are accepted.");
using var memoryStream = new MemoryStream();
await file.CopyToAsync(memoryStream);
byte[] pdfBytes = memoryStream.ToArray();
// Validate using IronPDF before storage
using var pdfDocument = new PdfDocument(pdfBytes);
await using var connection = new SqlConnection(_connectionString);
await connection.OpenAsync();
const string insertQuery = @"
INSERT INTO PdfDocuments (FileName, FileContent)
VALUES (@FileName, @FileContent);
SELECT SCOPE_IDENTITY();";
await using var command = new SqlCommand(insertQuery, connection);
command.Parameters.AddWithValue("@FileName", file.FileName);
command.Parameters.AddWithValue("@FileContent", pdfDocument.BinaryData);
var newId = Convert.ToInt32(await command.ExecuteScalarAsync());
return Ok(new { id = newId, fileName = file.FileName });
}
Imports System
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Http
Imports Microsoft.AspNetCore.Mvc
Imports System.Data.SqlClient
Imports IronPdf
<HttpPost("upload")>
Public Async Function UploadPdf(file As IFormFile) As Task(Of IActionResult)
If file Is Nothing OrElse file.Length = 0 Then
Return BadRequest("No file uploaded.")
End If
If Not file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase) Then
Return BadRequest("Only PDF files are accepted.")
End If
Using memoryStream As New MemoryStream()
Await file.CopyToAsync(memoryStream)
Dim pdfBytes As Byte() = memoryStream.ToArray()
' Validate using IronPDF before storage
Using pdfDocument As New PdfDocument(pdfBytes)
Await Using connection As New SqlConnection(_connectionString)
Await connection.OpenAsync()
Const insertQuery As String = "
INSERT INTO PdfDocuments (FileName, FileContent)
VALUES (@FileName, @FileContent);
SELECT SCOPE_IDENTITY();"
Await Using command As New SqlCommand(insertQuery, connection)
command.Parameters.AddWithValue("@FileName", file.FileName)
command.Parameters.AddWithValue("@FileContent", pdfDocument.BinaryData)
Dim newId As Integer = Convert.ToInt32(Await command.ExecuteScalarAsync())
Return Ok(New With {.id = newId, .fileName = file.FileName})
End Using
End Using
End Using
End Using
End Function
PdfDocument を使用して保存前に検証することで、解析可能で整形式の PDF ファイルのみがデータベースに格納されることが保証されます。 バイト配列が破損または切り捨てられている場合、 IronPDF は例外をスローします。この例外をキャッチして、400 Bad Request レスポンスとして返すことができます。
PDF ストレージの主要なテーブルと列の種類は何ですか?
使用するスキーマは、クエリのパフォーマンスとストレージ効率に影響します。 次の表は、SQL Server に推奨される列構成を示しています。
| 列 | データ型 | 目的 |
|---|---|---|
| Id | INT IDENTITY | 主キー、自動増分 |
| FileName | NVARCHAR(255) | ダウンロードヘッダーの元のファイル名 |
| FileContent | VARBINARY(MAX) | 生の PDF バイナリ データ (BLOB) |
| ContentType | NVARCHAR(100) | MIME タイプ (例: application/pdf) |
| FileSizeBytes | BIGINT | クォータ管理のための保存サイズ |
| UploadedAt | DATETIME2 | 監査用のUTCタイムスタンプ |
| UploadedBy | NVARCHAR(100) | アクセス制御のためのユーザーID |
SQL Server ファイル ストリーミングが必要な大規模システムの場合、Microsoft は、T-SQL によるクエリが可能でありながら、大きな BLOB をファイル システムに格納する代替手段としてFILESTREAM 機能を文書化しています。 しかし、数百メガバイトまでのドキュメントを提供するほとんどのASP.NETアプリケーションでは、行内ストレージがうまく機能し、デプロイが簡素化されます。
エラーを処理してパフォーマンスを最適化するにはどうすればよいでしょうか?
運用環境で信頼性の高い PDF を取得するには、データベース、 IronPDF、HTTP 応答の各レイヤーでエラー処理が必要です。 以下の表は主要なプラクティスをまとめたものです。
| 懸念 | 推奨事項 | 理由 |
|---|---|---|
| 接続の破棄 | `await using`ステートメント | 接続プールの枯渇を防ぐ |
| Pdf文書の処分 | ステートメント`using` | 管理されていないメモリを速やかに解放する |
| SQLインジェクション | パラメータ化されたクエリのみ | 悪意のある入力によるクエリの変更を防止 |
| ファイルタイプの検証 | MIMEタイプとマジックバイトを確認する | 保存前にPDF以外のアップロードをブロックします |
| 大容量ファイルの処理 | `FileStreamResult`によるストリーム応答 | ファイル全体をサーバーメモリにロードすることを回避します |
| キャッシング | `IMemoryCache`または`IDistributedCache`を使用する | データベースの繰り返しラウンドトリップを削減 |
| 非同期操作 | 全体を通して`async` / `await` | ディスクとネットワークの待機中にスレッドを空けておく |
接続文字列の管理については、値を appsettings.json に格納し、ソースファイルにハードコーディングしないでください。 ローカル開発中はASP.NET Core の組み込みシークレット管理を使用し、運用環境では Azure Key Vault または AWS Secrets Manager を使用します。 接続文字列またはライセンス キーをソース管理にコミットしないでください。
大きな PDF ファイルを処理する場合、バイト配列全体をメモリにロードするのではなく、FileStreamResult と MemoryStream を返すことを検討してください。 非常に大きなドキュメント (100 MB を超える) の場合、 SQL Server FILESTREAM API を使用すると、ファイル システムから直接チャンク ストリーミングを実行できます。
頻繁にアクセスされるドキュメントのキャッシュ
特定の PDF ファイル (たとえば、利用規約文書や製品カタログ) が繰り返し要求される場合、バイト配列を IMemoryCache にキャッシュすることで、データベースへの繰り返しのラウンドトリップを回避できます。 IMemoryCache を Program.cs に builder.Services.AddMemoryCache() と共に登録し、それをコントローラに注入して、データベースにクエリを実行する前にキャッシュを確認します。 ドキュメントの予想される更新頻度に一致する絶対的な有効期限を設定します。 ドキュメントが更新されると、キーによってキャッシュされたエントリが削除され、次のリクエストで新しいバージョンが取得されます。
分散シナリオ(複数のサーバーインスタンスによるロードバランシングされたデプロイメントなど)の場合は、IMemoryCache を Redis または SQL Server をバックエンドとする IDistributedCache に置き換えます。 ASP.NET Core の分散キャッシュ抽象化により、コントローラー コードはほぼ同じままになります。 Program.cs の登録のみが変更されます。
IronPDFを使用して PDF 取得をクロスプラットフォームで展開するにはどうすればよいですか?
IronPDF は、別途 Chromium をインストールしたり構成を変更したりすることなく、Linux、Windows、macOS で実行されます。 同じNuGetパッケージがすべてのプラットフォームをターゲットとするため、次のどちらにデプロイしても PDF コントローラーは同じように動作します。
- IIS を搭載した Windows Server
- Docker または Kubernetes 上の Ubuntu コンテナ
- Azure App Service (Linux または Windows)
- AWS エラスティック ビーンズトーク
DockerとLinuxへのデプロイ
Docker デプロイの場合は、Dockerfile にIronPDF の依存関係を追加してください。IronPDF Linux ドキュメントには、Debian および Alpine ベースイメージに必要な apt パッケージが記載されています。 典型的なマルチステージDockerfileは、ランタイムイメージステージでOSの依存関係をインストールし、その上に公開済みのASP.NETアプリケーションをコピーします。Azureを使用する場合は、 AzureデプロイガイドでApp Serviceの構成について説明されており、大規模なPDFレンダリングをサポートするためのメモリとCPUの設定も含まれています。
IronPDF には独自の Chromium ベースのレンダリング エンジンがバンドルされているため、サーバーに別のブラウザーをインストールする必要はありません。 これにより、システム レベルのブラウザーを必要とするソリューションと比較して、Linux コンテナーのセットアップが大幅に簡素化されます。 IronPDFチームは、リリースごとに最も一般的な Linux ベース イメージに対してテストを行っているため、Alpine または Debian コンテナーがすぐに動作することを信頼できます。
ADO .NETの代わりに Entity Framework Core を使用する
IronPDF は、生の ADO .NETの代替としてEntity Framework Coreとも統合されます。 プロジェクトで既に EF Core を使用している場合は、FileContent 列をモデル クラスの byte[] プロパティにマッピングして、EF にクエリ生成を処理させることができます。 このアプローチにより、定型文が大幅に削減され、EF の LINQ プロバイダーを通じてフィルタリング、ページ区切り、監査動作を簡単に追加できるようになります。
トレードオフは、EF Core がエンティティ グラフの一部として BLOB 全体をメモリに読み込むことです。 非常に大きな PDF ファイルの場合は、完全なエンティティではなくバイト配列列のみを選択する投影を使用して、生の ADO .NETまたは EF Core の FromSql メソッドを使用することを検討してください。
次のステップは何ですか?
ASP.NET Coreで C# とIronPDFを使用して SQL Server データベースから PDF ファイルを取得するには、明確なパターンがあります。パラメーター化された SELECT を使用して BLOB 列をクエリし、バイトを PdfDocument にロードし、正しい Content-Disposition ヘッダーを持つバイナリ データを返します。 IronPDF は、ドキュメントがサーバーから送信される前に、ドキュメントを検証、透かし入れ、結合、または保護する機能を追加します。
IronPDF のドキュメント管理機能をさらに活用するには、次のリソースを参照してください。
- HTMLからのIronPDF PDF生成- PDFを動的に生成し、データベースに直接保存します
- IronPDF のPDF の結合と分割- 取得したドキュメントを 1 つのレスポンスに結合します
- IronPDF のセキュリティと権限- 機密文書を提供する前にパスワード保護を追加します
- IronPDF HTML to PDF チュートリアル- Web ページのコンテンツをアーカイブ用の PDF に変換する
- IronPDF PDF スタンプ- 取得したファイルにテキストと画像のスタンプを適用します
- IronPDFライセンス- 開発、ステージング、本番環境での使用に適したライセンス層を確認する
無料のIronPDF試用ライセンスから始めて、すべての機能を制限なくテストしてください。 トライアルでは透かし入りの出力が生成されます。 有料ライセンス キーを適用して透かしを削除します。 この記事で使用されているすべてのメソッドの完全なAPI リファレンス ドキュメントとコード サンプルは、 IronPDF Web サイトで入手できます。
プロジェクトで既にEntity Framework Coreを使用している場合は、 IronPDF EF Core統合ガイドで、 IronPDFの処理パイプラインを維持しながら、生のADO .NETをエンティティモデルに置き換える方法を説明しています.NET 10と最新のASP.NET Core機能を使用しているチームの場合、ここで説明するパターンは変更なしでそのまま使用できます。IronPDFは、アクティブなすべて for .NET LTSおよびSTSリリースをサポートしています。
IronPDF の価格設定ページを確認して、導入環境に適したライセンス レベルを見つけてください。 単一の開発者ライセンスでローカル開発とテストがカバーされます。 再配布ライセンスは、SaaS 製品および複数のサーバーを備えたオンプレミス展開で利用できます。
よくある質問
IronPDFとは?
IronPDFは.NETライブラリで、C#アプリケーションでPDFファイルの作成、編集、コンテンツの抽出を可能にします。
ASP.NETを使用してデータベースからPDFファイルを取得するにはどうすればよいですか?
ASP.NET で PDF フ ァ イ ルを デー タ ベース か ら 取得す る には、 C# コ ー ド を使っ てデー タ ベース に ク エ リ を実行 し 、 PDF デー タ をバ イ ト 配列に読み込みます。このバイト配列は必要に応じてIronPDFを使ってPDFをレンダリングしたり操作することができます。
なぜASP.NETアプリケーションでPDFを扱うのにIronPDFを使う必要があるのですか?
IronPDFは、PDFの生成、HTMLからの変換、操作を含む広範な機能を提供しており、ASP.NETと統合し、PDFを扱うための使いやすいAPIを提供しています。
ASP.NETでIronPDFを使うための前提条件は何ですか?
ASP.NETでIronPDFを使用するには、Visual Studioなど for .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ファイルを取得、操作することができます。


