C#'da PDF Dosyalarını Okuma
Raporlar, verileri yapılandırılmış ve görsel olarak çekici bir formatta sunmak için gereklidir. Bu, satış verileri, analizler veya finansal özetler olsun, web uygulamalarında rapor oluşturma yaygındır. Microsoft, Web Forms Report Viewer Control kullanarak web uygulamalarına entegre edilebilen RDLC rapor hizmetleri sağlar. Ancak, süreç genellikle karmaşık ve zaman alıcı olabilir.
IronPDF'in burada devreye girdiği yer burasıdır. IronPDF, ASP.NET ve diğer web çerçevelerinde PDF raporları oluşturmayı basitleştiren, güçlü özellikler sunan ve kullanımı kolay bir çok yönlü kütüphanedir. Bu makalede, IronPDF kullanarak ASP.NET'de bir rapor oluşturmanın nasıl olacağını inceleyeceğiz.
ASP.NET İçin Rapor Nasıl Oluşturulur
- Visual Studio kullanarak bir ASP.NET Web Uygulaması oluşturun
- IronPDF ve IronPdf.Extensions.MVC.Core yükleyin
- Genç görev göndericisini oluşturmak için ChromePdfRenderer nesnesini oluşturun
- Görünümden PDF'ye dönüştürmek için RenderRazorViewToPdf yöntemini çağırın
- Response.Headers.Append kullanarak "Content-Disposition" ekleyin
- Bir PDF.BinaryData methodu ile Dosya kullanarak bir Rapor oluşturun
IronPDF'ye Giriş
IronPDF, ASP.NET ve diğer web çerçevelerinde PDF belgeleri oluşturmayı basitleştiren çok yönlü bir kütüphanedir. Zengin özellik seti ve sezgisel API'leri sayesinde, dinamik raporlar, faturalar, makbuzlar ve daha fazlasını doğrudan web uygulamalarından oluşturmak isteyen geliştiriciler için ideal bir seçimdir. IronPDF ile, geliştiriciler HTML, CSS ve hatta Razor görünümlerini yüksek kaliteli PDF belgelerine zahmetsizce dönüştürebilir, bu da raporlama işlevselliğinin ASP.NET projelerine sorunsuz bir şekilde entegrasyonunu sağlar.
IronPDF Özellikleri
- HTML'den PDF'ye Dönüştürme: CSS stiller de dahil olmak üzere HTML içeriğini kolayca yüksek kaliteli PDF belgelerine dönüştürün.
- PDF Düzenleme: Metin ekleyerek veya kaldırarak, resimler ve açıklamalar yaparak mevcut PDF belgelerini değiştirin.
- PDF Formu Doldurma: PDF formlarını, web uygulamanızdan alınan verilerle dinamik olarak doldurun.
- Barkod Oluşturma: PDF belgelerinde ürün etiketleri veya envanter takibi için barkodlar ve QR kodlar oluşturun.
- Filigran Ekleme: Gizli bilgileri korumak veya belgeleri markalamak için PDF sayfalarına filigranlar ekleyin.
- Şifreleme ve Güvenlik: PDF belgelerini şifreleme, parolalar ve izin ayarları ile güvence altına alın.
Gereksinimler
Başlamadan önce, aşağıdaki ön koşullara sahip olduğunuzdan emin olun:
- ASP.NET geliştirme hakkında temel bilgi.
- Makinenize Visual Studio kurulu olmalıdır.
- IronPDF ve IronPdf.Extensions.Mvc.Core
Visual Studio'da ASP.NET Projesi Oluşturma Adımları
- Visual Studio'yu açın ve yeni bir ASP.NET Core projesi oluşturun.
- İstediğiniz proje şablonunu seçin (örneğin, MVC veya Razor Pages).

- Proje ayarlarını, örneğin proje adı, konumu ve çerçeve sürümünü yapılandırın.

- Proje yapısını oluşturmak için "Create"'ye tıklayın.
IronPDF ve IronPdf.Extensions.Mvc.Core'un Kurulumu
Şimdi, NuGet Paket Yöneticisi'ni kullanarak IronPDF ve MVC genişletme paketini yükleyelim:
- Çözüm Gezgini'ne sağ tıklayarak Çözümler için NuGet Paket Yöneticisi'ni açın.
- "IronPDF" ve "IronPdf.Extensions.Mvc.Core" tuşlarını arayın.

- Her iki paketi de çözümünüze yükleyin.
ASP.NET Web Uygulamasında Rapor Görüntüleyici Oluşturma Adımları
Şimdi, ASP.NET projemizde IronPDF kullanarak bir PDF raporu oluşturmak için adımlara geçelim. Görünümü bir rapora dönüştürmeden önce, yeni bir raporu PDF formatında oluşturup indirmek için bir Veri modeline, Görünüme ve Denetleyiciye gereksinimimiz var.
Adım 1: Bir Model Sınıfı Tanımlayın
İlk olarak, satış verilerini temsil etmek için bir model sınıfı (SalesModel.cs) oluşturun. Bu örnek SalesModel sınıfı, Tarih, Ürün Adı, Miktar, Birim Fiyat ve Toplam Tutar gibi özellikleri içerecektir. Bu, Microsoft SQL Server veya MySQL Server gibi bir veri kaynağından bilgi almak için kullanışlıdır.
namespace ReportGenerator.Models
{
public class SalesModel
{
public DateTime Date { get; set; }
public string ProductName { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public decimal TotalAmount => Quantity * UnitPrice;
}
}
namespace ReportGenerator.Models
{
public class SalesModel
{
public DateTime Date { get; set; }
public string ProductName { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public decimal TotalAmount => Quantity * UnitPrice;
}
}
Namespace ReportGenerator.Models
Public Class SalesModel
Public Property [Date]() As DateTime
Public Property ProductName() As String
Public Property Quantity() As Integer
Public Property UnitPrice() As Decimal
Public ReadOnly Property TotalAmount() As Decimal
Get
Return Quantity * UnitPrice
End Get
End Property
End Class
End Namespace
Adım 2: Yeni Bir Web Form Görünümü Oluşturun
Bir sonraki adım olarak, satış verilerini tablo formatında görüntülemek ve PDF raporu oluşturmak için bir düğme sağlamak amacıyla bir Razor görünümü (Sales.cshtml) oluşturun.
@model List<SalesModel>
<!DOCTYPE html>
<html>
<head>
<title>Sales Report</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Date</th>
<th>Product Name</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total Amount</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Date.ToShortDateString()</td>
<td>@item.ProductName</td>
<td>@item.Quantity</td>
<td>@item.UnitPrice.ToString("C")</td>
<td>@item.TotalAmount.ToString("C")</td>
</tr>
}
</table>
<br />
@using (Html.BeginForm("GeneratePdf", "Sales", FormMethod.Post))
{
<button type="submit">Generate PDF Report</button>
}
</body>
</html>
@model List<SalesModel>
<!DOCTYPE html>
<html>
<head>
<title>Sales Report</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Date</th>
<th>Product Name</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total Amount</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Date.ToShortDateString()</td>
<td>@item.ProductName</td>
<td>@item.Quantity</td>
<td>@item.UnitPrice.ToString("C")</td>
<td>@item.TotalAmount.ToString("C")</td>
</tr>
}
</table>
<br />
@using (Html.BeginForm("GeneratePdf", "Sales", FormMethod.Post))
{
<button type="submit">Generate PDF Report</button>
}
</body>
</html>
Şimdi, _Layout.cshtml dosyasında Görünümler->Paylaşılan klasöründe bulunan Satış'ı menü öğesi olarak ekleyerek bir rapor sihirbazı görünümü oluşturun:
<!— Layout.cshtml —>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>
<!— Layout.cshtml —>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>

Adım 3: Görünüm Render Servisi Kaydını Yapma
Bağımlılık enjeksiyonunun düzgün çalışması için Program.cs dosyasına görünüm render servisinin kaydının eklenmesi önemlidir. Program.cs dosyasına IRazorViewRenderer servisinin kaydını yapmak için aşağıdaki kodu ekleyin:
// Register the IRazorViewRenderer service
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
// Register the IRazorViewRenderer service
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
' Register the IRazorViewRenderer service
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
Adım 4: Web API Denetleyici Sınıfını Uygulama
Denetleyiciye (SalesController.cs) eylemleri işleyen satış görünümünü uygulayın ve PDF raporunu oluşturun. Denetleyici oluşturucusuna IronPDF tarafından sağlanan IRazorViewRenderer servisini enjekte edin.
using ReportGenerator.Models;
namespace ReportGenerator.Controllers
{
public class SalesController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
private readonly List<SalesModel> salesData;
public SalesController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
// Example data with sales information
salesData = new List<SalesModel>
{
new SalesModel { Date = DateTime.Parse("2024-03-01"), ProductName = "Product A", Quantity = 10, UnitPrice = 50.00m },
new SalesModel { Date = DateTime.Parse("2024-03-02"), ProductName = "Product B", Quantity = 15, UnitPrice = 40.00m },
new SalesModel { Date = DateTime.Parse("2024-03-03"), ProductName = "Product C", Quantity = 20, UnitPrice = 30.00m }
// Add more data as needed
};
}
public IActionResult Sales()
{
// Renders the sales view with the sales data
return View(salesData);
}
}
}
using ReportGenerator.Models;
namespace ReportGenerator.Controllers
{
public class SalesController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
private readonly List<SalesModel> salesData;
public SalesController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
// Example data with sales information
salesData = new List<SalesModel>
{
new SalesModel { Date = DateTime.Parse("2024-03-01"), ProductName = "Product A", Quantity = 10, UnitPrice = 50.00m },
new SalesModel { Date = DateTime.Parse("2024-03-02"), ProductName = "Product B", Quantity = 15, UnitPrice = 40.00m },
new SalesModel { Date = DateTime.Parse("2024-03-03"), ProductName = "Product C", Quantity = 20, UnitPrice = 30.00m }
// Add more data as needed
};
}
public IActionResult Sales()
{
// Renders the sales view with the sales data
return View(salesData);
}
}
}
Imports ReportGenerator.Models
Namespace ReportGenerator.Controllers
Public Class SalesController
Inherits Controller
Private ReadOnly _viewRenderService As IRazorViewRenderer
Private ReadOnly salesData As List(Of SalesModel)
Public Sub New(ByVal viewRenderService As IRazorViewRenderer)
_viewRenderService = viewRenderService
' Example data with sales information
salesData = New List(Of SalesModel) From {
New SalesModel With {
.Date = DateTime.Parse("2024-03-01"),
.ProductName = "Product A",
.Quantity = 10,
.UnitPrice = 50.00D
},
New SalesModel With {
.Date = DateTime.Parse("2024-03-02"),
.ProductName = "Product B",
.Quantity = 15,
.UnitPrice = 40.00D
},
New SalesModel With {
.Date = DateTime.Parse("2024-03-03"),
.ProductName = "Product C",
.Quantity = 20,
.UnitPrice = 30.00D
}
}
End Sub
Public Function Sales() As IActionResult
' Renders the sales view with the sales data
Return View(salesData)
End Function
End Class
End Namespace
Yukarıdaki kodda, oluşturucu içindeki IRazorViewRenderer servisi özel _viewRenderService alanına atanır. Ayrıca, denetleyici, satış bilgilerinin gösterim amaçlı olduğu bir SalesModel sınıfı örneklerinden oluşan salesData adlı bir liste başlatır.
Sales() eylem metodu, modeli salesData listesini geçerek "Sales" adlı bir görünüm döndürür. Bu eylem, ilişkili görünümde satış verilerini işlemekten sorumludur, kullanıcılara satış bilgilerini tablo formatında veya istenen başka bir düzenle görselleştirme imkanı sağlar.

Adım 5: PDF Raporu Oluşturma
GeneratePdf eyleminde, IronPDF'nin ChromePdfRenderer kullanarak Razor görünümünü bir PDF Rapordakümanına dönüştürün. Uygun yanıt başlıklarını ayarlayın ve PDF dosyasını istemciye geri döndürün.
public FileContentResult GeneratePdf()
{
// Set license key for IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Initialize the ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the Sales Razor view to a PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
// Set HTTP response header to display the PDF inline
Response.Headers.Append("Content-Disposition", "inline");
// Return the PDF document as a FileContentResult
return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
public FileContentResult GeneratePdf()
{
// Set license key for IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Initialize the ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the Sales Razor view to a PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
// Set HTTP response header to display the PDF inline
Response.Headers.Append("Content-Disposition", "inline");
// Return the PDF document as a FileContentResult
return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
Public Function GeneratePdf() As FileContentResult
' Set license key for IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
' Initialize the ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Render the Sales Razor view to a PDF document
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData)
' Set HTTP response header to display the PDF inline
Response.Headers.Append("Content-Disposition", "inline")
' Return the PDF document as a FileContentResult
Return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf")
End Function
Yukarıdaki kodun çalışma mantığını detaylı olarak inceleyelim:
- Lisans Anahtarı Kurulumu:
- License.LicenseKey = "LİSANS-ANAHTARINIZ-BURADA";
- Bu satır, IronPDF için gereken lisans anahtarını ayarlar. IronPDF işlevlerini uygulama içinde kullanmak için gereklidir.
- Renderer Başlatma:
- ChromePdfRenderer renderer = new ChromePdfRenderer();
- Bir ChromePdfRenderer örneği oluşturulmuştur. Bu renderer, Chromium tarayıcı motorunu kullanarak Razor görünümlerini PDF formatına dönüştürmekten sorumludur.
- Görünümü PDF'ye Render Etme:
- PdfDocument PDF = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
- ChromePdfRenderer'in RenderRazorViewToPdf() yöntemi, belirtilen Razor görünümünü (Views/Sales/Sales.cshtml) bir PDF belgesine render etmek için çağrılır. salesData değişkeni, görünüm için model olarak görev yapar.
- Content-Disposition Başlığı:
- Response.Headers.Append("Content-Disposition", "inline");
- HTTP yanıt başlığı Content-Disposition "inline" olarak ayarlanmıştır. Bu, tarayıcıyı PDF içeriğini doğrudan görüntüleyerek raporları tarayıcı penceresinde veya sekmesinde açıldığında görüntülenebilecek şekilde yönlendirir.
- PDF Dosyasını Geri Döndürme:
- return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
- PDF belgesi içeriği bir FileContentResult olarak döndürülür. Bu, PDF'in ikili verilerini (pdf.BinaryData) içerir, MIME türünü "application/pdf" olarak belirtir ve "SalesReport.pdf" olarak dosya adını önerir.
Genel olarak, bu yöntem, Razor görünümünden bir PDF raporu oluşturma sürecini verimli bir şekilde organize eder, ASP.NET uygulaması içinde entegrasyonunu geliştirmek için uygun hale getirir.

IronPDF'nin PDF raporlama üretimi ve diğer PDF ile ilgili görevleri kolaylaştırdığı hakkında detaylı bilgi için, lütfen belgeler sayfasını ziyaret edin.
Sonuç
Bu makalede, IronPDF'nin ASP.NET uygulamalarında PDF raporları oluşturma sürecini nasıl basitleştirdiğini inceledik. Yukarıda sağlanan adım adım rehberi izleyerek ASP.NET projelerinize IronPDF'yi hızla entegre edebilir ve kolaylıkla dinamik PDF raporları oluşturabilirsiniz.
Zengin özellik seti ve sorunsuz entegrasyonu ile IronPDF, geliştiricilerin kullanıcılarının ve işlerinin ihtiyaçlarını karşılayan profesyonel kalitede raporlar oluşturmasını sağlar.
IronPDF, bir ücretsiz deneme sunuyor. Kütüphaneyi buradan indirin ve deneyin.
Sıkça Sorulan Sorular
ASP.NET'te bir PDF raporunu nasıl üretebilirim?
IronPDF kullanarak ASP.NET'te bir PDF raporu oluşturabilirsiniz. Başlamak için Visual Studio'da bir ASP.NET web uygulaması kurun, ardından IronPDF ve MVC uzantısını yükleyin. ChromePdfRenderer sınıfını kullanarak Razor görünümlerini PDF'lere dönüştürün ve rapor oluşturmak için File yöntemini kullanın.
ASP.NET için bir PDF kütüphanesi kullanmanın faydaları nelerdir?
ASP.NET için IronPDF gibi bir PDF kütüphanesi kullanmak, PDF raporlarını oluşturma ve yönetme sürecini basitleştirir. HTML'den PDF'ye dönüştürme, PDF düzenleme, form doldurma, barkod oluşturma ve belge güvenliği gibi çeşitli web uygulaması ihtiyaçlarına yönelik destek sunar.
ASP.NET'te Razor görünümlerini PDF'ye nasıl dönüştürürüm?
ASP.NET'te Razor görünümlerini PDF'ye dönüştürmek için IronPDF'nin ChromePdfRenderer.RenderRazorViewToPdf yöntemini kullanabilirsiniz. Bu, PDF oluşturmayı ASP.NET uygulamalarınıza sorunsuz bir şekilde entegre etmenizi sağlar.
IronPDF, PDF raporu üretimi için hangi özellikleri sunar?
IronPDF, HTML'den PDF'ye dönüştürme, PDF düzenleme, form doldurma, barkod oluşturma, filigran ekleme ve belge şifreleme ve güvenliği gibi özellikler sunar. Bu özellikler, dinamik ve güvenli PDF raporları oluşturmayı kolaylaştırır.
ASP.NET'te PDF belgelerini nasıl güvence altına alabilirim?
IronPDF, şifreleme, parola ve izin ayarlarıyla PDF belgelerini güvence altına alma özellikleri sağlar. Bu, ASP.NET uygulamalarınızdaki hassas bilgilerin korunmasını sağlar.
IronPDF için ücretsiz bir deneme mevcut mu?
Evet, IronPDF ücretsiz bir deneme sunar. Kütüphaneyi IronPDF web sitesinden indirip uygulamalarınızda profesyonel kalitede PDF raporları üretmek için özelliklerini keşfedebilirsiniz.
Bir ASP.NET uygulamasında PDF'ye filigran nasıl eklenir?
Bir ASP.NET uygulamasında PDF'ye filigran eklemek için IronPDF kullanabilirsiniz. Kütüphane, hassas bilgileri korumak veya belgelerinizi etkili bir şekilde markalamak için PDF belgelerine filigran eklemek için API'ler sağlar.
ASP.NET projemde IronPDF kullanmak için ön koşullar nelerdir?
IronPDF'yi kullanmadan önce, ASP.NET geliştirme konusunda temel bir anlayışa sahip olduğunuzdan ve Visual Studio'yu kurduğunuzdan emin olun. Ayrıca, projenize IronPDF ve MVC uzantısını kurarak onun özelliklerinden yararlanın.
IronPDF hakkında daha fazla bilgiye nereden ulaşabilirim?
Daha fazla detaylı bilgi için IronPDF'nin kurulum, özellikler ve örnek kodlara dair bilgi sağlayan belge sayfasını web sitesinde ziyaret edebilirsiniz.
IronPDF, .NET 10 ile uyumlu mu ve hangi avantajları sunar?
Evet, IronPDF, Web, Masaüstü ve Konsol proje türleriyle geniş çapta .NET 10 desteği sağlar. Yürütüm zamanı performans iyileştirmeleri (örneğin, azaltılmış yığın tahsisatları ve daha hızlı JIT), C# dil geliştirmeleri ve modern API'lardan yararlanır. Geliştiriciler, .NET 10 uygulamalarında RenderHtmlAsPdf ve RenderHtmlAsPdfAsync yöntemlerini sorunsuzca kullanarak çıktıyı hız, çapraz-platform dağıtımı ve daha temiz koddan faydalanabilirler.

