IRONSOFTWAREHOME
IRONPDF KULLANARAK

ASP.NET MVC PDF Görüntüleyicisi Nasıl Oluşturulur

Curtis Chau
Curtis Chau
Updated: 23 Nisan 2026

ASP.NET panel kontrollerinde PDF belgelerini görüntülemek, belge yönetim sistemleri, rapor görüntüleyiciler ve fatura gösterimleri için yaygın bir gerekliliktir. IronPDF bunu, istemci tarafı bağımlılıklarını ortadan kaldıran ve tüm tarayıcılar ve platformlar arasında tutarlı çalışan sunucu tarafı render işlemi ile çözmektedir.

ASP.NET Core web uygulamanıza PDF yerleştirmeniz gerektiğinde, tarayıcı eklentilerine veya istemci tarafı kütüphanelerine dayanmanın standart yaklaşımı kırılgandır. Kurumsal ortamlarındaki eklenti kısıtlamaları, tutarsız tarayıcı davranışı ve kötü mobil destek, kullanıcı deneyimini zedeler. Sunucu tarafı bir yaklaşım bu can sıkıcı noktaların her birini ortadan kaldırır.

IronPDF PDF oluşturma ve teslimatını tamamen sunucu tarafında ele alır, böylece tarayıcı doğru MIME türü ile standart bir PDF byte akışı alır -- eklenti gerekmez, tarayıcıya özgü geçici çözümler gerekli değildir.

IronPDF C# PDF Kütüphanesi ana sayfa bannerı, HTML'den PDF'e dönüştürme, PDF düzenleme yetenekleri, dağıtım seçenekleri ve ücretsiz deneme teklifi dahil olmak üzere anahtar özellikleri gösteriyor

Sunucu Tarafında PDF Render İşlemi ASP.NET'te Nasıl Çalışır?

IronPDF, PDF işleme işlemini tamamen Headless Chrome motorunu kullanarak sunucuya kaydırır. Kontrolcünüz bir PDF belgesi oluşturur veya alır, bunu bir byte dizisine dönüştürür ve bir inline Content-Disposition başlığı ile tarayıcıya iletir. Tarayıcının yerleşik PDF görüntüleyicisi daha sonra belgenin panelinizdeki bir <iframe> içinde gösterilmesini sağlar.

Bu temel değişiklik geleneksel can sıkıcı noktaları 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üne bakılmaksızın tutarlı render işlemi
  • Belge içeriği, düzeni ve stili üzerinde tam programatik kontrol
  • IT politikalarının eklenti kurulumlarını engellediği kurumsal ortamlarında çalışır

Kütüphanenin Chrome render motoru, HTML, URL ve ham içerik kaynaklarından piksel mükemmel çıktı üretir. Çıktının her yönünü kontrol edersiniz -- kağıt boyutu, kenar boşlukları, başlıklar, altbilgiler ve CSS medya türü -- PDF istemciye ulaşmadan önce.

IronPDF ayrıca Windows, Linux ve macOS sunucularda çapraz platform dağıtımı destekler, bu da onu Azure veya AWS üzerinde çalışan bulut barındırılan ASP.NET uygulamaları ve Docker kullanan konteynerize edilmiş ortamlar için uygun hale getirir.

IronPDF özellik genel bakışı, her kategori altında detaylı özellik listeleriyle dört ana kategori gösteriyor: PDF Oluşturma, PDF Dönüştürme, PDF Düzenleme, ve PDF İmza ve Güvenlik

NuGet Paketi Nasıl Kurulur?

Visual Studio'yu açın, Çözüm Gezgini'nde projenize sağ tıklayın ve NuGet Paketlerini Yönet seçeneğini seçin. IronPdf arayın ve yükleyin. Alternatif olarak Paket Yöneticisi Konsolunda bu komutu çalıştırın:

PM > Install-Package IronPdf

.NET CLI'yi dotnet add package IronPdf ile de kullanabilirsiniz. Kütüphanenin ad alanına erişmek için kontrolör veya hizmet sınıfınızın üstüne using IronPdf; ekleyin.

Optimal PDF teslimatı için statik dosyalar sunacak ve yönlendirmeyi ayarlayacak şekilde Program.cs yapılandırmanızı:

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();

AddControllersWithViews() kaydı, hem API uç noktalarını hem de görünüm işlemesini etkinleştirir -- bunlar PDF içeriğini özel kontrol eylemleri aracılığıyla sunmak ve Razor görünüm panellerinde göstermek istiyorsanız gereklidir. Tam konfigürasyon detayları için IronPDF API dökümantasyonunu danışabilirsiniz.

PDF Dosyası Nasıl Doğrudan Panel İçinde Görüntülenir?

Ana model basittir: bir kontrolör eylemi bir PDF oluşturur, bunu baytlara dönüştürür, Content-Disposition başlığını inline olarak ayarlar ve bir File sonucu döndürür. Razor görünümünde bir <iframe> bu uç noktaya işaret eder.

Tam denetleyici uygulaması burada verilmiştir:

[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");
    }
}
C#

ChromePdfRenderer sınıfı sunucu tarafı görüntüleme için birincil giriş noktasıdır. HTML içeriğini kabul eder, bunu Headless Chrome tarayıcısını kullanarak dönüştürür ve bir PdfDocument nesnesi döndürür. BinaryData özelliği, yayın akışı için ham byte'ları sunar.

Content-Disposition'yi inline olarak ayarlamak panel görüntüleme için kritik adımdır. Olmadan, tarayıcı indirime yönlendirme yapar ve bunu <iframe> içinde görüntülemek yerine. Tüm sayfalara başlıklar ve alt bilgiler ekleyebilir veya RenderingOptions ile sayfa yönlendirmesi ve özel kenar boşluklarını kontrol edebilirsiniz.

Bu uç noktayı bir Razor paneline yerleştirmek için kontrolör yoluna işaret 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>

<iframe> kontrolör uç noktasından PDF talep eder. Tarayıcının yerleşik PDF görüntüleyicisi, istemci tarafı kütüphane veya eklenti gerektirmeden belgeyi tam panel genişliğinde ve yüksekliğinde gösterir.

Oluşturulan PDF Nasıl Görünür?

Web tarayıcı, 12345 numaralı belgeyi ve oluşturulma zaman damgasını gösteren bir ASP.NET uygulamasında yerleştirilmiş PDF görüntüleyici

PDF'leri AJAX ile Dinamik Olarak Nasıl Yüklenir?

Statik <iframe> kaynakları sabit içerik için iyi çalışır, ancak birçok uygulama kullanıcı eylemlerine göre PDF yüklemesi gerektirir -- bir veri ızgarasındaki bir kaydı tıklatmak, bir form göndermek veya bir rapor türü seçmek. AJAX yönlendirmeli bir yaklaşım, bu senaryoları tam sayfa yeniden yüklemeden işler.

Denetleyici işlemi bir istek gövdesini kabul eder ve PDF'yi bir base64 dizesi olarak döner:

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

RenderingOptions bloğu, kağıt boyutunu, kenar boşluklarını ve CSS medya türünü işleme öncesinde yapılandırmanıza olanak tanır. Microsoft'un ASP.NET Core belgelerine göre, asenkron desenler yük altında duyarlı arayüzleri sürdürmek için esastır. Task.Run içindeki senkron işlemi sarmak, Chrome motoru HTML'yi işlerken istek iş parçacığını serbest tutar.

Base64 yanıtı, JavaScript istemcisine sayfayı yeniden yüklemeden <iframe> kaynağını doğrudan güncelleme olanağı sağlar:

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 model Razor Sayfaları ve MVC görünümleri için iyi çalışır. İleri düzey kullanım durumları için, IronPDF ayrıca asenkron işleme'yi doğal olarak destekler, böylece RenderHtmlAsPdfAsync'yı doğrudan Task.Run yerine kullanabilirsiniz.

Farklı PDF Kaynak Türleri Nasıl Yönetilir?

IronPDF üç birincil kaynaktan PDF oluşturabilir: HTML dizeleri, yerel HTML dosyaları ve dış URL'ler. Her biri farklı senaryolara uygundur.

HTML Şablonlarını PDF'lere Nasıl Dönüştürürsünüz?

Şablon bazlı oluşturma, kurumsal ASP.NET uygulamalarında en yaygın desendir. Placeholder değişkenleri ile HTML şablonlarını saklarsınız, çalıştırma zamanında veriyi eklersiniz ve sonucu renderlersiniz:

[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>";
}

CssMediaType.Print, PDF'in genellikle gezinme çubuklarını, kenar çubuklarını ve diğer sadece ekran öğelerini kaldıran baskıya özel CSS kurallarını kullanmasını sağlar. Bu, HTML şablonlarınız web görünümleri ve PDF oluşturma arasında paylaşıldığında daha temiz çıktı üretir. Ayrıca, marka oluşturmak için özel filigranlar veya arka plan görüntüleri uygulayabilirsiniz. Karmaşık düzenler için, sayfa kırma kontrolü, yeni sayfaların tam olarak nerede başlayacağını belirtmenizi sağlar.

HTML Şablon PDF Çıkışı Ne Görüntü İçerebilir?

PDF görüntüleyici, üzerinde 2025-11-18 tarihi ve 'Kullanıcı: Bilinmeyen' metni olan bir su işaretli htmltopdf raporunu çapraz desenli bir arka plan ile gösteriyor

Dış URL'lerden Nasıl PDF Üretilir?

Dış web sayfalarının -- rakip analizi, yönetmelik dosyaları veya üçüncü taraf hizmetlerden içerik -- yakalanması için, IronPDF herhangi bir genel erişimli 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");
}

ViewPortWidth ayarı, PDF'ye dönüştürmeden önce üst düzey tarayıcının sayfayı ne kadar geniş bir şekilde işlediğini belirler. 1920 piksel genişliğinde bir görüntüleme alanı, modern esnek düzenleri masaüstü çözünürlüğünde yakalar. render gecikmesi, JavaScript ağırlıkta tek sayfalı uygulamaların başlatılması için süre tanır, ardından ekran görüntüsü alınır.

Daha ileri yakalama senaryoları için, IronPDF JavaScript yürütme kontrolü, kimliği doğrulanmış sayfalar için çerez iletme ve görüntüleme alanı yakınlaştırma ayarlamaları destekler.

Bellek ve Performans Nasıl Yönetilir?

PDF oluşturma kaynak yoğun bir işlemdir. Her ChromePdfRenderer çağrısı bir Headless Chrome süreci başlatır ve her PdfDocument nesnesi işlenen baytları bellekte tutar. Uygun bertaraf, kaynak sızıntılarını önler ve yük altında bellek tüketimini öngörebilir tutar.

Her zaman using ifadelerini PdfDocument ile kullanın:

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

using ifadesi, PdfDocument nesnesinin bayt dizisini çıkardıktan hemen sonra, bir hata aşağı akışta oluşsa bile derhal yok edilmesini sağlar. Sık sık PDF üreten uygulamalar için bu ek stratejileri düşünün:

  • Önbellekleme: Sık istenen PDF'leri bellek önbelleğinde veya disk üzerinde saklayın. IMemoryCache kullanarak bayt dizisini, bir belge tanımlayıcısı ve zaman damgası ile önbelleğe alın.
  • Yayınlama: Çok büyük belgeler için, büyük bitişik bellek bloklarını tahsis etmekten kaçınmak için bayt dizileri yerine PDF bellek akışlarını kullanın.
  • Linearizasyon: Tarayıcıların tam dosya indirilmeden önce işlemi başlatabilmesi için linearize edilmiş (hızlı web görüntüsü) çıktı etkinleştirin.
  • Sıkıştırma: Belgeyi kısıtlı ağ bağlantıları üzerinden hizmet verirken dosya boyutunu küçültmek için PDF sıkıştırma uygulayın.

IronPDF performans rehberi, yüksek verim senaryoları için ek optimizasyon stratejilerini kapsar.

Optimize edilmiş PDF çıktısı ne üretir?

2025-11-18 tarihli ve kullanıcı 'Test' olan 'Report Geliştirme' başlıklı PDF belge görüntüleyici, %100 zoom ile Iron Software su işaretli olarak gösteriliyor

Güvenliği ve Çapraz Tarayıcı Uyumluluğu Nasıl Sağlarsınız?

PDF panel görüntüsünü üretime dağıtmadan önce güvenlik ve güvenilirlik dikkat ister.

Girdi doğrulama: Dinamik içeriği HTML şablonlarına eklemeden önce daima temizleyin. Chrome motoru üzerinden gösterilen 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 kısıtlayın.

Erişim kontrolü: PDF uç noktalarınızı kimlik doğrulama ve yetkilendirme ara yazılımı ile koruyun. /api/PdfPanel/display/12345 gibi bir belgeye arayan kişinin kimliğini kontrol etmeden belge döndüren bir URL veri açığa çıkma riski taşır. [Authorize] özniteliklerini uygulayın ve kimliği doğrulanmış kullanıcının talep edilen belge kimliğine erişme iznine sahip olduğunu doğrulayın.

MIME türü yapılandırması: Her zaman içerik türü olarak application/pdf döndürün. Yanlış bir MIME türü alan tarayıcılar bir indirme diyalogu başlatabilir veya satır içi işlemeyi reddedebilir. Uygulamanızın MIME türü eşlemelerinin, wwwroot'den statik PDF dosyaları da sunuyorsanız PDF'i içermesini doğrulayın.

Tarayıcılar arası satır içi ekran gösterimi: Modern tarayıcılar -- Chrome, Firefox, Edge, ve Safari -- hepsi Content-Disposition: inline başlığı üzerinden satır içi PDF ekranını destekler. W3C İçerik Güvenlik Politikası spesifikasyonu, panelleriniz farklı kökenlerden PDF embed ediyorsa çerçeve-atası direktifleri hakkında rehberlik sağlar. IronPDF'in sunucu tarafı işleme, PDF oluşturmanın istemciden bağımsız olması nedeniyle tarayıcı işleme tutarsızlıklarının çoğunu ortadan kaldırır.

Hata işleme: PDF oluşturmayı try-catch blokları içine alın ve anlamlı HTTP durum kodları döndürün. Bodysiz bi 500 yanıtını teşhis etmek zordur. İstemci tarafı kodu kırık bir <iframe> yerine kullanıcı dostu bir mesaj gösterebilmesi için yapısal bir hata nesnesi döndürün.

Belge güvenliği için IronPDF, arşiv gereksinimleri için şifre koruma ve izinler, dijital imzalar ve PDF/A uyumluluğu destekler.

IronPDF çapraz platform desteği diyagramı, .NET sürümleri, işletim sistemleri, geliştirme ortamları, C#, F#, VB.NET, Java, Node.js ve Python dahil olmak üzere programlama dilleri ile uyumluluğu gösteriyor

Sonraki Adımlarınız Neler?

Şimdi ASP.NET panellerinde PDF görüntüleme için çalışan bir modeliniz var: IronPDF'i yükleyin, bir PDF üreten ve onu Content-Disposition: inline ile döndüren bir kontrolör eylemi oluşturun ve uç noktayı bir <iframe> içinde Razor panelinize yerleştirin. Buradan AJAX deseni, kullanıcı eylemlerine yanıt olarak belgeleri sayfa yeniden yüklemeleri olmadan dinamik olarak yüklemenizi sağlar.

Kendi projenizde bu desenleri test etmek için IronPDF'in ücretsiz deneme sürümünü başlatın -- kredi kartı gerekmez. Deneme, HTML'den PDF'e dönüştürme, URL yakalama ve gelişmiş PDF manipülasyonu dahil tüm özelliklere tam erişim içerir.

Temel ekran çalışmasını sağladıktan sonra, bu doğal uzantıları düşünün:

IronPDF dokümantasyonu bu yeteneklerin her birini detaylıca kapsar, tam kod örnekleri ve yapılandırma referansıyla.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez