Altbilgi içeriğine atla
IRONPDF KULLANARAK

ASP.NET Core'da PDF Görüntüleyici: C# ile PDF'leri Çevrimiçi Görüntüleme

ASP.NET Core uygulamasına bir PDF görüntüleyici oluşturmak, çoğu geliştiricinin beklediğinden daha kolaydır. PDF'leri sunucu tarafında üreterek ve doğru MIME türüyle iade ederek, belgeleri doğrudan modern bir tarayıcıda görüntüleyebilirsiniz -- eklenti yok, Adobe Acrobat Reader gerekmez. IronPDF, Chrome tabanlı motoru aracılığıyla render işlemini gerçekleştirir, HTML, CSS ve JavaScript'i yüksek sadakatle PDF'lere dönüştürür, ve bunlar tarayıcının yerleşik görüntüleyicisinde çevrimiçi olarak görünür.

Bu eğitim, her önemli senaryoyu adım adım açıklar: HTML dizelerinden oluşturulan PDF'lerin görüntülenmesi, canlı URL'lerin render edilmesi, Razor görünümlerinin dönüştürülmesi, büyük dosyaların akışı ve bunların tümü ASP.NET Core MVC denetleyicisinde nasıl bir araya getirileceği. Kod örnekleri, üst düzey ifadelerle uyumlu olduğu yerlerde .NET 10'u hedefler.

Tarayıcı Tabanlı PDF Görüntüleme ASP.NET'te Nasıl Çalışır?

Modern tarayıcılar yerleşik bir PDF görüntüleyici ile birlikte gelir. Bir sunucu, tarayıcıya belgenin satır içinde görüntülenmesini sağlayan Content-Type: application/pdf üst bilgisiyle yanıt verdiğinde, dosya indirme tetiklenmez. Anahtar, bu üst bilgiyi Content-Disposition: inline ile eşleştirmektir.

Sunucu tarafında, görev'iniz geçerli bir PDF ikili verisi üretmek ve bu veriyi FileResult aracılığıyla geri döndürmektir. Tarayıcı, sayfalama, yakınlaştırma, metin seçimi, arama, yazdırma ve indirme işlemlerini ekstra UI kodu olmadan sizin yerinize halleder.

IronPDF bu modele doğrudan uyum sağlar. Bu ChromePdfRenderer sınıfı, HTML'yi (veya bir canlı URL'yi) bir PDF ikili verisine dönüştürür ve bu ikili veriyi ASP.NET'in File() yardımcısına doğrudan iletirsiniz. Sonuç, Chrome, Firefox, Edge ve Safari'de çalışan tam özellikli bir doküman görüntüleyicisidir.

Çağdaş tarayıcılar, yerleşik görüntüleyici motorları aracılığıyla W3C PDF render spesifikasyonunu uygular, bu da sunucunuzdan dönen herhangi bir uyumlu PDF'nin ekstra yapılandırma gerektirmeden doğru şekilde görüntüleneceği anlamına gelir. IronPDF'in çıktısı tamamen standartlara uyumludur, bu nedenle tarayıcı sürümlerinde tutarlı render işlemlerine güvenebilirsiniz.

Kapsayıcı dağıtımlarında, IronPDF, resmi Docker görüntüleri sağlar, bu da Chromium bağımlılıklarını önceden yapılandırır, böylece her düğüme Chrome manuel olarak yüklemeniz gerekmez. Linux ve Windows kapsayıcıları desteklenmektedir. PDF üretimini bağımsız olarak ölçeklendirmeniz gerekiyorsa, IronPDF Engine Docker görüntüsü, render işlemini ayrı bir mikro hizmet olarak yürütmenize olanak tanır.

IronPDF ASP.NET Core Projeye Nasıl Yüklenir?

ASP.NET Core projenizi Visual Studio'da açın ve ardından IronPDF'i NuGet Paket Yöneticisi Konsolu üzerinden yükleyin:

Install-Package IronPdf
Install-Package IronPdf
SHELL

Ya da .NET CLI kullanın:

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

Lisans anahtarınızı kurulumdan sonra, herhangi bir IronPDF API'sini çağırmadan önce Program.cs ekleyin:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Azure dağıtımlarında, lisans anahtarını Azure Anahtar Kasası veya Uygulama Yapılandırmasında saklayın, doğrudan kodlamak yerine. AWS Lambda dağıtımlarında, Lambda işlev ayarlarınızda yapılandırılmış ortam değişkenlerini kullanın.

Tüm yapılandırma bu kadar. IronPDF, Windows'ta çalışma zamanında Chromium'u otomatik olarak algılar ve yapılandırır. Linux için, gerek duyulan birkaç sistem paketi hakkında bilgi almak için Linux kurulum kılavuzuna başvurun.

Üretim için bir lisans katmanı seçmeden önce tam özellik setini değerlendirmek üzere ücretsiz bir deneme ile başlayabilirsiniz.

HTML Dizesinden PDF Nasıl Üretilir ve Görüntülersiniz?

Bir kullanıcıya PDF'yi en hızlı şekilde sunmanın yolu, bir HTML dizesi işlemek ve bunu satır içinde geri döndürmektir. PdfController adında bir denetleyici oluşturun ve buna benzer bir eylem ekleyin:

using IronPdf;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

public class PdfController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.WaitFor.RenderDelay(100);
        _renderer.RenderingOptions.Timeout = 30;
    }

    public IActionResult DisplayFromHtml()
    {
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1   { color: #2c3e50; }
                    p    { line-height: 1.7; color: #444; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
            </body>
            </html>";

        PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);

        Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

public class PdfController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.WaitFor.RenderDelay(100);
        _renderer.RenderingOptions.Timeout = 30;
    }

    public IActionResult DisplayFromHtml()
    {
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1   { color: #2c3e50; }
                    p    { line-height: 1.7; color: #444; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
            </body>
            </html>";

        PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);

        Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()

Dim app = builder.Build()
app.MapControllerRoute(name:="default", pattern:="{controller=Home}/{action=Index}/{id?}")
app.Run()

Public Class PdfController
    Inherits Controller

    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer()
        _renderer.RenderingOptions.WaitFor.RenderDelay(100)
        _renderer.RenderingOptions.Timeout = 30
    End Sub

    Public Function DisplayFromHtml() As IActionResult
        Dim html As String = "
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1   { color: #2c3e50; }
                    p    { line-height: 1.7; color: #444; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
            </body>
            </html>"

        Dim pdf As PdfDocument = _renderer.RenderHtmlAsPdf(html)

        Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf")
        Return File(pdf.BinaryData, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Tarayıcıda Render Edilen PDF Neye Benziyor?

Tarayıcıda 'Örnek PDF Belgesi' başlıklı ve 'Bu PDF IronPDF kullanılarak ASP.NET Core'da oluşturulmuştur' metniyle bir PDF belgesi gösterilir, konum localhost:7254/Pdf/DisplayFromHtml

ChromePdfRenderer kaputun altında Chromium kullanır, bu yüzden CSS grid, flexbox, web fontları ve modern CSS özelliklerinin tümü doğru şekilde işlenir. Content-Disposition ayarını inline olarak belirlemek, tarayıcıya dosyayı görüntülemesini, kaydetmek yerine bunu yapmasını söyler. Bu değeri attachment olarak değiştirirseniz, tarayıcı kullanıcıdan indirme yapmasını ister.

Karmaşık düzenlere sahip belgeler için, özel kağıt boyutları, kenar boşlukları ve yazdırma CSS medya türü gibi render seçenekleri aracılığıyla çıkışı ince ayarlayabilirsiniz. Ağ gecikmesinin dış kaynak yüklemesini geciktirebileceği kapsayıcı ortamlarda, WaitFor API özellikle yararlıdır.

HTML dönüştürme seçenekleri hakkında daha derinlemesine bir bakış için HTML dizesinden PDF'ye rehberine bakın.

URL'lerden ve Razor Görünümlerinden PDF dosyaları nasıl Render Edilir?

IronPDF, herhangi bir canlı web sayfasını PDF olarak yakalayabilir -- bu, web içeriği arşivleme veya mevcut sayfalardan rapor oluşturma için idealdir. ASP.NET Core belgeleri, denetleyici eylemlerinin nasıl sonuç döndüreceğini kapsamaktadır, bu, burada kullanılan desendir.

public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    renderer.RenderingOptions.WaitFor.NetworkIdle();

    PdfDocument pdf = renderer.RenderUrlAsPdf(url);

    Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
    Response.Headers.Append("Cache-Control", "public, max-age=3600");
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    renderer.RenderingOptions.WaitFor.NetworkIdle();

    PdfDocument pdf = renderer.RenderUrlAsPdf(url);

    Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
    Response.Headers.Append("Cache-Control", "public, max-age=3600");
    return File(pdf.BinaryData, "application/pdf");
}
Public Function RenderFromUrl(Optional url As String = "https://en.wikipedia.org/wiki/Main_Page") As IActionResult
    Dim renderer As New ChromePdfRenderer()
    renderer.RenderingOptions.EnableJavaScript = True
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    renderer.RenderingOptions.WaitFor.NetworkIdle()

    Dim pdf As PdfDocument = renderer.RenderUrlAsPdf(url)

    Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf")
    Response.Headers.Append("Cache-Control", "public, max-age=3600")
    Return File(pdf.BinaryData, "application/pdf")
End Function
$vbLabelText   $csharpLabel

URL Tabanlı PDF Render, Nasıl Görünür?

IronPDF kullanılarak bir ASP.NET web uygulamasında işlenmiş Wikipedia ana sayfasını gösteren bir PDF görüntüleyici ekran yakalaması, ana sayfa içeriği ve tam CSS stilleme korunmuş gezinme öğeleri

Bir Razor görünümünü dönüştürmeniz gerektiğinde -- örneğin bir fatura veya bildirim şablonu -- önce görünümü bir HTML dizesine render edin, sonra bu dizeyi IronPDF'e geçin. Bu, şablonlarınızı hem web hem de PDF çıktıları arasında yeniden kullanılabilir tutar:

public async Task<IActionResult> ViewToPdf()
{
    var model = new InvoiceModel
    {
        InvoiceNumber = 1001,
        InvoiceDate   = DateTime.Now,
        CustomerName  = "Acme Corp.",
        Items = new List<ItemModel>
        {
            new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
            new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
        }
    };
    model.TotalAmount = model.Items.Sum(i => i.LineTotal);

    string htmlContent = await RenderViewToStringAsync("Invoice", model);

    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop    = 40;
    renderer.RenderingOptions.MarginBottom = 40;

    string baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl);

    return File(pdf.BinaryData, "application/pdf");
}

private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    var actionContext = new ActionContext(
        HttpContext, RouteData, ControllerContext.ActionDescriptor);

    var viewEngine      = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
    var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
    var tempData        = tempDataFactory.GetTempData(HttpContext);

    ViewData.Model = model;

    var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
    if (!viewResult.Success)
    {
        string searched = string.Join(
            Environment.NewLine,
            viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException(
            $"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}");
    }

    await using var writer      = new StringWriter();
    var             viewContext = new ViewContext(
        actionContext, viewResult.View, ViewData, tempData,
        writer, new HtmlHelperOptions());

    await viewResult.View.RenderAsync(viewContext);
    return writer.ToString();
}
public async Task<IActionResult> ViewToPdf()
{
    var model = new InvoiceModel
    {
        InvoiceNumber = 1001,
        InvoiceDate   = DateTime.Now,
        CustomerName  = "Acme Corp.",
        Items = new List<ItemModel>
        {
            new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
            new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
        }
    };
    model.TotalAmount = model.Items.Sum(i => i.LineTotal);

    string htmlContent = await RenderViewToStringAsync("Invoice", model);

    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop    = 40;
    renderer.RenderingOptions.MarginBottom = 40;

    string baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl);

    return File(pdf.BinaryData, "application/pdf");
}

private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    var actionContext = new ActionContext(
        HttpContext, RouteData, ControllerContext.ActionDescriptor);

    var viewEngine      = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
    var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
    var tempData        = tempDataFactory.GetTempData(HttpContext);

    ViewData.Model = model;

    var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
    if (!viewResult.Success)
    {
        string searched = string.Join(
            Environment.NewLine,
            viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException(
            $"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}");
    }

    await using var writer      = new StringWriter();
    var             viewContext = new ViewContext(
        actionContext, viewResult.View, ViewData, tempData,
        writer, new HtmlHelperOptions());

    await viewResult.View.RenderAsync(viewContext);
    return writer.ToString();
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.ViewEngines
Imports Microsoft.AspNetCore.Mvc.Rendering
Imports Microsoft.AspNetCore.Mvc.ViewFeatures
Imports Microsoft.Extensions.DependencyInjection
Imports IronPdf

Public Class YourController
    Inherits Controller

    Public Async Function ViewToPdf() As Task(Of IActionResult)
        Dim model As New InvoiceModel With {
            .InvoiceNumber = 1001,
            .InvoiceDate = DateTime.Now,
            .CustomerName = "Acme Corp.",
            .Items = New List(Of ItemModel) From {
                New ItemModel With {.Description = "Product A", .Quantity = 2, .UnitPrice = 50.0D},
                New ItemModel With {.Description = "Service B", .Quantity = 1, .UnitPrice = 150.0D}
            }
        }
        model.TotalAmount = model.Items.Sum(Function(i) i.LineTotal)

        Dim htmlContent As String = Await RenderViewToStringAsync("Invoice", model)

        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.MarginTop = 40
        renderer.RenderingOptions.MarginBottom = 40

        Dim baseUrl As String = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"
        Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent, baseUrl)

        Return File(pdf.BinaryData, "application/pdf")
    End Function

    Private Async Function RenderViewToStringAsync(viewName As String, model As Object) As Task(Of String)
        Dim actionContext As New ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor)

        Dim viewEngine As IRazorViewEngine = HttpContext.RequestServices.GetRequiredService(Of IRazorViewEngine)()
        Dim tempDataFactory As ITempDataDictionaryFactory = HttpContext.RequestServices.GetRequiredService(Of ITempDataDictionaryFactory)()
        Dim tempData As ITempDataDictionary = tempDataFactory.GetTempData(HttpContext)

        ViewData.Model = model

        Dim viewResult As ViewEngineResult = viewEngine.FindView(actionContext, viewName, isMainPage:=False)
        If Not viewResult.Success Then
            Dim searched As String = String.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty(Of String)())
            Throw New InvalidOperationException($"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}")
        End If

        Await Using writer As New StringWriter()
            Dim viewContext As New ViewContext(actionContext, viewResult.View, ViewData, tempData, writer, New HtmlHelperOptions())

            Await viewResult.View.RenderAsync(viewContext)
            Return writer.ToString()
        End Using
    End Function
End Class

Public Class InvoiceModel
    Public Property InvoiceNumber As Integer
    Public Property InvoiceDate As DateTime
    Public Property CustomerName As String
    Public Property Items As List(Of ItemModel)
    Public Property TotalAmount As Decimal
End Class

Public Class ItemModel
    Public Property Description As String
    Public Property Quantity As Integer
    Public Property UnitPrice As Decimal

    Public ReadOnly Property LineTotal As Decimal
        Get
            Return Quantity * UnitPrice
        End Get
    End Property
End Class
$vbLabelText   $csharpLabel

Razor Görünümünden PDF Üretimin Sonuçları Nelerdir?

PDF invoice displayed in a web browser showing Invoice #1001 for Acme Corp with two line items totaling $250.00, demonstrating successful Razor view to PDF conversion

baseUrl parametresi, Razor görünümünüzün göreli CSS veya görüntü yollarına referans verdiği durumlarda önemlidir. Geçerli ana makine URL'sini geçirmek, IronPDF'in bu yolları doğru şekilde çözmesini sağlar. Razor'dan PDF'e rehberine Blazor uygulama kalıpları dahil olmak üzere tam yürütme için bakın.

Akış ile Büyük PDF Dosyaları Nasıl Yönetilir?

Birkaç megabayt büyüklüğünde olabilecek belgeler için, akış, bellek tepe kullanımını azaltır ve baytları daha hızlı sunucuya teslim etmeye başlar. Ham bir bayt dizisiyle FileStreamResult yerine File() kullanın:

public async Task<IActionResult> StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false;

    PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(
        "<h1>Large Document</h1><p>Full content here...</p>");

    pdf.CompressImages(80);

    var stream = new MemoryStream(pdf.BinaryData);

    Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString());
    Response.Headers.Append("Accept-Ranges",  "bytes");

    return new FileStreamResult(stream, "application/pdf");
}
public async Task<IActionResult> StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false;

    PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(
        "<h1>Large Document</h1><p>Full content here...</p>");

    pdf.CompressImages(80);

    var stream = new MemoryStream(pdf.BinaryData);

    Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString());
    Response.Headers.Append("Accept-Ranges",  "bytes");

    return new FileStreamResult(stream, "application/pdf");
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc

Public Class YourController
    Inherits Controller

    Public Async Function StreamLargePdf() As Task(Of IActionResult)
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.CreatePdfFormsFromHtml = False

        Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Full content here...</p>")

        pdf.CompressImages(80)

        Dim stream As New MemoryStream(pdf.BinaryData)

        Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString())
        Response.Headers.Append("Accept-Ranges", "bytes")

        Return New FileStreamResult(stream, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

CompressImages(80), JPEG kalitesini %80'e düşürür, bu da görünüşte minimum kalite kaybı ile dosya boyutunu önemli ölçüde azaltır. Accept-Ranges: bytes ayarlanması, tarayıcıya bayt aralık dilimlerini isteyebileceğini bildiren bir sinyaldir, bu da büyük PDF'ler içinde tamamını indirmeden daha hızlı bir arama yapmayı sağlar.

ISO'dan PDF/A standardı arşiv kalitesinde PDF gereksinimlerini tanımlar. Uygulamanız uzun vadeli arşiv belgeleri üretmek zorunda kalıyorsa, IronPDF'in PDF/A uyumluluk modu, çıktının bu standartları karşılamasını garantiler, bu özellikle düzenleyici veya yasal iş akışları için önemlidir.

Eski ASP.NET Web Forms projeleri için, model biraz farklıdır çünkü doğrudan HTTP yanıtına yazarsınız:

protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    using var renderer = new ChromePdfRenderer();
    PdfDocument pdf    = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(pdf.BinaryData);
    Response.End();
}
protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    using var renderer = new ChromePdfRenderer();
    PdfDocument pdf    = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(pdf.BinaryData);
    Response.End();
}
Protected Sub btnGeneratePdf_Click(sender As Object, e As EventArgs)
    Using renderer As New ChromePdfRenderer()
        Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>")
        Response.ContentType = "application/pdf"
        Response.BinaryWrite(pdf.BinaryData)
        Response.End()
    End Using
End Sub
$vbLabelText   $csharpLabel

Birçok PDF'nin eş zamanlı olarak üretildiği iş yükleri için, hafıza yükünü azaltan ayarlar için IronPDF async API kılavuzunu ve performans optimizasyon referansını inceleyin.

Tarayıcı Tabanlı Görüntüleyici Kullanıcılarınıza Hangi Özellikleri Sunar?

Tarayıcı bir PDF'yi çevrim içi görüntülediğinde, otomatik olarak tam özellikli bir görüntüleyici elde eder. Kullanıcılarınız içerik kopyalamak için metin seçimi, belirli kelime veya numaraları bulmak için yerleşik arama çubuğu, yazdırma kontrolleri ve tek tıklamayla indirme işlemlerini gerçekleştirebilir - bunların tümü için ön uç kodu yazmanıza gerek yoktur.

Temel görüntüleme dışında, IronPDF kullanıcıların görüntüleyicide gördüklerini etkileyen geniş bir belge özelliği yelpazesini destekler:

Aşağıdaki tablo, kütüphanede mevcut olan birincil dönüşüm yöntemlerini ve her birinin ne zaman kullanılacağını özetler:

IronPDF dönüşüm yöntemleri ve önerilen kullanım durumları
Yöntem Girdi En İyi Kullanım Amacı
RenderHtmlAsPdf HTML dizesi Şablonlu belgeler, faturalar, raporlar
RenderUrlAsPdf URL Web sayfası arşivleme, canlı içerik anlık görüntüleri
RenderHtmlAsPdf + Razor İşlenmiş görünüm HTML Mevcut MVC şablonlarını PDF olarak yeniden kullanma
RenderHtmlFileAsPdf Yerel HTML dosyası Diskte saklanan statik şablonlar

Konteynerleştirilmiş dağıtımlar için IronPDF, PDF oluşturmayı özel bir mikro hizmet olarak çalıştırabilmeniz için uzak motor desteği de sağlamaktadır. Kaynak sınırlı ortamlara göre ayarlanmış ayarlar için bellek optimizasyon kılavuzunu inceleyin.

Kabiliyetlere yönelik tam genel bakış için, IronPDF özellikler sayfasını ziyaret edin.

IronPDF Hangi Biçimlendirme ve Düzenleme Seçeneklerini Destekliyor?

IronPDF, temel işleme işlemlerinin çok ötesine geçer. Aşağıdaki seçenekleri kullanarak her belgeye yapı ve marka ekleyebilirsiniz.

Sayfa düzeni kontrolleri arasında özel kağıt boyutları, yön ayarları ve kenar boşluğu yapılandırması bulunur. Yazı tipi desteği, belgelerin marka yazı tiplerinizi tam olarak eşleştirdiği anlamına gelen, CSS @font-face deklarasyonları aracılığıyla tam web yazı tiplerini içerir. Ayrıca PDF sayfalarına resim ekleyebilir ve boyutlandırabilir, görsel sadakat üzerinde tam kontrol sağlayabilirsiniz.

Belge manipülasyonu için IronPDF, mevcut PDF'leri birleştirmenize veya ayırmanıza, bireysel sayfalar eklemenize veya kaldırmanıza ve metin ve resimleri programlama yoluyla çıkarmanıza olanak tanır. Yakalama öncesi JavaScript yürütülmesi, dinamik grafikler ve veri görselleştirmeyi destekler -- Chart.js veya D3.js gibi istemci tarafı işleme kütüphanelerine dayanan raporlar oluştururken faydalıdır.

Bu yetenekler, ayrı bir belge işleme katmanı olmadan uygulamanızdan doğrudan cilalı, baskıya hazır belgeler üretmenize olanak tanır.

Kullanıcı tarafından yüklenen PDF'leri kabul etmek ve bunları oluşturulan belgelerle birlikte görüntülemek istiyorsanız, IronPDF mevcut PDF ikili dosyalarını yeni oluşturdukları kadar kolay okur. PdfDocument.FromFile() ile bir dosya yükleyin ve BinaryData 'u aynı File() yardımcısı aracılığıyla geri döndürün.

Varolan belgeleri düzenleme, açıklama ekleme ve değiştirme konusunda ayrıntılı bir yol haritası için C# PDF düzenleme kılavuzunu inceleyin.

IronPDF Alternatif Yöntemlerle Nasıl Karşılaştırılır?

IronPDF sunucu tarafı yaklaşımına en yaygın iki alternatif, istemci tarafı bir PDF görüntüleyici kitaplığını gömme (örneğin Mozilla'nın açık kaynaklı görüntüleyicisi olan PDF.js) ve kullanıcıları ayrı bir belge yönetim sistemine yönlendirmektir.

PDF.js gibi istemci tarafı görüntüleyiciler, basit görüntüleme durumları için iyi çalışır, ancak görüntüleyici JavaScript paketi sunmayı, dış PDF'ler için CORS'u yönetmeyi ve tarayıcı uyumluluğunu kendiniz yönetmeyi gerektirir. IronPDF ile sunucu tarafı oluşturma, PDF hattını tamamen .NET yığınına alır, güvenlik politikasını basitleştirir ve çapraz köken karmaşıklığından kaçınır.

Özel bir belge yönetim sistemi, çoğu web uygulamasının ihtiyaç duymadığı bir operasyonel yük ekler. Zaten ASP.NET Core çalıştıran ekipler için, denetleyiciden doğrudan PDF oluşturmak ve akışı sağlamak direnç yolu en az olan yoldur.

Sıradaki Adımlarınız Neler?

Bir ASP.NET Core web uygulamasında PDF'leri görüntülemek sadece birkaç satır kod alır. ChromePdfRenderer ile PDF oluşturun, Content-Disposition: inline ayarını yapın ve bir FileResult döndürün -- tarayıcının yerleşik görüntüleyicisi her şeyi ele alır.

Üretim dağıtımları için, işte kurulumunuzu hazırlamak için bu adımları düşünün:

Projenize PDF görüntüleme eklemeye hazır mısınız? Ücretsiz bir denemeyle başlayın ve yukarıdaki örnekleri birkaç dakika içinde çalıştırın. Dağıtmaya hazır olduğunuzda, ekibinizin büyüklüğü ve kullanımınıza uygun lisanslama seçeneklerini inceleyin. İlgili dönüşümleri keşfetmek için IronPDF'nin DOCX'ten PDF'e, görüntüden PDF'e ve diğer formatları nasıl ele aldığını kılavuz kitaplığında gezin.

Şimdi IronPDF ile başlayın.
green arrow pointer

Sıkça Sorulan Sorular

ASP.NET web uygulamasında nasıl PDF görüntüleyici oluşturabilirim?

ASP.NET web uygulamasında IronPDF kullanarak bir PDF görüntüleyici oluşturabilirsiniz. Bu, PDF belgelerini doğrudan uygulamanızda görüntülemenize imkan tanır ve Adobe Acrobat Reader gibi harici araçlar gerektirmeden kesintisiz bir görüntüleme deneyimi sunar.

ASP.NET'te PDF görüntüleme için IronPDF kullanmanın faydaları nelerdir?

IronPDF, ASP.NET uygulamalarında sorunsuz ve entegre bir PDF görüntüleme deneyimi sunar. Belgeleri satır içine gömerek göstermenizi sağlar, çeşitli dosya türlerini destekler ve üçüncü taraf PDF görüntüleyicilere olan ihtiyaçı ortadan kaldırır, kullanıcı deneyimini iyileştirir.

ASP.NET web uygulamamda etkileşimli PDF formları görüntüleyebilir miyim?

Evet, IronPDF ile ASP.NET web uygulamanızda etkileşimli PDF formları görüntüleyebilirsiniz. Form alanlarının ve etkileşimli elemanların render edilmesini destekler, böylece kullanıcılar belgelerle doğrudan tarayıcıda etkileşim kurabilirler.

IronPDF'yi kullanarak ASP.NET'te faturaları ve raporları sergilemek mümkün mü?

Kesinlikle, IronPDF, faturaları, raporları ve diğer belgeleri ASP.NET uygulamalarında görüntülemek için uygundur. Belgelerinizin web uygulaması içinde doğru ve verimli bir şekilde rendering edilmesini sağlar.

IronPDF kullanırken ASP.NET uygulamalarında PDF'leri görüntülemek için Adobe Acrobat Reader'a ihtiyaçım var mı?

Hayır, IronPDF kullanarak ASP.NET uygulamalarında PDF'leri görüntülemek için Adobe Acrobat Reader'a ihtiyaçınız yoktur. Üçüncü taraf bağımlılıklara gerek kalmadan PDF'leri doğrudan tarayıcıda render etmenize ve görüntülemenize olanak tanır.

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