IronPDF kullanarak PDF'yi ASP.NET Panelinde nasıl görüntüleme
PDF belgelerini ASP.NET panel kontrolü içerisinde görüntülemek, belge yönetim sistemleri, rapor görüntüleyicileri ve fatura gösterimleri için yaygın bir gereksinimdir. IronPDF, istemci tarafı bağımlılıkları ortadan kaldıran ve tüm tarayıcılar ve platformlar arasında tutarlı çalışan sunucu tarafında render ile bunu çözer.
ASP.NET Core web uygulamanıza PDF gömmeye ihtiyaç duyduğunuzda, tarayıcı eklentilerine veya istemci tarafı kütüphanelere bağımlı kalmak, kırılganlık yaratır. Kurumsal ortamlardaki eklenti kısıtlamaları, tutarsız tarayıcı davranışı ve kötü mobil destek kullanıcı deneyimini zedeler. Sunucu tarafı bir yaklaşım, bu sıkıntı noktalarının her birini ortadan kaldırır.
IronPDF, PDF oluşturma ve teslimatını tamamen sunucu üzerinde ele alır, böylece tarayıcı doğru MIME türü ile standart bir PDF bayt akışı alır -- hiçbir eklenti gerekmeksizin, tarayıcıya özgü çözümler gerekli değildir.

Sunucu Tarafında PDF Renderi ASP.NET'te Nasıl Çalışır?
IronPDF PDF render işlemini tamamen bir basliksiz Chrome motoru kullanarak sunucuya kaydirir. Kontrol cihaziniz bir PDF belgesi oluşturur veya alir, bunu bir byte dizisine cevirir ve inline Content-Disposition basligi ile tarayiciya akitar. Tarayicinin yapisal PDF görüntüleyicisi, belgenin panelinizde küçük bir <iframe> icine gösterilmesini saglar.
Bu temel değişiklik geleneksel sorun noktalarını ortadan kaldırır:
- İstemci makinesinde Adobe Reader veya tarayıcı uzantısına gerek yok
- Kullanıcının işletim sistemi veya tarayıcı sürümünden bağımsız olarak tutarlı render
- Belge içeriği, düzeni ve tarzı üzerinde tam programatik kontrol
- Eklenti yüklemelerini engelleyen BT politikaları olan kurumsal ortamlarda çalışır
Kutuphanenin Chrome render motoru, HTML, URL ve ham içerik kaynaklarından mükemmel piksel çıkışı üretir. PDF client'a ulaşmadan önce tüm çıkışın boyutunu, kenar boşluklarını, başlık ve alt bilgileri ve CSS medya türünü kontrol edersiniz.
IronPDF, Windows, Linux ve macOS sunucularında platformlar arası dağıtımı da destekler, bu da bulutta barındırılan ASP.NET uygulamaları için uygundur ve Azure veya AWS üzerinde, ayrıca Docker kullanarak kapsüllenen ortamlarda çalışmaktadır.

NuGet Paketini Nasıl Kurarsınız?
Visual Studio'yu açın, Çözüm Gezgini'nde projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin. IronPdf arayin ve kurulumu gerceklestirin. Alternatif olarak, Paket Yöneticisi Konsolu'nda bu komutu çalıştırın:
Install-Package IronPdf
.NET CLI'yi dotnet add package IronPdf ile de kullanabilirsiniz. Kurulduktan sonra, kutuphanenin ad alanina erismek icin using IronPdf; kontrol cihazinizin veya hizmet sinifinizin ustune ekleyin.
Optimal PDF teslimi icin, yok Program.cs sabit dosyalarin hizmetini ve yonlendirme kurulumu yaparak ayarlayin:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.DependencyInjection
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()
builder.Services.AddRazorPages()
Dim app = builder.Build()
app.UseStaticFiles()
app.UseRouting()
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}")
app.Run()
AddControllersWithViews() kaydi, hem API uç noktalarini hem de görüntüleme işlemlerini aktif hale getirir -- her ikisi de, PDF iceriginin ozel kontrol cihazinin eylemleri araciligi ile saglanmasi ve Razor gorunum panellerinde gorunmesi icin gereklidir. Tam yapılandırma detayları için IronPDF API dokümantasyonunu inceleyin.
Bir PDF Dosyasını Doğrudan Panelin İçine Nasıl Görüntülersiniz?
Ana desen basittir: bir kontrol edici eylemi bir PDF oluşturur, onu byte olarak dönüştürur, Content-Disposition basligini inline olarak ayarlar ve bir File sonucu doner. Razor gorunumunde bir <iframe>, o sonucun noktasina isaret eder.
İşte tam bir kontrolcü uygulanması:
[ApiController]
[Route("api/[controller]")]
public class PdfPanelController : ControllerBase
{
[HttpGet("display/{documentId}")]
public IActionResult DisplayPdfInPanel(string documentId)
{
var renderer = new ChromePdfRenderer();
string filename = $"document_{documentId}.pdf";
var htmlContent = $@"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; margin: 40px; }}
h1 {{ color: #333; }}
.content {{ line-height: 1.6; }}
</style>
</head>
<body>
<h1>Document #{documentId}</h1>
<div class='content'>
<p>This PDF is generated dynamically and displayed inline in your panel.</p>
<p>Generated at: {DateTime.Now:yyyy-MM-dd HH:mm:ss}</p>
</div>
</body>
</html>";
using var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
byte[] pdfBytes = pdfDocument.BinaryData;
Response.Headers.Append("Content-Disposition", $"inline; filename={filename}");
return File(pdfBytes, "application/pdf");
}
}
[ApiController]
[Route("api/[controller]")]
public class PdfPanelController : ControllerBase
{
[HttpGet("display/{documentId}")]
public IActionResult DisplayPdfInPanel(string documentId)
{
var renderer = new ChromePdfRenderer();
string filename = $"document_{documentId}.pdf";
var htmlContent = $@"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; margin: 40px; }}
h1 {{ color: #333; }}
.content {{ line-height: 1.6; }}
</style>
</head>
<body>
<h1>Document #{documentId}</h1>
<div class='content'>
<p>This PDF is generated dynamically and displayed inline in your panel.</p>
<p>Generated at: {DateTime.Now:yyyy-MM-dd HH:mm:ss}</p>
</div>
</body>
</html>";
using var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
byte[] pdfBytes = pdfDocument.BinaryData;
Response.Headers.Append("Content-Disposition", $"inline; filename={filename}");
return File(pdfBytes, "application/pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
Imports System
<ApiController>
<Route("api/[controller]")>
Public Class PdfPanelController
Inherits ControllerBase
<HttpGet("display/{documentId}")>
Public Function DisplayPdfInPanel(documentId As String) As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim filename As String = $"document_{documentId}.pdf"
Dim htmlContent As String = $"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; margin: 40px; }}
h1 {{ color: #333; }}
.content {{ line-height: 1.6; }}
</style>
</head>
<body>
<h1>Document #{documentId}</h1>
<div class='content'>
<p>This PDF is generated dynamically and displayed inline in your panel.</p>
<p>Generated at: {DateTime.Now:yyyy-MM-dd HH:mm:ss}</p>
</div>
</body>
</html>"
Using pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
Dim pdfBytes As Byte() = pdfDocument.BinaryData
Response.Headers.Append("Content-Disposition", $"inline; filename={filename}")
Return File(pdfBytes, "application/pdf")
End Using
End Function
End Class
ChromePdfRenderer sinifi, sunucu tarafli render icin ana giris noktasi olarak hizmet verir. HTML icerigini kabul eder, onu basliksiz bir Chrome tarayici kullanarak cevirir ve bir PdfDocument nesnesini geri doner. BinaryData ozelligi, ham byte'lari stream etmek icin sunar.
Content-Disposition set etmek, panel gorunumu icin kritik bir adimdir. Bu olmadan, tarayici <iframe> icinde render etmeden once bir indirme uyarisi verir. Her sayfada baslik ve altbilgi ekleyebilir, veya sayfa yonlendirmesini kontrol edebilir ve ozel kenar bosluklarini ayarlayabilirsiniz RenderingOptions kullanarak.
Bu ucayi bir Razor paneline gommek icin, kontrol cihazinin yonlendirmesine isaret eden bir <iframe> oluşturun:
@page
@model IndexModel
<div class="container mt-4">
<div class="card">
<div class="card-header">
<h3>PDF Display Panel</h3>
</div>
<div class="card-body">
<div class="pdf-panel" style="height: 600px;">
<iframe src="/api/PdfPanel/display/12345"
width="100%"
height="100%"
frameborder="0">
</iframe>
</div>
</div>
</div>
</div>
@page
@model IndexModel
<div class="container mt-4">
<div class="card">
<div class="card-header">
<h3>PDF Display Panel</h3>
</div>
<div class="card-body">
<div class="pdf-panel" style="height: 600px;">
<iframe src="/api/PdfPanel/display/12345"
width="100%"
height="100%"
frameborder="0">
</iframe>
</div>
</div>
</div>
</div>
The provided code is a Razor page markup, which is not directly translatable to VB.NET as it is not C# code. Razor pages are used in ASP.NET Core for creating dynamic web pages and are written in a combination of HTML and C#.
If you need to convert the C# logic within a Razor page to VB.NET, you would typically focus on the code-behind file or any C# code embedded within the Razor markup. However, the provided snippet contains only HTML and Razor directives without any C# logic to convert.
If you have a specific C# code-behind logic or embedded C# code within a Razor page that you need to convert to VB.NET, please provide that portion, and I can assist with the conversion.
<iframe> kontrol cihazinizin uç noktasindan PDF talep eder. Tarayıcının yerleşik PDF görüntüleyicisi buradan alır ve belgeyi tam panel genişliği ve yüksekliğinde görüntüler, istemci tarafında kütüphane veya eklenti gerektirmez.
Oluşturulan PDF Nasıl Görünür?

PDF'leri AJAX ile Dinamik Olarak Nasıl Yüklenir?
Statik <iframe> kaynaklari sabit içerik icin iyi calisir, ancak bircok uygulama, kullanıcı aksiyonlarina dayali PDF'ler yuklemek zorundadir -- bir veri gridindeki kayda tiklamasi, bir form gonderimi yapmasi veya bir rapor tipi secmesi gibi. AJAX odaklı bir yaklaşım, bu senaryoları tam sayfa yeniden yüklemesi olmadan yönetir.
Kontrolcü işlemi, bir istek gövdesini kabul eder ve PDF'i base64 dizisi olarak döndürür:
[HttpPost("generate")]
public async Task<IActionResult> GenerateDynamicPdf([FromBody] PdfRequestModel request)
{
try
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var htmlBuilder = new StringBuilder();
htmlBuilder.Append("<html><body>");
htmlBuilder.Append($"<h2>{request.Title}</h2>");
htmlBuilder.Append($"<div>{request.Content}</div>");
if (request.IncludeData)
{
htmlBuilder.Append("<table border='1' style='width:100%;'>");
foreach (var item in request.DataItems)
{
htmlBuilder.Append($"<tr><td>{item.Key}</td><td>{item.Value}</td></tr>");
}
htmlBuilder.Append("</table>");
}
htmlBuilder.Append("</body></html>");
var pdfDocument = await Task.Run(() =>
renderer.RenderHtmlAsPdf(htmlBuilder.ToString()));
var base64Pdf = Convert.ToBase64String(pdfDocument.BinaryData);
return Ok(new { success = true, pdfData = base64Pdf });
}
catch (Exception ex)
{
return BadRequest(new { success = false, error = ex.Message });
}
}
[HttpPost("generate")]
public async Task<IActionResult> GenerateDynamicPdf([FromBody] PdfRequestModel request)
{
try
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var htmlBuilder = new StringBuilder();
htmlBuilder.Append("<html><body>");
htmlBuilder.Append($"<h2>{request.Title}</h2>");
htmlBuilder.Append($"<div>{request.Content}</div>");
if (request.IncludeData)
{
htmlBuilder.Append("<table border='1' style='width:100%;'>");
foreach (var item in request.DataItems)
{
htmlBuilder.Append($"<tr><td>{item.Key}</td><td>{item.Value}</td></tr>");
}
htmlBuilder.Append("</table>");
}
htmlBuilder.Append("</body></html>");
var pdfDocument = await Task.Run(() =>
renderer.RenderHtmlAsPdf(htmlBuilder.ToString()));
var base64Pdf = Convert.ToBase64String(pdfDocument.BinaryData);
return Ok(new { success = true, pdfData = base64Pdf });
}
catch (Exception ex)
{
return BadRequest(new { success = false, error = ex.Message });
}
}
Imports System.Text
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
<HttpPost("generate")>
Public Async Function GenerateDynamicPdf(<FromBody> request As PdfRequestModel) As Task(Of IActionResult)
Try
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim htmlBuilder = New StringBuilder()
htmlBuilder.Append("<html><body>")
htmlBuilder.Append($"<h2>{request.Title}</h2>")
htmlBuilder.Append($"<div>{request.Content}</div>")
If request.IncludeData Then
htmlBuilder.Append("<table border='1' style='width:100%;'>")
For Each item In request.DataItems
htmlBuilder.Append($"<tr><td>{item.Key}</td><td>{item.Value}</td></tr>")
Next
htmlBuilder.Append("</table>")
End If
htmlBuilder.Append("</body></html>")
Dim pdfDocument = Await Task.Run(Function() renderer.RenderHtmlAsPdf(htmlBuilder.ToString()))
Dim base64Pdf = Convert.ToBase64String(pdfDocument.BinaryData)
Return Ok(New With {Key .success = True, Key .pdfData = base64Pdf})
Catch ex As Exception
Return BadRequest(New With {Key .success = False, Key .error = ex.Message})
End Try
End Function
RenderingOptions blok, papel boyutu, kenar boşluklari ve CSS medya tipi icin ayar yapmanizi saglar, render işlemi oncesinde. Microsoft'un ASP.NET Core dökümantasyonuna göre, yük altında duyarlı arayüzleri korumak için eşzamanlı olmayan desenler gereklidir. Senkron render cagrisini Task.Run icine almak, Chrome motorunu HTML islerken istek rehber ipliklerini bos tutar.
Base64 cevabi, JavaScript istemcisinin <iframe> kaynagini dogrudan güncellemesini saglar sayfa yeniden yuklemeden:
fetch('/api/PdfPanel/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestData)
})
.then(response => response.json())
.then(result => {
if (result.success) {
const iframe = document.getElementById('pdf-frame');
iframe.src = 'data:application/pdf;base64,' + result.pdfData;
}
});
fetch('/api/PdfPanel/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestData)
})
.then(response => response.json())
.then(result => {
if (result.success) {
const iframe = document.getElementById('pdf-frame');
iframe.src = 'data:application/pdf;base64,' + result.pdfData;
}
});
Bu desen, Razor Pages ve MVC gorunumleri icin çok iyi calisir. Gelişmiş kullanım durumları icin, IronPDF asil olan asynchronous rendering da destekler, bu yuzden RenderHtmlAsPdfAsync direkt kullanilabilir, Task.Run yerine.
Farklı PDF Kaynak Türlerini Nasıl Ele Alırsınız?
IronPDF üç ana kaynaktan PDF üretebilir: HTML dizgileri, yerel HTML dosyaları ve harici URL'ler. Her biri farklı senaryolara uygundur.
HTML Şablonlarını PDF'lere Nasıl Dönüştürürsünüz?
Şablon tabanlı üretim kurumsal ASP.NET uygulamalarında en yaygın modeldir. Yer tutucu sembolleri içeren HTML şablonları korursunuz, çalışırken veri enjekte edersiniz ve sonucu render edersiniz:
[HttpGet("from-html")]
public IActionResult GenerateFromHtmlString(string reportType)
{
var renderer = new ChromePdfRenderer();
var htmlTemplate = GetHtmlTemplate(reportType);
var userName = User?.Identity?.Name ?? "Unknown";
var processedHtml = htmlTemplate
.Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
.Replace("{{USER}}", userName)
.Replace("{{REPORT_TYPE}}", reportType);
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
using var pdf = renderer.RenderHtmlAsPdf(processedHtml);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", $"{reportType}.pdf"));
return File(pdf.BinaryData, "application/pdf");
}
private string GetHtmlTemplate(string reportType)
{
return @"
<html>
<head><title>{{REPORT_TYPE}} Report</title></head>
<body>
<h1>{{REPORT_TYPE}} Report</h1>
<p>Date: {{DATE}}</p>
<p>User: {{USER}}</p>
<div>Report content goes here.</div>
</body>
</html>";
}
[HttpGet("from-html")]
public IActionResult GenerateFromHtmlString(string reportType)
{
var renderer = new ChromePdfRenderer();
var htmlTemplate = GetHtmlTemplate(reportType);
var userName = User?.Identity?.Name ?? "Unknown";
var processedHtml = htmlTemplate
.Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
.Replace("{{USER}}", userName)
.Replace("{{REPORT_TYPE}}", reportType);
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
using var pdf = renderer.RenderHtmlAsPdf(processedHtml);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", $"{reportType}.pdf"));
return File(pdf.BinaryData, "application/pdf");
}
private string GetHtmlTemplate(string reportType)
{
return @"
<html>
<head><title>{{REPORT_TYPE}} Report</title></head>
<body>
<h1>{{REPORT_TYPE}} Report</h1>
<p>Date: {{DATE}}</p>
<p>User: {{USER}}</p>
<div>Report content goes here.</div>
</body>
</html>";
}
Imports System
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
Imports System.IO
<HttpGet("from-html")>
Public Function GenerateFromHtmlString(reportType As String) As IActionResult
Dim renderer As New ChromePdfRenderer()
Dim htmlTemplate As String = GetHtmlTemplate(reportType)
Dim userName As String = If(User?.Identity?.Name, "Unknown")
Dim processedHtml As String = htmlTemplate _
.Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd")) _
.Replace("{{USER}}", userName) _
.Replace("{{REPORT_TYPE}}", reportType)
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Using pdf = renderer.RenderHtmlAsPdf(processedHtml)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", $"{reportType}.pdf"))
Return File(pdf.BinaryData, "application/pdf")
End Using
End Function
Private Function GetHtmlTemplate(reportType As String) As String
Return "
<html>
<head><title>{{REPORT_TYPE}} Report</title></head>
<body>
<h1>{{REPORT_TYPE}} Report</h1>
<p>Date: {{DATE}}</p>
<p>User: {{USER}}</p>
<div>Report content goes here.</div>
</body>
</html>"
End Function
CssMediaType.Print, PDF'nin baski ozgul CSS kurallarini kullanmasini saglar, ki genelde navigasyon cubuklarini, yan cubuklari ve diğer sadece ekran icin olan unsurlari kaldirir. HTML şablonlarınız web görünümleri ve PDF üretimi arasında paylaşıldığında daha temiz bir çıktı üretir. Markalaşma için özel filigranlar veya arka plan resimleri de uygulayabilirsiniz. Karmaşık düzenler için, sayfa kesme kontrolü yeni sayfaların nerede başlayacağını tam olarak belirlemenizi sağlar.
HTML Şablon PDF Output Neye Benzer?
görüntüleyen bir PDF görüntüleyici gösteriyor.
Harici URL'lerden PDF Nasıl Üretilir?
Harici web sayfalarına yönelik - rakip analizleri, düzenleyici başvurular veya üçüncü taraf hizmetlerden içerik - IronPDF, herkese açık erişilebilen herhangi bir URL'yi render edebilir:
[HttpGet("from-url")]
public async Task<IActionResult> GenerateFromUrl(string encodedUrl)
{
var url = HttpUtility.UrlDecode(encodedUrl);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
using var pdf = await renderer.RenderUrlAsPdfAsync(url);
Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
return File(pdf.BinaryData, "application/pdf");
}
[HttpGet("from-url")]
public async Task<IActionResult> GenerateFromUrl(string encodedUrl)
{
var url = HttpUtility.UrlDecode(encodedUrl);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
using var pdf = await renderer.RenderUrlAsPdfAsync(url);
Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
return File(pdf.BinaryData, "application/pdf");
}
Imports System.Web
Imports Microsoft.AspNetCore.Mvc
<HttpGet("from-url")>
Public Async Function GenerateFromUrl(encodedUrl As String) As Task(Of IActionResult)
Dim url = HttpUtility.UrlDecode(encodedUrl)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.ViewPortWidth = 1920
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(2000)
Using pdf = Await renderer.RenderUrlAsPdfAsync(url)
Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf")
Return File(pdf.BinaryData, "application/pdf")
End Using
End Function
ViewPortWidth ayari, basliksiz tarayicinin sayfayi PDF'e dönüştürmeden once ne kadar genislikte render edecegini belirler. 1920 piksellik bir görünüm alanı, modern duyarlı düzenleri masaüstü çözünürlükte yakalar. Render gecikmesi, JavaScript ağırlıklı tek sayfa uygulamalarının başlatmalarını tamamlamaları için zaman tanır ve ardından ekran görüntüsü alınır.
Daha gelişmiş yakalama senaryoları için IronPDF, JavaScript yürütme kontrolü, kimlik doğrulama gerektiren sayfalar için çerez iletimi ve görünüm alanı yakınlaştırma ayarlamaları destekler.
Bellek ve Performans Nasıl Yönetilir?
PDF oluşturma kaynak yogunlukludur. Her ChromePdfRenderer cagrisi bir basliksiz Chrome surec oluşturur ve her PdfDocument nesnesi rendered byte'lari bellekte saklar. Uygun imha, kaynak sızıntılarını önler ve yük altındaki bellek kullanımını öngörülebilir tutar.
Her zaman using cumleleri PdfDocument ile kullanin:
public IActionResult OptimizedPdfGeneration()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = false;
var processedHtml = GetHtmlTemplate("report")
.Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
.Replace("{{USER}}", "Test")
.Replace("{{REPORT_TYPE}}", "Report");
using var pdf = renderer.RenderHtmlAsPdf(processedHtml);
byte[] pdfBytes = pdf.BinaryData;
pdf.SaveAs("output.pdf");
return File(pdfBytes, "application/pdf");
}
public IActionResult OptimizedPdfGeneration()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = false;
var processedHtml = GetHtmlTemplate("report")
.Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
.Replace("{{USER}}", "Test")
.Replace("{{REPORT_TYPE}}", "Report");
using var pdf = renderer.RenderHtmlAsPdf(processedHtml);
byte[] pdfBytes = pdf.BinaryData;
pdf.SaveAs("output.pdf");
return File(pdfBytes, "application/pdf");
}
Imports System
Imports Microsoft.AspNetCore.Mvc
Public Class PdfController
Inherits Controller
Public Function OptimizedPdfGeneration() As IActionResult
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = False
Dim processedHtml = GetHtmlTemplate("report") _
.Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd")) _
.Replace("{{USER}}", "Test") _
.Replace("{{REPORT_TYPE}}", "Report")
Using pdf = renderer.RenderHtmlAsPdf(processedHtml)
Dim pdfBytes As Byte() = pdf.BinaryData
pdf.SaveAs("output.pdf")
Return File(pdfBytes, "application/pdf")
End Using
End Function
Private Function GetHtmlTemplate(templateName As String) As String
' Placeholder for the actual implementation
Return String.Empty
End Function
End Class
using cumlesi, byte dizinizini cikarir cikarmaz bir PdfDocument nesnesini hemen fisker, bir istisna alt dogru cagirise olsa bile. PDF'leri sıkça üreten uygulamalar için bu ek stratejileri değerlendirin:
- Önbelleğe al: Sıkça talep edilen PDF'leri bellek önbelleğinde veya disk üzerinde depolayın.
IMemoryCache, bir belge tanimlayici ve zaman damgasi ile anahtarlanmis byte dizinizini cache etmek icin kullanin. - Akış: Çok büyük belgeler için, büyük ardışık bellek blokları tahsis etmekten kaçınmak için bayt dizileri yerine PDF bellek akışları kullanın.
- Doğrusal hale getirme: Tarayıcıların, indirmenin tamamlanmasını beklemeden render yapabilmesi için düzleştirilmiş (hızlı web görünümü) çıktı etkinleştirin.
- Sıkıştırma: Sıkıştırılmış internet bağlantıları üzerinden belgeleri sunarken dosya boyutunu azaltmak için PDF sıkıştırma uygulayın.
IronPDF performans kılavuzu, yüksek verimli senaryolar için ek optimizasyon stratejilerini kapsar.
Optimize Edilmiş PDF Çıktısı Ne Üretir?

Güvenlik ve Tarayıcılar Arası Uyumluluk Nasıl Sağlanır?
Güvenlik ve güvenilirlik, PDF panel görüntülemesini üretime dağıtmadan önce dikkat gerektirir.
Girdi doğrulaması: Dinamik içeriği HTML şablonlarına enjekte etmeden önce daima temizleyin. Chrome motoru üzerinden render edilen temizlenmemiş kullanıcı girişi, sunucunuzu SSRF ve XSS saldırılarına maruz bırakabilir. Yerleşik HTML kodlama kütüphanelerini kullanın veya kabul edilen karakterleri güvenli bir izin listesine sınırlayın.
Erişim kontrolü: PDF uç noktalarınızı kimlik doğrulama ve yetkilendirme araç katmanı arkasında koruyun. /api/PdfPanel/display/12345 gibi bir URL, cagiricinin kimligini kontrol etmeden bir belgeyi geri donerse bir veri maruziyeti riski teskil eder. [Authorize] attrubitlerini ekleyin ve dogrulayin ki yetkilendirilmis kullanıcı, istenen belge ID'sine erişim iznine sahip olmalidir.
MIME tipi konfigürasyonu: Daima içerik tipi olarak application/pdf dondurun. Yanlis bir MIME tipi alan tarayicilar bir indirme dialogunu tetikleyebilir veya gövde bölgesinde render etmeyi reddedebilir. Uygulamanizin MIME tipi eslestirmelerinin PDF'i de içerdigini dogrulayin, eger sabit PDF dosyalarini wwwroot üzerinden de sagliyorsaniz.
Tarayicilar arasi gövde görüntüleme: Modern tarayicilar -- Chrome, Firefox, Edge, ve Safari -- hepsi Content-Disposition: inline başligi üzerinden gövde PDF görüntüleme destekler. W3C İçerik Güvenliği Politikası spesifikasyonu, panellerinizin farklı kökenl... anlardan PDF'leri yerleştirmesi durumunda çerçeve-atalar direktifleri için rehberlik sağlar. IronPDF'nin sunucu tarafı render etmesi, PDF üretimi client'tan bağımsız olarak gerçekleştiği için çoğu tarayıcı render tutarsızlıkları ortadan kaldırır.
Hata Yönetimi: PDF üretimini try-catch bloklarına sarın ve anlamlı HTTP durum kodları döndürün. Cevap gövdesi olmadan bir 500 yanıtı teşhis etmesi zordur. Yapici bir hata nesnesi geri dondurun ki istemci tarafındaki kod, kırılmış bir <iframe> değil daha kullanıcı dostu bir mesaj gösterilsin.
Belge güvenliği için IronPDF şifre koruması ve izinler, dijital imzalar ve arşiv gereksinimleri için PDF/A uygunluğu destekler.

Sıradaki Adımlarınız Neler?
Simdi ASP.NET panellerinde PDF görüntüleme icin calisan bir şemaniz var: IronPDF'i kurun, bir kontrol edici eylemi oluşturun ki bir PDF yaratir ve onu Content-Disposition: inline ile dondurur, ve o panelinizde bir <iframe> icine ucayi gemlendiriniz. Bundan sonra, AJAX modeli, kullanıcı eylemlerine yanıt olarak sayfa yeniden yüklemesi olmadan belgeleri dinamik olarak yüklemenizi sağlar.
IronPDF'in ücretsiz deneme sürümünü başlatın ve bu modelleri kendi projenizde test edin - kredi kartı gerekmez. Deneme sürümü, HTML'den PDF'e render, URL yakalama ve gelişmiş PDF manipülasyonu da dahil olmak üzere tüm özelliklere tam erişim içerir.
Temel görüntüleme çalışmasını sağladıktan sonra, şu doğal uzantıları düşünebilirsiniz:
- Belge montaj iş akışları için PDF dosyalarını birleştirin veya bölün.
- HTML formlarından doldurulabilir PDF formları oluşturun
- Belge doğrulama için dijital imzalar ekleyin
- İçeriği damgalamak, açıklama eklemek veya karartmak için mevcut PDF'leri düzenleyin
- Karmaşık rapor düzenleri için tam CSS ve JavaScript desteğiyle HTML'i PDF'e dönüştürün
IronPDF dokümantasyonu, bu yeteneklerin her birini derinlemesine ele alır, eksiksiz kod örnekleri ve yapılandırma referansı ile.
Sıkça Sorulan Sorular
PDF'leri ASP.NET panellerinde görüntülemenin amacı nedir?
PDF'leri ASP.NET panellerinde göstermek, geliştiricilerin belge yönetimi, rapor görüntüleme veya fatura gösterimi için web uygulamalarına doğrudan PDF belgeleri entegre etmelerini sağlar, kesintisiz bir kullanıcı deneyimi yaratır.
IronPDF, ASP.NET'te PDF'leri görüntülemeye nasıl yardımcı olabilir?
IronPDF, geliştiricilere ASP.NET panelleri içinde PDF belgelerini zahmetsizce oluşturmalarını ve göstermelerini sağlayan araçlar sunar, sorunsuz entegrasyon ve bütünleşik bir kullanıcı arayüzü sağlar.
IronPDF'nin ASP.NET uygulamalarında PDF görüntülemede ne gibi faydaları var?
IronPDF kullanımı, kolay PDF entegrasyonu sağlar, geliştirme süresini azaltır ve ASP.NET uygulamalarının işlevselliğini artırarak UI kontrollerinde yüksek kaliteli PDF oluşturma olanağı sağlar.
IronPDF, ASP.NET'te belge yönetim sistemleri oluşturmak için kullanılabilir mi?
Evet, IronPDF, PDF'leri ASP.NET panellerinde sorunsuz bir şekilde gösterebildiği için belge yönetim sistemleri oluşturmak için idealdir, belgelerin doğrudan web'de yönetilmesini ve görüntülenmesini geliştirmez.
IronPDF, PDF gösterimi için ASP.NET Core ile uyumlu mu?
IronPDF, ASP.NET Core ile tamamen uyumludur, geliştiricilerin panel kontrolleri kullanarak web uygulamalarında PDF belgelerini göstermesine olanak tanıyor, modern web entegrasyonunu sağlıyor.




