Altbilgi içeriğine atla
IRONPDF KULLANARAK

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.

IronPDF C# PDF Kutuphanesi ana sayfa afisi, HTML'den PDF'e donusum, PDF duzenleme yetenekleri, dağıtim seçenekleri ve ücretsiz deneme teklifi gibi temel özellikleri gösteriyor

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.

IronPDF özellikler genel gorunumu, dort ana kategori gösteriyor: PDF yaratma, PDF donusum, PDF duzenleme ve PDF imzalama ve guvenlik, her kategorinin altinda detayli özellik listeleri

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()
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.
$vbLabelText   $csharpLabel

<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?

ASP.NET uygulamasina gomulu bir PDF görüntüleyici gösteriyor, Document #12345'i oluşturma tarih bilgisiyle sergiliyor

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
$vbLabelText   $csharpLabel

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;
    }
});
JAVASCRIPT

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
$vbLabelText   $csharpLabel

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?

Bir htmltopdf raporu su izli su izli arka tempus resmiyle, 2025-11-18 tarihi ve 'Kullanıcı: Unknown' metniyle su izli su izli arka tempus resmiyle 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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?

Iron Software su izleri ile, 2025-11-18 tarihi ve kullanıcı 'Deneme' ile bir 'Raporu Geliştir' PDF belgesi görüntüleyici 100% zoom seviyesinde gösteren

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.

IronPDF cross-platform destek diyagrami, .NET versiyonlari, isletim sistemleri, geliştirme ortamlari ve C#, F#, VB.NET, Java, Node.js, ve Python dahil programlama dilleriyle uyumlulugu gösteriyor

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:

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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara