ASP.NET Core ile C#'da PDF Dosyalarını Nasıl Yükler ve İndirirsiniz
ASP.NET Core'da PDF dosyaları yüklemek ve indirmek, binary verileri yönetmeyi, denetleyici eylemlerini ele almayı ve, isteğe bağlı olarak, belgeleri sunucu tarafında depolama veya teslimat öncesi işlemeyi gerektirir. IronPDF ile, sadece dosya depolamanın ötesine geçebilir, filigranlar uygulayabilir, HTML'den PDF'ler oluşturabilir ve işlenmiş belgeleri kullanıcılarına geri döndürebilirsiniz, bunu mevcut MVC boru hattınız içinde yapabilirsiniz. Bu kılavuz, .NET 10 kullanarak C#'ta eksiksiz bir yükleme-indirme iş akışının nasıl oluşturulacağını adım adım anlatmaktadır.
IronPDF ASP.NET Core Projeye Nasıl Yüklenir?
Herhangi bir yükleme veya indirme mantığı yazmadan önce, IronPDF'u NuGet Paket Yöneticisi veya .NET CLI kullanarak projenize ekleyin. Paket Yöneticisi Konsolunda Install-Package IronPdf kullanın veya aşağıdaki CLI komutları ile yeni bir MVC projesi oluşturup gerekli tüm paketleri bir kerede ekleyin.
dotnet new mvc -n PdfManager --framework net10.0
cd PdfManager
dotnet add package IronPdf
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet new mvc -n PdfManager --framework net10.0
cd PdfManager
dotnet add package IronPdf
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
Yüklendikten sonra, IronPDF, HTML'den PDF oluşturmak için ChromePdfRenderer, mevcut dosyaları yüklemek ve işlemek için PdfDocument ve filigranlar, damgalar ve dijital imzalar dahil olmak üzere bir dizi düzenleme aracı sunar. Sürüm geçmişi ve uyumluluk notları için tam IronPDF NuGet paket sayfasını inceleyebilirsiniz.
Projeyi Kurma
Program.cs kısmına bir depolama yolu sabiti ekleyin ve ApplicationDbContext 'inizi bağımlılık enjeksiyon konteynerine kaydedin. Proje yapınız, herhangi bir PDF'ye özgü mantık yazmadan önce bir Controllers/PdfController.cs, bir Models/PdfFileModel.cs ve bir Data/ApplicationDbContext.cs içerecektir.
PDF Depolama için Veritabanı Modeli Nasıl Oluşturulur?
Herhangi bir PDF yükleme sisteminin temeli, bir veritabanı tablosuna eşleme yapan bir model sınıfıdır. Aşağıdaki C# kaydı, esas alanları yakalar -- dosya adı, içerik türü, ham binary veri ve yükleme zaman damgası.
public class PdfFileModel
{
public int Id { get; set; }
public string FileName { get; set; } = string.Empty;
public string ContentType { get; set; } = "application/pdf";
public byte[] FileData { get; set; } = Array.Empty<byte>();
public DateTime UploadedDate { get; set; } = DateTime.UtcNow;
}
public class PdfFileModel
{
public int Id { get; set; }
public string FileName { get; set; } = string.Empty;
public string ContentType { get; set; } = "application/pdf";
public byte[] FileData { get; set; } = Array.Empty<byte>();
public DateTime UploadedDate { get; set; } = DateTime.UtcNow;
}
Public Class PdfFileModel
Public Property Id As Integer
Public Property FileName As String = String.Empty
Public Property ContentType As String = "application/pdf"
Public Property FileData As Byte() = Array.Empty(Of Byte)()
Public Property UploadedDate As DateTime = DateTime.UtcNow
End Class
FileData, PDF'yi büyük bir ikili nesne (BLOB) olarak saklar. Bu yaklaşım, belgeleri veritabanı içinde kendi başına içerir, yedeklemeleri basitleştirir ve sorgulamaları basit hale getirir. Yüksek hacimli senaryolar veya büyük dosyalar için, yalnızca dosya yolunu veritabanında depolayıp binary'yi Azure Blob Storage veya Amazon S3 gibi bir bulut depolama kovasına yazmayı düşünün.
Entity Framework Core'u Yapılandırma
Modeli EF Core ile kaydedin ve bu işlemi DbSet<PdfFileModel> özelliğini ApplicationDbContext 'ınıza ekleyerek gerçekleştirin:
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
public DbSet<PdfFileModel> PdfFiles { get; set; }
}
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
public DbSet<PdfFileModel> PdfFiles { get; set; }
}
Imports Microsoft.EntityFrameworkCore
Public Class ApplicationDbContext
Inherits DbContext
Public Sub New(options As DbContextOptions(Of ApplicationDbContext))
MyBase.New(options)
End Sub
Public Property PdfFiles As DbSet(Of PdfFileModel)
End Class
Şemayı oluşturmak için dotnet ef migrations add InitialCreate ardından dotnet ef database update çalıştırın. Entity Framework Core, byte[] 'u SQL Server'da bir varbinary(max) sütununa veya SQLite'da bir BLOB sütununa otomatik olarak eşler -- manuel SQL gerekmez.
ASP.NET Core Denetleyicisinde PDF Dosyalarını Nasıl Yükler?
Yüklemeleri yöneten denetleyici eylemi, HTML formundan IFormFile parametresini enctype="multipart/form-data" kullanarak alır. Eylem, akışı bir MemoryStream içine okur, bunu bir bayt dizisine dönüştürür ve sonucu Entity Framework Core yoluyla kalıcı hale getirir.
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
public class PdfController : Controller
{
private readonly ApplicationDbContext _context;
public PdfController(ApplicationDbContext context)
{
_context = context;
}
[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
if (file is null || file.Length == 0)
return BadRequest("No file selected.");
if (!file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase))
return BadRequest("Only PDF files are accepted.");
using var stream = new MemoryStream();
await file.CopyToAsync(stream);
var pdfFile = new PdfFileModel
{
FileName = Path.GetFileName(file.FileName),
ContentType = file.ContentType,
FileData = stream.ToArray(),
UploadedDate = DateTime.UtcNow
};
_context.PdfFiles.Add(pdfFile);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
public async Task<IActionResult> Index()
{
var files = await _context.PdfFiles
.Select(f => new { f.Id, f.FileName, f.UploadedDate })
.ToListAsync();
return View(files);
}
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
public class PdfController : Controller
{
private readonly ApplicationDbContext _context;
public PdfController(ApplicationDbContext context)
{
_context = context;
}
[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
if (file is null || file.Length == 0)
return BadRequest("No file selected.");
if (!file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase))
return BadRequest("Only PDF files are accepted.");
using var stream = new MemoryStream();
await file.CopyToAsync(stream);
var pdfFile = new PdfFileModel
{
FileName = Path.GetFileName(file.FileName),
ContentType = file.ContentType,
FileData = stream.ToArray(),
UploadedDate = DateTime.UtcNow
};
_context.PdfFiles.Add(pdfFile);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
public async Task<IActionResult> Index()
{
var files = await _context.PdfFiles
.Select(f => new { f.Id, f.FileName, f.UploadedDate })
.ToListAsync();
return View(files);
}
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.EntityFrameworkCore
Imports System.IO
Imports System.Threading.Tasks
Public Class PdfController
Inherits Controller
Private ReadOnly _context As ApplicationDbContext
Public Sub New(context As ApplicationDbContext)
_context = context
End Sub
<HttpPost>
Public Async Function Upload(file As IFormFile) As Task(Of IActionResult)
If file Is Nothing OrElse file.Length = 0 Then
Return BadRequest("No file selected.")
End If
If Not file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase) Then
Return BadRequest("Only PDF files are accepted.")
End If
Using stream As New MemoryStream()
Await file.CopyToAsync(stream)
Dim pdfFile As New PdfFileModel With {
.FileName = Path.GetFileName(file.FileName),
.ContentType = file.ContentType,
.FileData = stream.ToArray(),
.UploadedDate = DateTime.UtcNow
}
_context.PdfFiles.Add(pdfFile)
Await _context.SaveChangesAsync()
End Using
Return RedirectToAction(NameOf(Index))
End Function
Public Async Function Index() As Task(Of IActionResult)
Dim files = Await _context.PdfFiles _
.Select(Function(f) New With {f.Id, f.FileName, f.UploadedDate}) _
.ToListAsync()
Return View(files)
End Function
End Class
Yüklenen Dosyaların Doğrulanması
İçerik türünü işlemden önce her zaman doğrulayın. file.ContentType kontrolü, kullanıcıların yanlışlıkla PDF olmayan içerik yüklemesine karşı koruma sağlar. Daha güçlü bir doğrulama için, akışın ilk dört baytını okuyun ve PDF sihirli numarasını (%PDF) doğrulayın. Akışı kopyalamadan önce file.Length kontrol ederek 10 MB gibi genel belge iş akışları için tipik olan maksimum dosya boyutunu da uygulayın.
Bu eylemi tetikleyen HTML formunun iki özelliğe ihtiyaçı vardır: method="post" ve enctype="multipart/form-data". Kodlama türü olmadan, tarayıcılar dosya adını binary içerik yerine düz metin olarak gönderir. Form etiketine içindeki bir <input type="file" name="file" accept=".pdf" /> öğesi ve /Pdf/Upload işaret eden bir gönder butonu ekleyin.

Yüklenen bir PDF'e nasıl bir filigran ekleyip kaydetmeden önce işlenir?
Depolama öncesinde sunucu tarafında dosya işleme, IronPDF'in filigran ekleme özellikleri için en pratik kullanımlardan biridir. Gelen her belgeye, baytlar veri tabanına ulaşmadan önce "GİZLİ" etiketi, bir şirket logosu veya "TASLAK" uyarısı damgalayabilirsiniz.
[HttpPost]
public async Task<IActionResult> UploadWithWatermark(IFormFile file)
{
if (file is null || file.Length == 0)
return BadRequest("No file selected.");
using var stream = new MemoryStream();
await file.CopyToAsync(stream);
byte[] originalBytes = stream.ToArray();
// Load the uploaded file into IronPDF
var pdf = new IronPdf.PdfDocument(originalBytes);
// Apply an HTML watermark centered on every page
pdf.ApplyWatermark(
"<h2 style='color:red;opacity:0.4'>CONFIDENTIAL</h2>",
rotation: 45,
opacity: 60,
verticalAlignment: IronPdf.Editing.VerticalAlignment.Middle,
horizontalAlignment: IronPdf.Editing.HorizontalAlignment.Center
);
var pdfFile = new PdfFileModel
{
FileName = Path.GetFileName(file.FileName),
ContentType = "application/pdf",
FileData = pdf.BinaryData,
UploadedDate = DateTime.UtcNow
};
_context.PdfFiles.Add(pdfFile);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
[HttpPost]
public async Task<IActionResult> UploadWithWatermark(IFormFile file)
{
if (file is null || file.Length == 0)
return BadRequest("No file selected.");
using var stream = new MemoryStream();
await file.CopyToAsync(stream);
byte[] originalBytes = stream.ToArray();
// Load the uploaded file into IronPDF
var pdf = new IronPdf.PdfDocument(originalBytes);
// Apply an HTML watermark centered on every page
pdf.ApplyWatermark(
"<h2 style='color:red;opacity:0.4'>CONFIDENTIAL</h2>",
rotation: 45,
opacity: 60,
verticalAlignment: IronPdf.Editing.VerticalAlignment.Middle,
horizontalAlignment: IronPdf.Editing.HorizontalAlignment.Center
);
var pdfFile = new PdfFileModel
{
FileName = Path.GetFileName(file.FileName),
ContentType = "application/pdf",
FileData = pdf.BinaryData,
UploadedDate = DateTime.UtcNow
};
_context.PdfFiles.Add(pdfFile);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
<HttpPost>
Public Async Function UploadWithWatermark(file As IFormFile) As Task(Of IActionResult)
If file Is Nothing OrElse file.Length = 0 Then
Return BadRequest("No file selected.")
End If
Using stream As New MemoryStream()
Await file.CopyToAsync(stream)
Dim originalBytes As Byte() = stream.ToArray()
' Load the uploaded file into IronPDF
Dim pdf = New IronPdf.PdfDocument(originalBytes)
' Apply an HTML watermark centered on every page
pdf.ApplyWatermark(
"<h2 style='color:red;opacity:0.4'>CONFIDENTIAL</h2>",
rotation:=45,
opacity:=60,
verticalAlignment:=IronPdf.Editing.VerticalAlignment.Middle,
horizontalAlignment:=IronPdf.Editing.HorizontalAlignment.Center
)
Dim pdfFile As New PdfFileModel With {
.FileName = Path.GetFileName(file.FileName),
.ContentType = "application/pdf",
.FileData = pdf.BinaryData,
.UploadedDate = DateTime.UtcNow
}
_context.PdfFiles.Add(pdfFile)
Await _context.SaveChangesAsync()
Return RedirectToAction(NameOf(Index))
End Using
End Function
Filigran Yapılandırma Seçenekleri
IronPDF'nin ApplyWatermark yöntemi bir HTML dizesini kabul eder, bu da filigranınızın herhangi bir geçerli HTML ve satır içi CSS içerebileceği anlamına gelir -- gradyanlar, özel yazı tipleri, döndürülen metin veya hatta gömülü SVG simgeler dahil. rotation parametresi filigranı sayfa çaprazında döndürürken, opacity 0'dan (görünmez) 100'e (tamamen opak) kadar şeffaflığı kontrol eder.
Filigranların ötesinde, aynı PdfDocument nesnesi başlıklar ve altbilgiler eklemek, görüntü damgalamak ve mevcut form alanlarını düzenlemek için yöntemlere sahiptir. Son bayt dizisini almak için pdf.BinaryData çağırmadan önce birden çok işlem adımını zincirleyebilirsiniz.

Veritabanında saklanan PDF Dosyalarını nasıl indirirsiniz?
Kaydedilen bir PDF dosyasını tarayıcıya geri göndermek için kaydı ID ile alıp bir FileResult olarak iade edin. ASP.NET Core File yardımcı yöntemi doğru Content-Type başlığını ayarlar ve tarayıcının indir ama dialog kutusunu orijinal dosya adıyla tetikler.
public async Task<IActionResult> Download(int id)
{
var pdfFile = await _context.PdfFiles.FindAsync(id);
if (pdfFile is null)
return NotFound();
return File(pdfFile.FileData, pdfFile.ContentType, pdfFile.FileName);
}
public async Task<IActionResult> Download(int id)
{
var pdfFile = await _context.PdfFiles.FindAsync(id);
if (pdfFile is null)
return NotFound();
return File(pdfFile.FileData, pdfFile.ContentType, pdfFile.FileName);
}
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Public Async Function Download(id As Integer) As Task(Of IActionResult)
Dim pdfFile = Await _context.PdfFiles.FindAsync(id)
If pdfFile Is Nothing Then
Return NotFound()
End If
Return File(pdfFile.FileData, pdfFile.ContentType, pdfFile.FileName)
End Function
Görünümde bir İndirme Listesi Gösterme
Index eylemi tüm saklanan dosya kayıtlarını alır ve bunları bir Razor görünümüne iletir. Basit bir HTML tablo dosya adı, yükleme tarihi ve her kayıt için bir indirme linki oluşturur.
<table class="content__data-table" data-content-table>
<caption>Uploaded PDF Files</caption>
<thead>
<tr>
<th>File Name</th>
<th>Uploaded</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.FileName</td>
<td>@item.UploadedDate.ToString("yyyy-MM-dd HH:mm")</td>
<td><a href="/Pdf/Download/@item.Id">Download</a></td>
</tr>
}
</tbody>
</table>
<table class="content__data-table" data-content-table>
<caption>Uploaded PDF Files</caption>
<thead>
<tr>
<th>File Name</th>
<th>Uploaded</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.FileName</td>
<td>@item.UploadedDate.ToString("yyyy-MM-dd HH:mm")</td>
<td><a href="/Pdf/Download/@item.Id">Download</a></td>
</tr>
}
</tbody>
</table>
return File(bytes, contentType, fileName) aşırı yüklemesi hem Content-Type: application/pdf hem de Content-Disposition: attachment; ayarlar. filename="..." başlıkları. Tarayıcının bir indirme istemi yerine PDF'yi satır içi olarak açmasını istiyorsanız, üçüncü argüman olmadan return File(bytes, contentType) kullanın -- bu Content-Disposition: attachment talimatını devre dışı bırakır.

Alternatif Olarak Dosya Sistemi Depolama
Büyük dağıtımlarda, ham ikili verileri veritabanında saklamak satır boyutlarını artırır ve sorguları yavaşlatabilir. Bir alternatif, dosyayı diskteki bir dizine veya bir bulut sağlayıcısına yazmak ve veritabanında sadece göreceli yolu saklamaktır. FileData byte[] yerini FilePath string ile değiştirin, yükleme sırasında System.IO.File.WriteAllBytesAsync(path, bytes) yazın ve indirme sırasında System.IO.File.ReadAllBytesAsync(path) okuyun. Her iki yol da denetleyicide aynı return File(...) çağrısında kesişir.
Talep Üzerine PDF Belgeleri Nasıl Oluşturulur ve İndirme İçin Sunulur?
Önceden saklanan dosyalarla sınırlı değilsiniz. IronPDF'in HTML'den PDF'ye dönüştürme özelliği, talep zamanında verilerden belgeleri dinamik olarak oluşturmanıza olanak tanır -- faturalar, raporlar, sertifikalar ve veri ihracatları için kullanışlıdır.
public IActionResult GenerateInvoice(int orderId)
{
// Build HTML content from your data model
string html = $@"
<html>
<body style='font-family: Arial, sans-serif; padding: 40px;'>
<h1>Invoice #{orderId}</h1>
<p>Generated: {DateTime.UtcNow:yyyy-MM-dd HH:mm} UTC</p>
<table border='1' cellpadding='8'>
<tr><th>Item</th><th>Qty</th><th>Price</th></tr>
<tr><td>IronPDF License</td><td>1</td><td>$749</td></tr>
</table>
</body>
</html>";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);
return File(pdf.BinaryData, "application/pdf", $"invoice-{orderId}.pdf");
}
public IActionResult GenerateInvoice(int orderId)
{
// Build HTML content from your data model
string html = $@"
<html>
<body style='font-family: Arial, sans-serif; padding: 40px;'>
<h1>Invoice #{orderId}</h1>
<p>Generated: {DateTime.UtcNow:yyyy-MM-dd HH:mm} UTC</p>
<table border='1' cellpadding='8'>
<tr><th>Item</th><th>Qty</th><th>Price</th></tr>
<tr><td>IronPDF License</td><td>1</td><td>$749</td></tr>
</table>
</body>
</html>";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);
return File(pdf.BinaryData, "application/pdf", $"invoice-{orderId}.pdf");
}
Imports System
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
Public Class InvoiceController
Inherits Controller
Public Function GenerateInvoice(orderId As Integer) As IActionResult
' Build HTML content from your data model
Dim html As String = $"
<html>
<body style='font-family: Arial, sans-serif; padding: 40px;'>
<h1>Invoice #{orderId}</h1>
<p>Generated: {DateTime.UtcNow:yyyy-MM-dd HH:mm} UTC</p>
<table border='1' cellpadding='8'>
<tr><th>Item</th><th>Qty</th><th>Price</th></tr>
<tr><td>IronPDF License</td><td>1</td><td>$749</td></tr>
</table>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
Using pdf = renderer.RenderHtmlAsPdf(html)
Return File(pdf.BinaryData, "application/pdf", $"invoice-{orderId}.pdf")
End Using
End Function
End Class
Talep Üzerine Oluşturulan PDF'ler için Rendering Seçenekleri
ChromePdfRenderer, Google Chrome'u güçlendiren aynı Chromium render motorunu kullanarak piksel-doğru bir çıktı üretir. Bu, tarayıcıda görüntüleyebileceğiniz herhangi bir CSS'nin -- flexbox düzenleri, ızgara, özel yazı tipleri, SVG grafikler -- oluşturulan PDF'de doğru şekilde renderlandığı anlamına gelir. RenderingOptions özelliği ile kâğıt boyutu, kenar boşlukları ve yönlendirmeyi ayarlayabilirsiniz ve ardından RenderHtmlAsPdf çağırabilirsiniz.
Daha karmaşık belgeler için bir HTML dizesi yerine RenderUrlAsPdf 'ye tam bir URL iletin. IronPDF, JavaScript'i çalıştırarak, stilleri uygulayarak ve tamamen renderlanmış DOM'u PDF'ye dönüştürerek sayfayı başsız bir tarayıcıda yükleyecektir. Tüm render seçeneklerini görmek için HTML'den PDF'ye dönüştürme kılavuzu inceleyin, özel başlıklar, altbilgiler ve sayfa numaralandırma tokenları dahil.

ASP.NET Core'da Birden Fazla PDF Dosyası Nasıl Birleştirilir?
Tek dosya işlemlerinin ötesinde, birkaç yüklenen belgeyi birleştirmeniz gerekebilir. IronPDF'nin PDF birleştirme yeteneği, PdfDocument nesneler listesini kabul eder ve tek bir birleştirilmiş dosya döndürür.
public async Task<IActionResult> MergeAll()
{
var allFiles = await _context.PdfFiles.ToListAsync();
if (allFiles.Count < 2)
return BadRequest("At least two files are required for merging.");
var documents = allFiles
.Select(f => new IronPdf.PdfDocument(f.FileData))
.ToList();
using var merged = IronPdf.PdfDocument.Merge(documents);
return File(merged.BinaryData, "application/pdf", "merged.pdf");
}
public async Task<IActionResult> MergeAll()
{
var allFiles = await _context.PdfFiles.ToListAsync();
if (allFiles.Count < 2)
return BadRequest("At least two files are required for merging.");
var documents = allFiles
.Select(f => new IronPdf.PdfDocument(f.FileData))
.ToList();
using var merged = IronPdf.PdfDocument.Merge(documents);
return File(merged.BinaryData, "application/pdf", "merged.pdf");
}
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Public Async Function MergeAll() As Task(Of IActionResult)
Dim allFiles = Await _context.PdfFiles.ToListAsync()
If allFiles.Count < 2 Then
Return BadRequest("At least two files are required for merging.")
End If
Dim documents = allFiles _
.Select(Function(f) New IronPdf.PdfDocument(f.FileData)) _
.ToList()
Using merged = IronPdf.PdfDocument.Merge(documents)
Return File(merged.BinaryData, "application/pdf", "merged.pdf")
End Using
End Function
Bir PDF'ten Sayfa Bölme
Ters işlem -- bir sayfa alt kümesi çıkarmak -- CopyPages kullanır. Saklanan baytlardan bir PdfDocument yükleyin, sıfır tabanlı sayfa dizinleri ile source.CopyPages(startIndex, endIndex) çağırın ve elde edilen PdfDocument.BinaryData 'yu bir FileResult olarak döndürün. Bu desen, sayfalama önizlemeleri, çok bölümlü raporları bölme veya küçük resim oluşturma için bir kapak sayfası çıkarma gibi operasyonlar için faydalıdır. Birleştirilmiş veya bölünmüş çıktıya, kullanıcılarına sunmadan önce dijital imzalar ekleyebilirsiniz.
Büyük Dosya Yüklemeleri Güvenli Şekilde Nasıl Ele Alınır?
Büyük PDF dosyaları, ASP.NET Core middleware düzeyinde ek yapılandırma gerektirir. Varsayılan olarak, istek gövde boyutu sınırı yaklaşık 28 MB olarak ayarlanmıştır. Bunu yükseltmek için, builder.Services.Configure<FormOptions> çağırarak MultipartBodyLengthLimit, ve builder.WebHost.ConfigureKestrel çağırarak Limits.MaxRequestBodySize ayarlayın -- ikisini de hedef bayt sayısına, örneğin 50 * 1024 * 1024 için 50 MB olarak ayarlayın -- ve builder.Build() 'dan önce Program.cs içinde.
Boyut sınırlarının ötesinde, her yükleme noktasında bu güvenlik uygulamalarını uygulayın: içerik türü başlığını doğrulayın, %PDF sihirli numarası için akışın ilk baytlarını inceleyin, gömülü betikleri tespit etmek için IronPDF'nin belge inceleme API'sini kullanarak tarayın ve işlenmiş dosyaları web kökü dışında saklayın, böylece asla doğrudan statik içerik olarak sunulmazlar. ASP.NET Core güvenlik belgeleri sahtekarlık belirteci doğrulama ve virüs tarama entegrasyonu dahil ek sertleştirme tekniklerini kapsar.
Hafıza Baskısını Önlemek İçin Büyük Dosyalar Akışını Sağlama
Dosyalar 10 MB'yi aştığında, tüm akışı işlemden önce bir MemoryStream içine okumak, bellek kullanımını önemli ölçüde artırabilir. Mümkünse, doğrudan istek akışından yüklemek için IronPdf.PdfDocument.FromStream kullanın veya geçici bir dosya yoluna yazın ve diskten yükleyin:
string tempPath = Path.GetTempFileName();
await using (var fs = System.IO.File.Create(tempPath))
{
await file.CopyToAsync(fs);
}
using var pdf = new IronPdf.PdfDocument(tempPath);
// process...
System.IO.File.Delete(tempPath);
string tempPath = Path.GetTempFileName();
await using (var fs = System.IO.File.Create(tempPath))
{
await file.CopyToAsync(fs);
}
using var pdf = new IronPdf.PdfDocument(tempPath);
// process...
System.IO.File.Delete(tempPath);
Imports System.IO
Imports IronPdf
Dim tempPath As String = Path.GetTempFileName()
Using fs As FileStream = System.IO.File.Create(tempPath)
Await file.CopyToAsync(fs)
End Using
Using pdf As PdfDocument = New IronPdf.PdfDocument(tempPath)
' process...
End Using
System.IO.File.Delete(tempPath)
Bu desen yığın tahsisatlarını düşük tutar ve dosyaların HTTP yanıtı gönderildikten sonra asenkron olarak işlendiği arka plan işleme kuyruklarıyla iyi çalışır. IronPDF belgelerini, ek asenkron işleme desenleri için keşfedin.
Sıradaki Adımlarınız Neler?
Artık, IronPDF tarafından desteklenen bir ASP.NET Core MVC uygulamasında PDF dosyalarını yüklemek, işlemek, depolamak ve indirmek için eksiksiz bir temele sahipsiniz. Buradan, iş akışını genişletmek için aşağıdaki yönleri göz önünde bulundurun.
İşleme yeteneklerini genişletin. IronPDF PDF form alanlarını doldurmayı ve okumayı, mevcut PDF dosyalarından metin ve görüntü çıkarmayı ve PDF sayfalarını küçük resim önizlemeleri için görüntülere dönüştürmeyi destekler. Bu özelliklerin her biri, yukarıda gösterilen aynı denetleyici modeline entegre edilir.
Dijital imzalar ekleyin. Her oluşturulan veya yüklenen belgeyi bir dijital imza ile, bir X.509 sertifikası kullanarak saklamadan önce imzalayın. İmzalanmış PDF'ler, birçok uyum gereksinimini karşılayan müdahale belirgin meta veri taşır.
Depolamayı buluta ölçekleyin. Yerel byte[] veritabanı sütununu bir Azure Blob Storage veya Amazon S3 referansı ile değiştirin. İşlenmiş baytları bulut depolamaya yükleyin ve sadece URI'yi veritabanında saklayın -- bu, veritabanı satır boyutlarını önemli ölçüde azaltır ve CDN teslimatını etkinleştirir.
Ücretsiz bir deneme başlatın. Tüm özellik erişimi ile 30 günlük bir değerlendirme anahtarı almak için IronPDF deneme lisansı sayfasını ziyaret edin. .NET uygulamanızda mevcut tüm PDF yeteneklerinin kapsamını anlamak için tam IronPDF özellikleri genel bakış sayfasını inceleyebilir veya üretim dağıtımına hazır olduğunuzda fiyat ve lisanslama sayfasına danışabilirsiniz.
Sıkça Sorulan Sorular
ASP.NET Core MVC uygulamasında PDF dosyaları nasıl yükleyebilirim?
ASP.NET Core MVC uygulamasında PDF dosyaları yüklemek için, dosya verilerini bir formdan almak üzere IFormFile arayüzünü kullanabilir ve ardından sunucu tarafında işleyip kaydetmeden önce, olasılıkla IronPDF yardımıyla daha fazla PDF işleme yapabilirsiniz.
ASP.NET'te PDF dosyalarını indirmenin en iyi yolu nedir?
ASP.NET'te PDF dosyalarını indirmenin en iyi yolu, denetleyicinizde FileResult eylemini kullanmaktır. IronPDF, indirilmeye hazır hale getirmek için PDF'leri sunucu tarafında oluşturup değiştirmenize yardımcı olabilir.
ASP.NET kullanarak PDF dosyalarını bir veritabanında saklayabilir miyim?
Evet, bir dosyayı bayt dizisine çevirerek ve büyük ikili nesne (BLOB) olarak kaydederek, ASP.NET kullanarak PDF dosyalarını bir veritabanında saklayabilirsiniz. IronPDF, depolamadan önce PDF'yi işlerken yardımcı olabilir.
IronPDF, ASP.NET'te PDF'lere filigran eklemeye nasıl yardımcı olur?
IronPDF, ASP.NET uygulamanıza metin veya resim filigranları kolayca eklemenizi sağlar; bu filigranlar belgeleri indirmeden veya depolamadan önce değiştirmenize imkan tanır.
EF Core kullanarak PDF depolamanın avantajları nelerdir?
EF Core, PDF depolama ve alımı daha kolay yönetilebilir ve ölçeklendirilebilir bir şekilde düzenlemek için etkili bir nesne-ilişkisel haritalama sağlar.
ASP.NET uygulamalarında PDF içeriklerini değiştirmek mümkün müdür?
Evet, IronPDF ile metin, resimler ve meta veriler dahil olmak üzere PDF içeriklerini değiştirebilirsiniz; bu, belgeleri kullanıcılara sunmadan önce özelleştirmede faydalıdır.
ASP.NET'te dosya yüklemelerini güvenli bir şekilde nasıl yönetebilirim?
ASP.NET'te dosya yüklemelerini güvenli bir şekilde yönetmek için dosya türlerini doğrulamalı, dosya boyutlarını sınırlamalı ve güvenli yerlerde saklamalısınız. IronPDF gibi kütüphaneler kullanmak, PDF dosyalarının bütünlüğünü sağlamaya da yardımcı olabilir.
Web uygulamalarında PDF'lerle çalışırken karşılaşılan yaygın zorluklar nelerdir?
Yaygın zorluklar arasında dosya uyumluluğunu sağlamak, büyük dosya boyutlarıyla başa çıkmak ve belge bütünlüğünü korumak yer alır. IronPDF, PDF oluşturma ve değiştirme için sağlam araçlar sunarak bu zorlukları aşmanıza yardımcı olur.
ASP.NET'te farklı dosya türlerini PDF'ye dönüştürebilir miyim?
Evet, IronPDF ile HTML veya resim dosyaları gibi çeşitli dosya türlerini ASP.NET uygulamanızda sorunsuz bir şekilde PDF'ye dönüştürebilirsiniz.
Model-View-Controller (MVC) mimarisi ASP.NET'te PDF işleme sırasında hangi role sahiptir?
MVC deseni, veri işleme (Model), kullanıcı arayüzü (View) ve uygulama mantığı (Controller) olarak kodu organize ederek, PDF işleme yeteneklerini yönetmeyi ve genişletmeyi kolaylaştırır.




