Altbilgi içeriğine atla
IRONPDF KULLANARAK

IronPDF kullanan bir Blazor PDF Görüntüleyici nasıl oluşturulur

Bir Blazor PDF görüntüleyicisi, PDF belgelerini bir base64 veri URI'sine dönüştürerek online olarak görüntüler ve sonucu bir <iframe> öğesinde yükler. IronPDF'nin ChromePdfRenderer 'si HTML metinlerini, canlı URL'leri veya dinamik içeriği tek bir asenkron çağrıda PDF byte'larına dönüştürür, böylece Blazor Server ve Blazor WebAssembly uygulamaları, harici görüntüleyici eklentilerine gerek kalmadan tam PDF oluşturma ve görüntüleme yeteneğine sahip olur.

İş uygulamaları düzenli olarak kullanıcıları başka bir sekmeye yönlendirmeden veya cihazlar arasında değişen tarayıcı PDF desteğine güvenmeden fatura, sözleşme ve rapor göstermelidir. Blazor'un bileşen modeli, kütüphanenin dönüşümü güvenilir bir şekilde ele alması koşuluyla, sunucu tarafında bir PDF oluşturmayı, kodlamayı ve herhangi bir sayfa bileşenine günlük etmesini basitleştirir.

Kılavuz, kurulum, URL ve HTML tabanlı oluşturma, başlıklar ve altbilgilerle özelleştirme, JavaScript etkileşimini kullanarak tarayıcı indirmeleri, Blazor Sunucusu ve Blazor WebAssembly yaklaşımlarının karşılaştırması ve dört genişletilmiş operasyonu kapsıyor: birleştirme, açıklamalar, şifre koruma ve kullanıcı yüklenmiş dosya görüntüleme. Her teknik için Razor bileşenleri ve eşdeğer üst düzey C# örnekleri sağlanmıştır.

Ücretsiz IronPDF denemesine katılın ve bu kılavuzdaki örneklerle adım adım ilerleyin.

Blazor Projesinde IronPDF ile Nasıl Başlarım?

Başlamak için NuGet paketini yüklemek ve bir lisans anahtarını Program.cs eklemek gerekir. IronPDF'i Paket Yöneticisi Konsolundan kurun:

Install-Package IronPdf

Alternatif olarak, NuGet Paket Yöneticisi UI'sinde "IronPdf" arayın ve en son sürümü seçin.

NuGet NuGet ile Yükle

PM >  Install-Package IronPdf

IronPDF üzerine NuGet için hızlı bir kurulum kontrol edin. 10 milyondan fazla indirme ile C# ile PDF geliştirmesini dönüştürüyor. DLL veya Windows yükleyicisini de indirebilirsiniz.

Kurulumdan sonra, lisans anahtarınızı her türlü PDF işlemi öncesinde Program.cs ekleyiniz:

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

IronPDF, .NET 10, .NET 9, .NET 8, .NET 6 ve .NET Framework 4.6.2 ve üst sürümlerle uyumludur. Geliştirme ve test icin, kutuphane lisans anahtari olmadan calisir ancak oluşturulan PDF'lere bir filigran ekler. Ücretsiz deneme lisansi degerlendirme suresince filigrani kaldirir.

IronPDF hem Blazor Server hem de Blazor WebAssembly projelerini destekler. Blazor Server'da, render motoru dogrudan sunucuda calisir. Blazor WebAssembly'de, PDF oluşturma icin sunucu tarafli bir API son noktasi gereklidir; Bu kılavuzun ilerleyen bölümlerinde mimari bölüm iki yaklasimi da aciklar.

Blazor'da Bir URL'den PDF Dosyasi Nasıl Görüntülenir?

Blazor PDF görüntüleyici oluşturmanın en doğrudan yolu bir URL'yi PDF'ye dönüştürmek ve <iframe> içinde görüntülemektir. IronPDF'nin ChromePdfRenderer 'si web sayfasını alır ve Google Chrome'u çalıştıran Chrome rendering engine kullanarak PDF formatını dönüştürür, CSS, JavaScript çıktısı ve düzenini eksiksiz olarak korur.

Razor Bilesen Yaklasimi

Aşağıdaki Razor bileşeni bir URL'yi PDF'ye dönüştürür ve online olarak görüntüler. GeneratePdf yöntemi, Blazor Server uygulamasında sunucu üzerinde çalışır, böylece tam Chrome rendering engine kullanılabilir:

@page "/pdfviewer"
@using IronPdf

<h3>PDF Viewer</h3>
<button @onclick="GeneratePdf" class="btn btn-primary">Load PDF</button>
@if (!string.IsNullOrEmpty(pdfDataUri))
{
    <iframe src="@pdfDataUri" style="width:100%; height:600px; border:1px solid #ccc; margin-top:20px;"></iframe>
}

@code {
    private string pdfDataUri = string.Empty;

    private async Task GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        // Convert the URL to PDF using the Chrome rendering engine
        var pdf = await renderer.RenderUrlAsPdfAsync("https://ironpdf.com");
        // Encode the PDF bytes as a base64 data URI for iframe display
        var base64 = Convert.ToBase64String(pdf.BinaryData);
        pdfDataUri = $"data:application/pdf;base64,{base64}";
    }
}

En Ust Seviye C# Ornegi

Arkaplan servisler, konsol uygulamalari veya sunucu tarafli API son noktalari icin ayni dönüştürme, her bilesen baglamindan bagimsiz olarak ayni API cagrisini kullanir:

using IronPdf;

var renderer = new ChromePdfRenderer();
// Fetch and convert the target URL to a PDF document
var pdf = await renderer.RenderUrlAsPdfAsync("https://ironpdf.com");

// Save to disk or use BinaryData for in-memory operations
pdf.SaveAs("output.pdf");
byte[] pdfBytes = pdf.BinaryData;
using IronPdf;

var renderer = new ChromePdfRenderer();
// Fetch and convert the target URL to a PDF document
var pdf = await renderer.RenderUrlAsPdfAsync("https://ironpdf.com");

// Save to disk or use BinaryData for in-memory operations
pdf.SaveAs("output.pdf");
byte[] pdfBytes = pdf.BinaryData;
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
' Fetch and convert the target URL to a PDF document
Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://ironpdf.com")

' Save to disk or use BinaryData for in-memory operations
pdf.SaveAs("output.pdf")
Dim pdfBytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

RenderUrlAsPdfAsync sayfayı alır, tüm JavaScript'i çalıştırır, CSS'yi uygular ve işlenmiş çıktıyı içeren bir PdfDocument nesnesi döndürür. BinaryData özelliği, depolama, akış veya görüntüleme için ham PDF byte'larını açığa çıkarır. <iframe>, büyütme, gezinti ve yazdırma için yerleşik tarayıcı araç çubuğu ile çıktıyı görüntüler.

IronPDF Kullanarak Blazor PDF Görüntüleyici Nasıl Oluşturulur: Şekil 1 - URL'den PDF'ye PDF görüntüleyici çıktısı

PDF Oluşturmayi Nasıl Ozellestirebilirim?

IronPDF, ChromePdfRenderOptions sınıfı aracılığıyla çıktı kontrolü sağlar. Her sayfaya kagit boyutu ayarlayabilir, kenar bosluklarini ayarlayabilir ve sayfa basina metin veya HTML baslik ve altbilgi ekleyebilirsiniz. Render seçenekleri kılavuzu mevcut tüm özelliklerin tam listesini kapsar.

Razor Bilesen Yaklasimi

Asagidaki bilesen A4 kagit boyutunu kenar bosluklari ile ayarlar ve her sayfaya baslik ve altbilgi metni ekler. Herhangi bir render yöntemini çağırmadan önce RenderingOptions atayın, böylece küresel olarak renderci örneğine uygulanır:

@page "/pdfcustom"
@using IronPdf

<h3>Customized PDF Viewer</h3>
<button @onclick="GenerateCustomizedPdf" class="btn btn-primary">Generate Customized PDF</button>
@if (!string.IsNullOrEmpty(pdfDataUri))
{
    <iframe src="@pdfDataUri" style="width:100%; height:600px; border:1px solid #ccc; margin-top:20px;"></iframe>
}

@code {
    private string pdfDataUri = string.Empty;

    private async Task GenerateCustomizedPdf()
    {
        var renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
                MarginTop = 25,
                MarginBottom = 25,
                MarginLeft = 20,
                MarginRight = 20,
                // Header with dynamic date replacement
                TextHeader = new TextHeaderFooter
                {
                    CenterText = "Monthly Report - {date}",
                    FontSize = 12
                },
                // Footer with page numbering
                TextFooter = new TextHeaderFooter
                {
                    LeftText = "Confidential",
                    RightText = "Page {page} of {total-pages}",
                    FontSize = 10
                }
            }
        };

        var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com/report");
        pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(pdf.BinaryData)}";
    }
}

En Ust Seviye C# Ornegi

Ayni seçenekler herhangi bir .NET baglaminda gecerli olur. Bu desen, bir ASP.NET Core minimal API veya zamanlanmis rapor oluşturucu icinde iyi isler:

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        PaperSize = PdfPaperSize.A4,
        MarginTop = 25,
        MarginBottom = 25,
        TextHeader = new TextHeaderFooter { CenterText = "Report - {date}", FontSize = 12 },
        TextFooter = new TextHeaderFooter { RightText = "Page {page} of {total-pages}", FontSize = 10 }
    }
};

var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com/report");
pdf.SaveAs("customized-report.pdf");
using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        PaperSize = PdfPaperSize.A4,
        MarginTop = 25,
        MarginBottom = 25,
        TextHeader = new TextHeaderFooter { CenterText = "Report - {date}", FontSize = 12 },
        TextFooter = new TextHeaderFooter { RightText = "Page {page} of {total-pages}", FontSize = 10 }
    }
};

var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com/report");
pdf.SaveAs("customized-report.pdf");
Imports IronPdf
Imports IronPdf.Rendering

Dim renderer As New ChromePdfRenderer With {
    .RenderingOptions = New ChromePdfRenderOptions With {
        .PaperSize = PdfPaperSize.A4,
        .MarginTop = 25,
        .MarginBottom = 25,
        .TextHeader = New TextHeaderFooter With {.CenterText = "Report - {date}", .FontSize = 12},
        .TextFooter = New TextHeaderFooter With {.RightText = "Page {page} of {total-pages}", .FontSize = 10}
    }
}

Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://example.com/report")
pdf.SaveAs("customized-report.pdf")
$vbLabelText   $csharpLabel

{page}, {total-pages}, ve {date} dahil olmak üzere şablon değişkenleri, gerçek değerler ile render sırasında değiştirilir. Karmaşık markalı düzenler için TextHeader ve TextFooter yerine HtmlHeader ve HtmlFooter özelliklerini kullanın. Basliklar ve altbilgiler kılavuzu, her iki yaklasim icin de eksiksiz örnekler sunar.

IronPDF Kullanarak Blazor PDF Görüntüleyici Nasıl Oluşturulur: Şekil 2 - Özelleştirilmiş PDF PDF görüntüleyicide açıldı

PDF Indirmeyi Etkinlestirmenin En Iyi Yolu Nedir?

<iframe> içinde PDF'leri görüntülemek izlemeyi sağlar, ancak kullanıcılar sıklıkla dosyayı indirmeyi ihtiyaç duyar. JavaScript interop, bir .NET byte akışından tarayıcı indirmesini tetikler. Ek indirme ve degerlendirme desenleri icin PDF kılavuzu ihrac ve degerlendirmena bakin.

Razor Bilesen Yaklasimi

Bileşene IJSRuntime 'yi ekleyin ve indirmeyi başlatmak için bir JavaScript yardımcı işlevi çağırın. DotNetStreamReference, tüm dosyayı aynı anda JavaScript belleğine yüklemeden PDF byte'larını akış içinde verir:

@page "/pdfdownload"
@using IronPdf
@inject IJSRuntime JSRuntime

<h3>Download PDF</h3>
<button @onclick="DownloadPdf" class="btn btn-success">Download PDF</button>

@code {
    private async Task DownloadPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Invoice</h1><p>Total: $1,299</p>");
        // Stream the PDF bytes to the browser as a downloadable file
        using var streamRef = new DotNetStreamReference(stream: new MemoryStream(pdf.BinaryData));
        await JSRuntime.InvokeVoidAsync("downloadFileFromStream", "invoice.pdf", streamRef);
    }
}

Bu JavaScript işlevini _Host.cshtml veya App.razor dosyanıza ekleyin, Microsoft'un Blazor JavaScript interop dokümantasyonunda açıklandığı gibi:

window.downloadFileFromStream = async (fileName, contentStreamReference) => {
    const arrayBuffer = await contentStreamReference.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName ?? '';
    anchorElement.click();
    anchorElement.remove();
    URL.revokeObjectURL(url);
};
window.downloadFileFromStream = async (fileName, contentStreamReference) => {
    const arrayBuffer = await contentStreamReference.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName ?? '';
    anchorElement.click();
    anchorElement.remove();
    URL.revokeObjectURL(url);
};
JAVASCRIPT

En Ust Seviye C# Ornegi

Bir sunucu tarafı API uç noktasında, Results.File kullanarak PDF byte'larını doğrudan döndürün. Content-Disposition başlıklara sahip dosya tarayıcıya ulaştığında indirme otomatik olarak tetiklenir:

using IronPdf;

// ASP.NET Core minimal API endpoint
app.MapGet("/api/pdf/invoice", async () =>
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Invoice</h1><p>Total: $1,299</p>");
    // Return with file download headers
    return Results.File(pdf.BinaryData, "application/pdf", "invoice.pdf");
});
using IronPdf;

// ASP.NET Core minimal API endpoint
app.MapGet("/api/pdf/invoice", async () =>
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Invoice</h1><p>Total: $1,299</p>");
    // Return with file download headers
    return Results.File(pdf.BinaryData, "application/pdf", "invoice.pdf");
});
Imports IronPdf

' ASP.NET Core minimal API endpoint
app.MapGet("/api/pdf/invoice", Async Function()
    Dim renderer As New ChromePdfRenderer()
    Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Invoice</h1><p>Total: $1,299</p>")
    ' Return with file download headers
    Return Results.File(pdf.BinaryData, "application/pdf", "invoice.pdf")
End Function)
$vbLabelText   $csharpLabel

Razor Bilesenlerinden PDF Nasıl Oluşturabilirim?

HTML'den PDF oluşturmak, duzen, veri baglanti ve stil uzerinde tam kontrol sunar. Bu yaklasim, faturalar, raporlar ve canli uygulama verilerinden oluşturulmus herhangi bir belge icin uygundur. Daha gelişmiş render teknikleri icin HTML to PDF dönüştürme kılavuzuna bakin.

Razor Bilesen Yaklasimi

Asagidaki bilesen bir fatura HTML dizgisini C# verilerinden oluşturur ve bunu PDF'ye dönüştürur. ChromePdfRenderer HTML metnini web sayfası ile aynı tutar, tüm CSS'yi uygular ve Chrome motoru ile render eder:

@page "/invoicedemo"
@using IronPdf

<h3>Invoice Generator</h3>
<button @onclick="GenerateInvoice" class="btn btn-primary">Generate Invoice PDF</button>
@if (!string.IsNullOrEmpty(pdfDataUri))
{
    <iframe src="@pdfDataUri" style="width:100%; height:600px; border:1px solid #ccc; margin-top:20px;"></iframe>
}

@code {
    private string pdfDataUri = string.Empty;

    private async Task GenerateInvoice()
    {
        var invoiceHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; }}
                    .header {{ background-color: #f0f0f0; padding: 20px; }}
                    .invoice-table {{ width: 100%; border-collapse: collapse; }}
                    .invoice-table th, .invoice-table td {{ border: 1px solid #ddd; padding: 8px; }}
                    .total {{ font-weight: bold; font-size: 18px; }}
                </style>
            </head>
            <body>
                <div class='header'>
                    <h1>Invoice #INV-2025-001</h1>
                    <p>Date: {DateTime.Now:MM/dd/yyyy}</p>
                </div>
                <table class='invoice-table'>
                    <thead>
                        <tr>
                            <th>Item</th><th>Quantity</th><th>Price</th><th>Total</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>IronPDF License</td><td>1</td><td>$749</td><td>$749</td>
                        </tr>
                        <tr>
                            <td>Priority Support</td><td>1</td><td>$250</td><td>$250</td>
                        </tr>
                    </tbody>
                </table>
                <p class='total'>Total Amount: $999</p>
            </body>
            </html>";

        var renderer = new ChromePdfRenderer();
        var pdf = await renderer.RenderHtmlAsPdfAsync(invoiceHtml);
        pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(pdf.BinaryData)}";
    }
}

En Ust Seviye C# Ornegi

Aynı HTML dizesi yaklaşımı, konsol uygulamaları, arka plan servisleri ve API son noktaları gibi herhangi bir .NET baglamında çalışır. C# dize interpolasyonu veya bir sablona kütüphanesi, bein dizeyi göndericiye aktarmadan once dinamik veriler ekler:

using IronPdf;

var html = """
    <html>
    <body>
        <h1>Invoice #INV-2025-001</h1>
        <table>
            <tr><th>Item</th><th>Total</th></tr>
            <tr><td>IronPDF License</td><td>$749</td></tr>
            <tr><td>Priority Support</td><td>$250</td></tr>
        </table>
        <p><strong>Total: $999</strong></p>
    </body>
    </html>
    """;

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
pdf.SaveAs("invoice.pdf");
using IronPdf;

var html = """
    <html>
    <body>
        <h1>Invoice #INV-2025-001</h1>
        <table>
            <tr><th>Item</th><th>Total</th></tr>
            <tr><td>IronPDF License</td><td>$749</td></tr>
            <tr><td>Priority Support</td><td>$250</td></tr>
        </table>
        <p><strong>Total: $999</strong></p>
    </body>
    </html>
    """;

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
pdf.SaveAs("invoice.pdf");
Imports IronPdf

Dim html As String = "
    <html>
    <body>
        <h1>Invoice #INV-2025-001</h1>
        <table>
            <tr><th>Item</th><th>Total</th></tr>
            <tr><td>IronPDF License</td><td>$749</td></tr>
            <tr><td>Priority Support</td><td>$250</td></tr>
        </table>
        <p><strong>Total: $999</strong></p>
    </body>
    </html>
    "

Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

RenderHtmlAsPdfAsync, gömülü CSS ve JavaScript içeren herhangi bir geçerli HTML metnini kabul eder. Uygulama otomatik olarak duzen, font render ve sayfa kesilmeleri yapar.

IronPDF Kullanarak Blazor PDF Görüntüleyici Nasıl Oluşturulur: Şekil 3 - Görüntüleyicideki Fatura PDF'i

Bir Blazor Sunucu PDF Görüntüleyici ve Blazor WebAssembly Arasinda Ne Fark Vardir?

Barındırma modeli, PDF oluşturmanın nerede calistığı ve byte'ların tarayıcıya nasıl ulastıgını belirler. Bu farkin anlasilmasi, Blazor PDF görüntüleyicileri oluştururken yaygın bir mimari hatayi onler.

Blazor Server, tüm C# kodunu sunucuda calistirir. ChromePdfRenderer sunucu tarafında çalışır ve ortaya çıkan baytlar mevcut SignalR bağlantısı üzerinden tarayıcıya iletilir. Bu, önceki bölümlerde gorulenlerden başka bir API noktası veya ağ cagrısı gerektirmeden en basit entegrasyon yoludur.

Blazor WebAssembly, C#'ı tarayicinin WASM'ı kullanarak kullandigi kutuda çalistirir. IronPDF'nin darboğaz motoru, tarayıcı sandığında çalışamayan yerel ikili dosyalara dayanır, bu nedenle ChromePdfRenderer bir WASM projesinde doğrudan mevcut değildir. Dogru yaklasim, PDF oluşturma yapan ve baytları bir yanit olarak döndüren bir sunucu tarafli API son noktasini aramaktir.

Blazor WebAssembly icin PDF Oluşturma API'si Ayarlama

Sunucuda, PDF oluşturan ve donen minimal bir API son noktası tanımlayın:

// Program.cs (ASP.NET Core host project)
using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

app.MapGet("/api/pdf/report", async () =>
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Quarterly Report</h1><p>Generated server-side.</p>");
    // Return PDF bytes with file download headers
    return Results.File(pdf.BinaryData, "application/pdf", "report.pdf");
});
// Program.cs (ASP.NET Core host project)
using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

app.MapGet("/api/pdf/report", async () =>
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Quarterly Report</h1><p>Generated server-side.</p>");
    // Return PDF bytes with file download headers
    return Results.File(pdf.BinaryData, "application/pdf", "report.pdf");
});
Imports IronPdf

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"

app.MapGet("/api/pdf/report", Async Function()
    Dim renderer = New ChromePdfRenderer()
    Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Quarterly Report</h1><p>Generated server-side.</p>")
    ' Return PDF bytes with file download headers
    Return Results.File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function)
$vbLabelText   $csharpLabel

WASM müşteri tarafında, HttpClient 'yi ekleyin ve API uç noktasını çağırın. Blazor WASM barındırılan proje şablonu, sunucunun temel adresini hedeflemek için HttpClient 'yi önceden yapılandırır:

@page "/wasm-pdf-viewer"
@inject HttpClient Http

<h3>PDF Viewer</h3>
<button @onclick="LoadPdf" class="btn btn-primary">Load Report</button>
@if (!string.IsNullOrEmpty(pdfDataUri))
{
    <iframe src="@pdfDataUri" style="width:100%; height:600px;"></iframe>
}

@code {
    private string pdfDataUri = string.Empty;

    private async Task LoadPdf()
    {
        // Fetch PDF bytes from the server-side generation endpoint
        var bytes = await Http.GetByteArrayAsync("/api/pdf/report");
        pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(bytes)}";
    }
}

Bu desen, tüm ağır işleme renderlama işlemlerinin sunucuda kalmasını saglarken, WASM istemcisi yalnizca görüntüleme işlemiyle ilgilenir. Production kullanimi icin, API son noktasina doğrulama ekleyin ve üretilen PDF iceriğini dogrulanmıs kullanıcının verilerine genişletin.

Başka Hangi PDF İşlemlerini Yapabilirim?

IronPDF'in API'si temel gorunumun otesine geçer. Asagidaki bölümler, bir Blazor belge iş akışında yaygın olarak ihtiyaç duyulan dört işlemi kapsar: birden fazla dokümanı birleştirme, anotasyonlar ekleme, parola koruması uygulama ve kullanıcı tarafindan yüklenmiş dosyalari görüntüleme.

Birden Fazla PDF Dokümanini Nasıl Birleştiririm?

Birleştirme, birden fazla PdfDocument örneğini tek bir dosyada birleştirir, rapor bölümlerini birleştirme, ekleri ekleme veya kullanıcı tarafından seçilen dosyaları birleştirme açısından yararlıdır. PDF'leri birleştirme ve bölme kılavuzu sayfa seviyesinde ekleme ve bölme işlemlerini kapsar.

using IronPdf;

var renderer = new ChromePdfRenderer();

// Generate two separate sections as individual PDF documents
var section1 = await renderer.RenderHtmlAsPdfAsync("<h1>Section 1: Overview</h1>");
var section2 = await renderer.RenderHtmlAsPdfAsync("<h1>Section 2: Details</h1>");

// Merge into a single document preserving all pages
var merged = PdfDocument.Merge(section1, section2);
merged.SaveAs("combined-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Generate two separate sections as individual PDF documents
var section1 = await renderer.RenderHtmlAsPdfAsync("<h1>Section 1: Overview</h1>");
var section2 = await renderer.RenderHtmlAsPdfAsync("<h1>Section 2: Details</h1>");

// Merge into a single document preserving all pages
var merged = PdfDocument.Merge(section1, section2);
merged.SaveAs("combined-report.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Generate two separate sections as individual PDF documents
Dim section1 = Await renderer.RenderHtmlAsPdfAsync("<h1>Section 1: Overview</h1>")
Dim section2 = Await renderer.RenderHtmlAsPdfAsync("<h1>Section 2: Details</h1>")

' Merge into a single document preserving all pages
Dim merged = PdfDocument.Merge(section1, section2)
merged.SaveAs("combined-report.pdf")
$vbLabelText   $csharpLabel

Birleşik belgeyi bir Blazor bileşeninde görüntülemek için, önceki bölümlerdeki base64 veri URI kalıbına merged.BinaryData iletin. Birleşik PdfDocument nesnesi, görüntüleme için kodlanmadan önce daha fazla işlemler (filigranlama, güvenlik ayarları veya ek sayfa eklemeler) de kabul eder.

Bir PDF'ye Anotasyonları Nasıl Eklerim?

Anotasyonlar, metin veya resim gibi belirli sayfa konumlarına gözden geçirme notları ve yorum ekler, ancak temel belge içeriğini değiştirmez. IronPDF, metin anotasyonları, serbest metin kutuları ve diğer isaretleme türlerini destekler. Tüm anotasyon özellikleri icin anotasyonlar kılavuzuna bakın.

using IronPdf;
using IronPdf.Annotations;

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Contract Document</h1><p>Review required on clause 3.</p>");

// Add a text annotation to page 0 at position (50, 650)
var annotation = new TextAnnotation(pageIndex: 0)
{
    Title = "Reviewer Note",
    Contents = "Please confirm clause 3 before signing.",
    X = 50,
    Y = 650,
    Width = 200,
    Height = 50,
    Printable = false,
    OpenByDefault = true
};

pdf.Annotations.Add(annotation);
pdf.SaveAs("annotated-contract.pdf");
using IronPdf;
using IronPdf.Annotations;

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Contract Document</h1><p>Review required on clause 3.</p>");

// Add a text annotation to page 0 at position (50, 650)
var annotation = new TextAnnotation(pageIndex: 0)
{
    Title = "Reviewer Note",
    Contents = "Please confirm clause 3 before signing.",
    X = 50,
    Y = 650,
    Width = 200,
    Height = 50,
    Printable = false,
    OpenByDefault = true
};

pdf.Annotations.Add(annotation);
pdf.SaveAs("annotated-contract.pdf");
Imports IronPdf
Imports IronPdf.Annotations

Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Contract Document</h1><p>Review required on clause 3.</p>")

' Add a text annotation to page 0 at position (50, 650)
Dim annotation As New TextAnnotation(pageIndex:=0) With {
    .Title = "Reviewer Note",
    .Contents = "Please confirm clause 3 before signing.",
    .X = 50,
    .Y = 650,
    .Width = 200,
    .Height = 50,
    .Printable = False,
    .OpenByDefault = True
}

pdf.Annotations.Add(annotation)
pdf.SaveAs("annotated-contract.pdf")
$vbLabelText   $csharpLabel

PDF, herhangi bir standart görüntüleyicide açıldığında, ek açıklamalar korunur, tarayıcı <iframe> ekranını da ekleyerek. Blazor uygulamaları için, sunucu tarafında ek açıklama mantığını çalıştırın ve görüntüleme için bileşene pdf.BinaryData döndürün.

Bir PDF'ye Parola Korumasını Nasıl Uygularım?

Parola koruması, finansal raporlar veya insan kaynakları kayıtları gibi hassas belgelere erişimi sinirlar. IronPDF, kullanıcı parolaları (belgeyi acmak icin gereken) ve sahip parolaları (izinleri değiştirmek icin gereken) icin destekler. PDF güvenlik kılavuzu, mevcut tüm izin işaretlerini listeler.

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Confidential Report</h1>");

// Set the password required to open the document
pdf.Password = "user-open-password";
// Set the owner password to control editing and printing rights
pdf.SecuritySettings.OwnerPassword = "owner-edit-password";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("protected-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Confidential Report</h1>");

// Set the password required to open the document
pdf.Password = "user-open-password";
// Set the owner password to control editing and printing rights
pdf.SecuritySettings.OwnerPassword = "owner-edit-password";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("protected-report.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Confidential Report</h1>")

' Set the password required to open the document
pdf.Password = "user-open-password"
' Set the owner password to control editing and printing rights
pdf.SecuritySettings.OwnerPassword = "owner-edit-password"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False

pdf.SaveAs("protected-report.pdf")
$vbLabelText   $csharpLabel

Şifre ile korunan PDF'ler, tarayıcı <iframe> bir şifre istemi görüntüler. Bu yaklaşım, indirme yoluyla dağıtılan belgeler icin calisir; satir ici görüntüleme icin istem olmadan yalnizca indirme yoluyla dondürülen belgelere bir parola uygulayın.

Kullanıcı Yüklenmiş PDF'leri Nasıl Görüntülerim?

Bir kullanıcının yüklediği PDF'yi görüntülemek, gelen dosya baytlarını okumayı ve bunları bir veri URI olarak kodlamayı gerektirir. Aşağıdaki yükleme bileşeni, Blazor'un InputFile kontrolünü kullanarak dosyayı yakalar, ardından herhangi bir yeniden işleme olmaksızın doğrudan görüntüler.

@page "/upload-viewer"
@using IronPdf

<h3>Upload and View a PDF</h3>
<InputFile OnChange="LoadUploadedPdf" accept=".pdf" />
@if (!string.IsNullOrEmpty(pdfDataUri))
{
    <iframe src="@pdfDataUri" style="width:100%; height:600px; margin-top:20px;"></iframe>
}

@code {
    private string pdfDataUri = string.Empty;

    private async Task LoadUploadedPdf(InputFileChangeEventArgs e)
    {
        using var stream = e.File.OpenReadStream(maxAllowedSize: 10 * 1024 * 1024);
        using var ms = new MemoryStream();
        await stream.CopyToAsync(ms);
        var bytes = ms.ToArray();
        // Encode the uploaded PDF bytes directly for display
        pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(bytes)}";
    }
}

Görüntülemeden önce sunucu tarafında işleme gerektiren yüklenen PDF'ler için, filigranlama, sayfa çıkarma veya yeniden şifreleme gibi, ilk olarak baytları bir PdfDocument içerisine yükleyiniz:

var pdf = new PdfDocument(bytes);
// Apply operations, then re-encode
pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(pdf.BinaryData)}";
var pdf = new PdfDocument(bytes);
// Apply operations, then re-encode
pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(pdf.BinaryData)}";
Dim pdf As New PdfDocument(bytes)
' Apply operations, then re-encode
pdfDataUri = $"data:application/pdf;base64,{Convert.ToBase64String(pdf.BinaryData)}"
$vbLabelText   $csharpLabel

Bu, yüklenen dosyada tam IronPDF API'yi etkin halinde inceleyen ayni bilesen yapisini saglar.

Sonraki Adımlarım Neler?

Bu kılavuz, IronPDF ile bir Blazor PDF görüntüleyici icin eksiksiz bir iş akışını kapsadi: .NET 10 uzerine kurulum, URL ve HTML rendering, baslik ve altbilgilerle cikisi kişiselleştirme, tarayıcı indirmeleri icin JavaScript arayüzü, Blazor Server ve Blazor WebAssembly arasindaki mimari farkı ve dört belge islevi: birleştirme, anotasyonlar, parola korumasi ve kullanıcı yuklemeleri.

Bu temeli genişletmek icin bu kaynakları keşfedin:

Filigranlari kaldırmak ve Blazor uygulamanızda IronPDF'i test etmek için ücretsiz deneme lisansinizi alin! IronPDF .NET 10, ASP.NET Core, Blazor Server, ve herhangi ek bir yapılandırmaya gereksinim duymadan barındırılmış Blazor WebAssembly projelerini destekler. Ek entegrasyon kılavuzu icin Microsoft'un resmi Blazor dokümantasyonuna bakin.

Sıkça Sorulan Sorular

Blazor PDF görüntüleyici nedir?

Blazor PDF görüntüleyici, Blazor Server veya WebAssembly uygulamasında PDF belgelerini direkt gösteren bir bileşendir. Genellikle PDF baytlarını base64 veri URI'sine dönüştürür ve bunları bir iframe elemanının içinde render eder, böylece kullanıcıya zum, gezinme ve yazdırma için yerleşik bir tarayıcı araç çubuğu sağlar.

Blazor Server uygulamasında PDF'yi nasıl gösteririm?

NuGet üzerinden IronPDF'yi yükleyin, Program.cs'ye lisans anahtarınızı ekleyin, ardından ChromePdfRenderer'ı kullanarak URL veya HTML dizelerinden PDF baytları oluşturun. Baytları base64 veri URI'si olarak kodlayın ve Razor bileşeninizdeki bir iframe'in src özniteliğine atayın.

IronPDF, Blazor WebAssembly projesinde çalışabilir mi?

IronPDF'nin render motoru, tarayıcının WASM sanal alanında çalışamayan yerel ikili dosyalar gerektirir. Blazor WebAssembly projeleri için, IronPDF kullanarak PDF oluşturan ve baytları döndüren bir sunucu tarafı ASP.NET Core API uç noktası oluşturun. WASM istemcisi, bu uç noktayı HttpClient üzerinden çağırır ve sonucu gösterir.

Blazor'da bir PDF indirme işlemini nasıl tetiklerim?

Bileşeninize IJSRuntime'i enjekte edin, IronPDF ile PDF baytları oluşturun, bunları DotNetStreamReference içine sarın ve InvokeVoidAsync kullanarak bir JavaScript fonksiyonunu çağırın. JavaScript fonksiyonu, bir Blob URL oluşturur ve tarayıcı indirme işlemini tetiklemek için bir anchor elemanına tıklar.

Blazor PDF görüntüleme için IronPDF'i kullanmak hangi faydalari sunar?

IronPDF, HTML, CSS ve JavaScript çıktısını doğru bir şekilde PDF formatına dönüştüren bir Chrome render motoru kullanır. .NET 10'u destekler, Blazor Server ve WebAssembly mimarilerinde çalışır ve PDF oluşturma, birleştirme, açıklamalar, şifre koruma ve kullanıcı yükleme işleme için tek bir API sunar.

Blazor'da oluşturulan bir PDF'ye üstbilgi ve altbilgi nasıl eklerim?

Render metodunu çağırmadan önce ChromePdfRenderer üzerinde RenderingOptions özelliğini ayarlayın. Düz metin üstbilgileri ve altbilgileri için {page}, {total-pages} ve {date} gibi şablon değişkenleri içeren TextHeader ve TextFooter kullanın. HTML tabanlı düzenler için HtmlHeader ve HtmlFooter kullanın.

Blazor'da birden çok PDF belgesini nasıl birleştiririm?

Her belgeyi ChromePdfRenderer kullanarak bir PdfDocument örneği olarak oluşturun, ardından PdfDocument.Merge(pdf1, pdf2) çağrısını yaparak bunları birleştirin. Birleşik belgenin BinaryData'sını Blazor bileşeninizin base64 veri URI'sine aktararak birleştirilmiş sonucu gösterin.

Blazor'da, kullanıcının yüklediği bir PDF'yi diske kaydetmeden gösterebilir miyim?

Evet. Yüklenen dosyayı MemoryStream içine okumak için Blazor'un InputFile bileşenini kullanın, baytları base64 veri URI'si olarak dönüştürün ve bir iframe'in src özniteliğine atayın. Dosya sistemi yazımı gerekmez. Sunucu tarafı işleme için, kodlamadan önce baytları bir PdfDocument örneğine yükleyin.

Blazor'da oluşturulan bir PDF'ye şifre koruması nasıl uygularım?

PdfDocument'i oluşturduktan sonra, kullanıcı açma şifresi için Password özniteliğini ayarlayın ve sahip şifresi için SecuritySettings.OwnerPassword kullanın. Belgeyi kaydetmeden veya kodlamadan önce izinleri kontrol etmek için SecuritySettings.AllowUserPrinting ve AllowUserCopyPasteContent kullanın.

IronPDF, Blazor PDF görüntüleyici projeleri için .NET 10 ile uyumlu mu?

Evet. IronPDF, .NET 10, .NET 9, .NET 8, .NET 6 ve .NET Framework 4.6.2 ve üzerini destekler. .NET 10'u hedefleyen bir Blazor uygulamasında IronPDF kullanmak için özel bir yapılandırma gerekmemektedir.

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