ASP.NET içinde Veri Tabanından PDF Görüntüleme (Geliştirici Kılavuzu)
ASP.NET'te bir veritabanından PDF'leri görüntülemek için, saklanan ikili veriyi alın ve IronPDF'nin PdfDocument sınıfını kullanarak işleyin, bu sınıf bayt dizilerini verimli bir şekilde ele alır ve özelleştirme seçenekleriyle tarayıcı uyumlu çıktı sağlar.
ASP.NET'te PDF Veritabanı Görüntüleme Nedir?
ASP.NET uygulamalarında PDF belgeleri yönetimi, ç çoğunlukla PDF dosyalarını dosya sisteminden ziyade doğrudan bir veritabanında saklamayı içerir. Bu yöntem daha iyi güvenlik, merkezi yedekleme ve basitleştirilmiş dağıtım sunar. Ancak, doğru araçlar olmadan bir veritabanından PDF belgelerini almak ve görüntülemek zor olabilir.
PDF dosyalarının bir veritabanı tablosunda ikili veri olarak saklanması, belge erişimi ve sürüm kontrolü üzerinde daha iyi kontrol sağlar. Kullanıcılara PDF belgeleri göstermeniz gerektiğinde, veritabanından bayt dizisini verimli bir şekilde almanız ve tarayıcıda işlemeniz gerekir. IronPDF, ASP.NET uygulamalarında PDF belgeleri yönetimi için etkili bir API ile bu tüm süreci basitleştirir.
Bu öğretici, IronPDF'nin kanıtlanmış özelliklerinden yararlanarak ASP.NET'te veritabanından PDF görüntüleme işlevselliğini gösterir. Yükleme, saklama ve PDF dosyalarını optimal performans ve güvenlikle görüntülemeyi kapsayan tam bir çözüm oluşturmayı öğreneceksiniz. Kütüphane, üretim seviyesinde belge yönetim sistemleri oluşturmayı kolaylaştıran çeşitli işleme seçeneklerini ve gelişmiş PDF manipülasyon yeteneklerini destekler.
PDF Kütüphanesini ASP.NET Projenize Nasıl Kurarsınız?
PDF görüntüleme işlevselliğini uygulamadan önce ASP.NET projenizin IronPDF yüklü olduğundan emin olun. Visual Studio'da Paket Yöneticisi Konsolunu açın ve tercihinize bağlı olarak aşağıdaki komutlardan birini çalıştırın:
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
IronPDF'yi NuGet Package Manager arayüzü üzerinden proje Gezin sekmesinde IronPdf aratarak da yükleyebilirsiniz. Kurulumdan sonra, lisans anahtarınızı uygulama başlatıldığında ayarlayın:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Ücretsiz deneme lisansı değerlendirme sırasında tüm özelliklere tam erişim sağlar. Üretim dağıtımları için, projenizin ölçeğine uygun bir seçenek bulmak için mevcut lisans seviyelerini inceleyin.
Hangi Veritabanı Yapısı Gereklidir?
Veritabanı tablonuzun, PDF dosyalarını ikili veri olarak depolamak için bir varbinary(max) sütununa ihtiyaçı vardır. Daha iyi belge yönetimi için tablo, dosya adı, yükleme tarihi ve dosya boyutu gibi meta veri alanlarını içermelidir. Bu durumda uygun bir tablo oluşturmak için aşağıdaki SQL kullanılır:
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
Veritabanı bağlantısını kurmak için bağlantı dizenizi web.config dosyasında yapılandırın. PDF görüntüleyici uygulaması, veritabanından yüklenen dosyaları alıp PDF içeriğini sorunsuzca görüntülemek için bu bağlantıyı kullanacaktır.
Çözüm Hangi Ad Alanlarını Gerektirir?
Çözüm, standart ADO.NET ad alanlarını ve IronPDF ad alanını kullanır. Hiçbir üçüncü taraf ORM'ye ihtiyaçınız yoktur, doğrudan ADO.NET yaklaşımı bağımlılıkları en aza indirir ve sorgu yürütme üzerinde tam kontrol sağlar. Bağlantı dizginizin, PDF saklama tablonuzun bulunduğu bir SQL Server örneğini işaret ettiğinden emin olun.
PDF'ler İçin Veritabanı Tablosu Nasıl Oluşturulur?
PDF belgelerini saklamak için özel olarak tasarlanmış bir veritabanı tablosu oluşturarak başlayın. Tablo yapısı, hem ikili verileri hem de PDF belgelerinin yönetimi için gerekli olan temel meta verileri kapsamalıdır:
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
);
Bu tablo, her PDF dosyasını FileData sütununda bir bayt dizisi olarak depolar. varbinary(max) veri tipi, çoğu PDF belgesi için yeterli olacak şekilde 2 GB'a kadar dosyaları depolayabilir. FileName alanı, görüntüleme ve indirme amacıyla orijinal dosya adını korur.
PDF Alımı için Veritabanı Performansını Nasıl İyileştirebilirsiniz?
PDF belgelerini alırken daha iyi performans için sıkça sorgulanan sütunlara dizin eklemeyi düşünün. Aşağıdaki SQL, WHERE ve ORDER BY ifadelerinde görünmesi muhtemel sütunlar üzerinde dizinler oluşturur:
CREATE INDEX IX_PdfDocuments_UploadDate
ON PdfDocuments(UploadDate DESC);
CREATE INDEX IX_PdfDocuments_FileName
ON PdfDocuments(FileName);
Bu yapı, gerektiğinde ek meta veri alanları ekleyebilme esnekliğini korurken yüklenen dosyaların verimli bir şekilde saklanmasını ve alınmasını sağlar. Çok büyük PDF dosyaları için, veritabanı depolamanın mimariniz için uygun olup olmadığını veya dosyaları disk veya nesne depolamada saklayarak yalnızca meta verileri veritabanında tutmanın ölçekli bir şekilde daha iyi performans göstereceği hibrit bir yaklaşımı değerlendirmenizi öneririz.
| Strateji | En İyi Kullanım Amacı | Avantajlar | Hususlar |
|---|---|---|---|
| Veritabanı (VARBINARY) | Küçük ila orta boyutlu dosyalar, yüksek güvenlik | İşlemsel tutarlılık, merkezi yedekleme | Veritabanı boyutunu hızla artırabilir |
| Dosya Sistemi | Büyük dosyalar, yüksek veri işleme hızı | Hızlı dosya IO, düşük veritabanı yükü | Ayrı bir yedekleme stratejisi gerektirir |
| Nesne Depolama (Azure Blob/S3) | Bulut dağıtımları, sınırsız ölçeklenebilirlik | Maliyet açısından etkin, yüksek kullanılabilirlik | Ek SDK bağımlılığı |
PDF Dosyalarını Veritabanına Nasıl Yüklersiniz?
Yükleme fonksiyonunu ASP.NET'in FileUpload kontrolünü kullanarak uygulayın. Doğru doğrulama ile form elementinin içinde .aspx sayfanıza bu HTML işaretlemesini ekleyin:
<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>
Örnek Kullanıcı Arayüzü Çıktısı

Dosya Yükleme Olaylarını Nasıl Yönetirsiniz?
Yükleme düğmesi, sunucu tarafı olay işleyiciyi tetikler. İşte yüklenen dosyaları bir bayt dizisine dönüştüren ve doğru hata yönetimi ile bunları saklayan yükleme işlevinin tam uygulaması:
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
Bu kod, veritabanında yalnızca geçerli PDF dosyalarının saklanmasını sağlamak için yüklemeden önce dosya türünü doğrular. Bayt dizisi dönüşümü FileBytes özelliği aracılığıyla otomatik olarak gerçekleşir. Ek doğrulamalar, PDF bütünlüğünün ve dosya boyutu sınırlarının kontrol edilmesini içerir. IronPDF kullanarak bayt dizisini kaydetmeden önce açmak, dosyanın yalnızca uzantısı değiştirilmiş bir dosya yerine gerçek, ayrıştırılabilir bir PDF belgesi olduğunu doğrular.
Yüklenen Dosyalarla Kullanıcı Arayüzü

Veritabanından PDF'ler Nasıl Alınır ve Görüntülenir?
IronPDF, veritabanından alınan PDF belgelerinin render edilmesinde üstünlük sağlar. Kütüphane, gelişmiş render yetenekleri ile PDF içeriğini tarayıcılarda görüntülemek için birden fazla seçenek sunar. Önce veritabanı tablonuzdan ikili veriyi alın, sonra bunu işleme için IronPDF'e aktarın ve ardından müşteri tarafına tekrar akıtın:
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
ViewPdfDocument yöntemi, uygun güvenlik ayarlarıyla belgeyi istemciye geri yansıtır. İçerik yerleşimi inline, tarayıcıya PDF'yi indirmek yerine görüntülemesini söyler. Yazdırma izinleri ve kopyala-yapıştır kısıtlamaları gibi güvenlik ayarlarını belge politika gereksinimlerinize uyacak şekilde ayarlayabilirsiniz.
PDF Render Parametrelerini Nasıl Yönetirsiniz?
SQL komutu için parametreler, birincil anahtarıyla belirli bir PDF'yi güvenli bir şekilde almak için kritik öneme sahiptir. Parametrik sorgular, SQL enjeksiyon saldırılarını önler ve doğru veri bağlamasını sağlar. İkili veri elde edildikten sonra, IronPDF bir MemoryStream yüklemesi gerçekleştirir ve belge tarayıcıya gönderilmeden önce daha fazla düzenleme için tam erişim sağlar.
Yüklenen Bir PDF Dosyası Görüntüleme

PDF'lere Görüntülemeden Önce Hangi İleri Düzey Özellikler Eklenebilir?
IronPDF'in PDF işleme yetenekleri basit görüntülemenin ötesine uzanır. Bir PDF'yi filigran, başlıklar ve altbilgiler ve dijital imzalar ile render etmeden önce manipüle edebilirsiniz:
// 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
Filigranlı PDF Görüntüleme

Filigranlama, kullanıcıların görmesine ancak kelimesi kelimesine kopyalamamasına izin verilen belgeleri görüntülerken özellikle yararlıdır. PDF'yi görüntülemeden önce metin çıkartabilir ve arama dizinleri oluşturabilir veya belirli sayfaları küçük resim oluşturma için resimlere dönüştürebilirsiniz.
Bu Yaklaşım Üretim Uygulamaları için Neden İyi Çalışır?
ADO.NET ile IronPDF'i birleştirmek, küçük iç araçlardan kurumsal belge yönetim sistemlerine kadar ölçeklenebilir bir model sunar. Yaklaşım tamamen sunucu tarafındadır -- istemci tarafında PDF render kütüphanesi gerekmez ve doğru MIME türü döndüğünde tarayıcının yerleşik PDF görüntüleyicisi gösterimi yönetir.
Bu modelin temel güçlü yönleri şunlardır:
- Yükleme anında doğrulama: IronPDF, dosya veritabanına ulaşmadan önce açarak bozuk veya PDF olmayan dosyaları hemen reddeder.
- Görüntüleme anında güvenlik kontrolü: Yazdırma ve kopyala-yapıştır izinleri, baytlar tarayıcıya ulaşmadan önce IronPDF tarafından uygulanır.
- Minimal istemci tarafı kod: Tarayıcı, yerel olarak render etmeyi gerektirir, JavaScript karmaşıklığını azaltır.
- Esnek ön işleme: Sunucu tarafı yöntemin tamamında HTML dizesini PDF'ye dönüştürme, belgelerde birleştirme ve ayırma işlemleri veya özel filigran ekleyebilirsiniz - bu esneklik sağlanır.
Tarayıcı Entegrasyonu ve İndirme Seçeneklerini Nasıl Yönetirsiniz?
Daha iyi web entegrasyonu için, belgeleri yeni bir sekmede açmak için JavaScript kullanın, mevcut sayfanın yerine geçmeyin. Bu, kullanıcıların belge listesini gözden geçirirken daha iyi bir deneyim sağlar:
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';
}
İndirme yolu, aynı veritabanı alma mantığını izler fakat içerik yerleşimi olarak inline yerine attachment kullanır. Bu, tarayıcıyı dosyayı görüntülemek yerine kaydetmeye zorlar. Her iki yol da veri erişim kodunu DRY tutarak aynı GetPdfFromDatabase yardımcıyı paylaşır.
Form tabanlı belge iş akışları için IronPDF'in PDF form doldurma yeteneklerini keşfedin -- bir belgeyi görüntülemeden veya indirmeden önce form alanlarını önceden doldurabilirsiniz, bu, fatura oluşturma ve sözleşme yönetim senaryoları için yararlıdır.
PDF Sunumu İçin Güvenlik Hususları Nelerdir?
Her zaman isteyen kullanıcının, istenen döküman ID'sine erişim izninin olduğunu doğrulayın, yoksa baytları sunmayın. Bir sorgu dizisinde basit bir tamsayı ID, numaralanması kolaydır -- yetkilendirme denetimleri olmadan, kimlik doğrulanmış herhangi bir kullanıcı ID'leri tahmin ederek herhangi bir dökümanı görüntüleyebilir.
En iyi uygulamalar şunları içerir:
- Geçerli kullanıcı kimliğine karşı doğrulamak için bir
CreatedByveyaOwnerIdsütunu depolayın veFileDatasorgulamadan önce bunu doğrulayın. - Belge tanımlayıcılar olarak peş peşe gelen tamsayılar yerine GUID'ler kullanın, bu sayede numaralandırmayı zorlaştırın. Uygulamanızın dışında erişilse bile dosyanın kendisinin korunması için çok hassas belgeler için yükleme anında PDF parola koruması uygulayın.
- Audit izi için tüm görüntüleme ve indirme olaylarını kaydedin.
ASP.NET güvenlik kalıplarıyla ilgili dış başvurular için OWASP ASP.NET Güvenlik Cheat Sheet ve Microsoft'un ASP.NET için güvenli kodlama kılavuzları otoriter rehberlik sağlar. IronPdf için NuGet galeri girişi, ayrıca sürüm geçmişi ve bağımlılıkları belgeliyor.
PDF Veritabanı Görüntülemeyle Nasıl Başlarsınız?
Kendi projenizde bu çözümü uygulamak için:
- IronPDF'yi NuGet aracılığıyla yükleyin (
Install-Package IronPdfveyadotnet add package IronPdf). - Yukarıdaki SQL şemasını kullanarak
PdfDocumentstablosunu oluşturun. .aspx kod dosyanızın arkasına yükleme işleyicisini ekleyin. IronPDF aracılığıyla baytları yayarak görüntüleme ve indirme işleyicilerini ekleyin. GridView'e işleyicilere işaret eden satır komutları ekleyin.
IronPDF özellik setini keşfederek belge yönetimi iş akışlarına doğal bir şekilde uyum sağlayan HTML'den PDF'ye dönüştürme ve PDF birleştirme ve ayırma gibi ek yetenekleri keşfedebilirsiniz. ücretsiz bir deneme başlatarak, bir lisansa taahhüt oluşturmadan önce tam API'yi test edin.
Sıkça Sorulan Sorular
ASP.NET'te veritabanından PDF görüntülemenin ana odak noktası nedir?
Ana odak, geliştiricilere, ASP.NET web uygulaması içinde doğrudan bir veritabanından PDF'leri görüntülemek için etkili yöntemler sunarak projenin işlevselliğini ve kullanıcı deneyimini artırmaktır.
IronPDF, ASP.NET'te bir veritabanından PDF'leri görüntüleme konusunda nasıl yardımcı olabilir?
IronPDF, veritabanı depolamasından PDF'leri sorunsuz bir şekilde işlemek için sağlam kütüphaneler sağlayarak süreci basitleştirebilir ve ASP.NET uygulamalarına sorunsuz bir entegrasyon sağlar.
ASP.NET'te PDF görüntüleme için IronPDF kullanmanın avantajları nelerdir?
IronPDF kullanmanın avantajları arasında kolay entegrasyon, yüksek kaliteli işleme ve çeşitli PDF özellikleri için destek bulunur, bu da ASP.NET uygulamanızın kullanılabilirliğini ve performansını önemli ölçüde artırabilir.
IronPDF, veritabanından büyük PDF dosyalarını verimli bir şekilde işleyebilir mi?
Evet, IronPDF, büyük PDF dosyalarını verimli bir şekilde işlemek için tasarlanmıştır ve hızlı yükleme ve işleme sürelerini sağlar, bu da uygulama performansını sürdürmek için çok önemlidir.
ASP.NET'te IronPDF kullanarak PDF görüntülemeyi özelleştirmek mümkün mü?
Kesinlikle, IronPDF geliştiricilere ASP.NET ortamında PDF görüntülemeyi kendi özel gereksinimlerine göre özelleştirme imkanı veren çeşitli özelleştirme seçenekleri sunar.
IronPDF, ASP.NET uygulamalarında hangi dosya formatlarını PDF'ye dönüştürebilir?
IronPDF, ASP.NET uygulamalarında dinamik içerik oluşturma için özellikle yararlı olabilecek, HTML, görüntüler ve daha fazlası gibi çeşitli dosya formatlarını PDF'lere dönüştürmeyi destekler.
IronPDF, ASP.NET uygulamaları için güvenli PDF işlemini destekliyor mu?
Evet, IronPDF, ASP.NET uygulamaları içinde hassas bilgilerin korunmasına yardımcı olan şifreleme ve parola koruması da dahil olmak üzere güvenli PDF işlemini destekler.
IronPDF, ileri düzey işlevsellik için diğer Iron Software ürünleriyle entegre edilebilir mi?
Evet, IronPDF, ASP.NET uygulamalarında belge yönetimi ve işleme için kapsamlı çözümler sağlamak amacıyla IronOCR ve IronBarcode gibi diğer Iron Software ürünleriyle entegre edilebilir.




