Altbilgi içeriğine atla
IRONPDF KULLANARAK
Blazor'da PDF Görüntüleyici ve Oluşturucu Nasıl Yapılır | IronPDF

IronPDF ile C# Kullanan İki PDF Dosyasınız Nasıl Etkin Bir Şekilde Karsilastirirsiniz

Bir Blazor PDF görüntüleyici, PDF belgelerini gömülü olarak göstermek için onları base64 veri URI'sine dönüştürür ve sonucu bir <iframe> öğesine yükler. IronPDF'nin ChromePdfRenderer, HTML dizelerini, canlı URL'leri veya dinamik içeriği tek bir async çağrıyla PDF baytlarına dönüştürür, böylece Blazor Server ve Blazor WebAssembly uygulamaları herhangi bir harici görüntüleyici eklentisi olmadan tam PDF oluşturma ve görüntüleme yeteneği kazanır.

İşletme uygulamaları genellikle fatura, sözleşme ve raporları kullanıcıları ayrı bir sekmeye yönlendirmeden veya tarayıcı PDF desteğine güvenmeden, cihazlar arasında değişen durumda görüntülemelidir. Blazor'un bileşen modeli, sunucuda bir PDF oluşturmayı, kodlamayı ve güvenilir bir şekilde dönüşümü sağlayan kütüphane tarafından sağlandığı sürece herhangi bir sayfa bileşenine akışını basit hale getirir.

Bu kılavuz, kurulum, URL ve HTML tabanlı işleme, başlıklar ve altbilgiler ile özelleştirme, JavaScript interop kullanarak tarayıcı indirmeleri, Blazor Server ve Blazor WebAssembly yaklaşımlarının karşılaştırması ve dört genişletilmiş işlem: birleştirme, açıklamalar, parola koruması ve kullanıcının yüklediği dosya görüntüleme konularını kapsar. Her teknik için Razor bileşenleri ve eşdeğer üst düzey C# örnekleri sağlanmıştır.

Bu kılavuzu takip etmek için ücretsiz IronPDF denemesi başlatın.

Blazor Projesinde IronPDF ile Başlangıcı Nasıl Yaparım?

Başlarken, NuGet paketini yüklemek ve bir lisans anahtarı eklemek gerekir Program.cs. IronPDF'yi Paket Yönetici Konsolu'ndan yükleyin:

Install-Package IronPdf

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

NuGet NuGet ile yükleyin

PM >  Install-Package IronPdf

NuGet'te hızlı kurulum için https://www.nuget.org/packages/IronPdf'i kontrol edin. 10 milyonun üzerinde indirme ile, C# ile PDF geliştirmeyi dönüştürüyor. DLL veya Windows yükleyici'yi de indirebilirsiniz.

Kurulumdan sonra, herhangi bir PDF işlemi yapmadan önce lisans anahtarınızı Program.cs içine ekleyin:

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

IronPDF'nin .NET 10, .NET 9, .NET 8, .NET 6 ve .NET Framework 4.6.2 ve sonrası sürümleri ile uyumlu olduğunu belirtelim. Geliştirme ve test için kütüphane lisans anahtarı olmadan çalışır ancak üretilen PDF'lere bir filigran uygular. Bir ücretsiz deneme lisansı, değerlendirme süresince filigranı kaldıracaktır.

IronPDF hem Blazor Server hem de Blazor WebAssembly projelerini destekler. Blazor Server'da işleme motoru doğrudan sunucu üzerinde çalışır. Blazor WebAssembly'de, PDF oluşturma bir sunucu tarafı API uç noktası gerektirir; Bu kılavuzdaki mimari bölümü her iki yaklaşımı da açıklar.

Blazor'da Bir URL'den PDF Dosyasını Nasıl Görüntüleyebilirim?

Bir Blazor PDF görüntüleyici oluşturmanın en doğrudan yolu, bir URL'yi PDF'ye dönüştürmek ve onu bir <iframe> içinde göstermektir. IronPDF'nin ChromePdfRenderer, web sayfasını çeker ve Google Chrome'u destekleyen Chrome işleme motoru ile aynı PDF formatına dönüştürerek CSS, JavaScript çıktısı ve düzeni sadakatle korur.

Razor Bileşen Yaklaşımı

Aşağıdaki Razor bileşeni bir URL'yi PDF'ye dönüştürür ve gömülü olarak gösterir. GeneratePdf yöntemi Blazor Server uygulamasında sunucuda çalışır, bu nedenle tam Chrome işleme motoru kullanılabilir durumdadır:

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

Üst Seviye C# Örneği

Arka plan hizmetleri, konsol uygulamaları veya sunucu tarafı API uç noktaları için, aynı dönüşüm herhangi bir bileşen bağlamı dışında benzer API çağrılarını kullanarak yapılır:

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ı çeker, tüm JavaScript'i çalıştırır, CSS uygular ve işlenmiş çıktıyı içeren bir PdfDocument nesnesi döndürür. BinaryData özelliği, depolama, yayınlama veya gösterim için ham PDF baytlarını sunar. <iframe>, yakınlaştırma, gezinme ve yazdırma için yerleşik bir tarayıcı araç çubuğuyla çıktıyı gösterir.

 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şturmayı Nasıl Özelleştirebilirim?

IronPDF, ChromePdfRenderOptions sınıfı aracılığıyla çıktı kontrolü sağlar. Kağıt boyutunu ayarlayabilir, kenar boşluklarını ayarlayabilir ve her sayfaya metin veya HTML başlık ve altbilgileri ekleyebilirsiniz. İşleme seçenekleri kılavuzu mevcut tüm özelliklerin tam listesini kapsar.

Razor Bileşen Yaklaşımı

Aşağıdaki bileşen, a4 kağıdını kenar boşlukları ile yapılandırır ve her sayfaya başlık ve altbilgi metni ekler. Herhangi bir işleme yöntemini çağırmadan önce RenderingOptions'i atayın, böylece global olarak her işleyici ö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)}";
    }
}

Üst Seviye C# Örneği

Aynı seçenekler herhangi bir .NET bağlamında geçerlidir. Bu model, bir ASP.NET Core minimal API kapsamında veya planlanmış bir rapor oluşturucu içinde iyi çalışır:

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, rendeleme zamanında gerçek değerlerle değiştirilir. Karmaşık markalı düzenler için TextHeader ve TextFooter yerine HtmlHeader ve HtmlFooter özelliklerini kullanın. Başlıklar ve altbilgiler kılavuzu her iki yaklaşım için de tam örnekler içerir.

 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 İndirmelerini Etkinleştirmenin En İyi Yolu Nedir?

PDF'leri bir <iframe> içinde görüntülemek görüntülemeyi sağlar, ancak kullanıcılar genellikle dosyayı indirmelidir. JavaScript birlikte çalışabilirliği, bir .NET byte akışından bir tarayıcı indirmesi tetikler. Ek indirme ve ihracat modelleri için, PDF dışa aktarma ve kaydetme kılavuzuna bakın.

Razor Bileşen Yaklaşımı

Bileşene IJSRuntime enjekte edin ve indirmeyi başlatmak için bir JavaScript yardımcı işlevi çağırın. DotNetStreamReference, tüm dosyayı bir kerede JavaScript belleğine yüklemeden PDF baytlarını yayınlar:

@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, Microsoft'un Blazor JavaScript birlikte çalışabilirlik belgeleri'nde açıklandığı gibi, _Host.cshtml veya App.razor dosyanıza ekleyin:

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

Üst Seviye C# Örneği

Bir sunucu tarafı API uç noktasında, PDF baytlarını doğrudan Results.File kullanarak döndürün. Tarayıcı, doğru Content-Disposition başlıkları ile dosyayı alır ve indirmeyi otomatik olarak başlatır:

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 Bileşenlerinden PDF'leri Nasıl Oluşturabilirim?

HTML'den PDF oluşturmak, mizanpaj, veri bağlama ve stillendirme üzerinde tam kontrol sağlar. Bu yaklaşım, faturalara, raporlara ve canlı uygulama verilerinden oluşturulmuş her türlü belgeye uygundur. Daha gelişmiş işleme teknikleri için HTML'den PDF'ye dönüştürme kılavuzuna bakın.

Razor Bileşen Yaklaşımı

Aşağıdaki bileşen, C# verilerinden bir fatura HTML dizisi oluşturur ve bunu PDF'ye dönüştürür. ChromePdfRenderer, HTML dizgesini bir web sayfası gibi işler, tüm CSS'yi uygular ve Chrome motoruyla işler:

@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>$999</td><td>$999</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)}";
    }
}

Üst Seviye C# Örneği

Aynı HTML dize yaklaşımı, bir kes-kopya yapıştır uygulama, arka plan hizmetleri ve API uç noktalarında dahil her .NET bağlamında çalışır. C# dize interpolasyonu veya şablon oluşturma kütüphanesi, dizgeyi renderer'a göndermeden önce dinamik verileri 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>$999</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>$999</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>$999</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ü JavaScript ve satır içi CSS dahil olmak üzere her geçerli HTML dizgesini kabul eder. Uygulama, mizanpajı, yazı tipi işleme ve sayfa kırılmasını otomatik olarak ele alır.

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

Blazor Sunucu PDF Görüntüleyici Blazor WebAssembly'den Nasıl Farklıdır?

Barındırma modeli, PDF oluşturmanın nerede çalışacağını ve baytların tarayıcıya nasıl ulaşacağını belirler. Bu ayrımı anlamak, Blazor PDF görüntüleyicileri oluştururken yaygın bir mimari hatayı önler.

Blazor Sunucu tüm C# kodunu sunucuda çalıştırır. ChromePdfRenderer, sunucu tarafında çalışır ve ortaya çıkan baytlar, mevcut SignalR bağlantısı üzerinden tarayıcıya iletilir. Bu, daha önceki bölümlerde gösterilenler dışında ek API uç noktaları veya ağ çağrıları gerektirmeyen en basit entegrasyon yoludur.

Blazor WebAssembly, WASM kullanarak tarayıcının sandbox'unda C# çalıştırır. IronPDF'nin işleme motoru, tarayıcı sanal alanı içinde çalışamayan yerel ikililere dayanır, bu nedenle ChromePdfRenderer bir WASM projesinde doğrudan kullanılamaz. Doğru yaklaşım, PDF oluşturma işlemini gerçekleştiren ve baytları bir yanıt olarak döndüren bir sunucu tarafı API uç noktasını çağırmaktır.

Blazor WebAssembly için bir PDF Oluşturma API'si Kurma

Sunucuda, PDF oluşturup döndüren minimal bir API uç 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 istemcisinde, HttpClient enjekte edin ve API uç noktasını çağırın. Blazor WASM barındırılan proje şablonu, HttpClient'i sunucunun temel adresine hedef almak üzere ö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 desenle, tüm ağır işleme çalışması sunucuda kalırken, WASM istemcisi yalnızca görüntülemeyi işler. Üretim kullanımı için, API uç noktasına kimlik doğrulama ekleyin ve üretilen PDF içeriğini kimliği doğrulanmış kullanıcının verilerine sınırlayın.

Başka Hangi PDF İşlemlerini Yapabilirim?

IronPDF'nin API'si, temel görüntülemenin ötesine iyi bir şekilde uzanır. Aşağıdaki bölümler, Blazor belge iş akışlarında sıkça ihtiyaç duyulan dört işlemi kapsar: birden çok belgenin birleştirilmesi, açıklama ekleme, parola koruması uygulama ve kullanıcı tarafından yüklenmiş dosyaların görüntülenmesi.

Birden Çok PDF Belgesini Nasıl Birleştiririm?

Birleştirme, birden fazla PdfDocument örneğini, rapor bölümlerini birleştirmek, ekleri eklemek veya kullanıcı seçimi dosyaları birleştirmek için tek bir dosyada toplar. PDF'leri birleştirme ve bölme kılavuzu, sayfa düzeyinde 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ştirilmiş 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ştirilmiş PdfDocument nesnesi, görüntülenmek üzere kodlanmadan önce ek işlemleri (filigranlama, güvenlik ayarları veya ek sayfa eklemeleri) de kabul eder.

Bir PDF'ye Nasıl Açıklama Eklerim?

Açıklamalar, inceleyici notları ve yorumları belirli sayfa konumlarına eklemeye olanak tanır ve temel belge içeriğini değiştirmez. IronPDF, metin açıklamalarını, serbest metin kutularını ve diğer işaretleme türlerini destekler. Açıklama özelliklerinin tam listesi için açıklama 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, tarayıcı <iframe> görüntüleyici de dahil olmak üzere not ekleri korunur. Blazor uygulamaları için, açıklama mantığını sunucu tarafında çalıştırın ve görüntüleme için bileşene pdf.BinaryData geri döndürün.

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

Parola koruması, mali raporlar veya insan kaynakları kayıtları gibi hassas belgelere erişimi kısıtlar. IronPDF, kullanıcı parolalarını (belgeyi açmak için gerekli) ve sahip parolalarını (izinleri değiştirmek için gerekli) destekler. PDF güvenlik kılavuzu, mevcut tüm izin bayraklarını 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 korumalı PDF'ler, tarayıcı <iframe> içinde bir şifre isteği görüntüler. Bu yaklaşım, indirme yoluyla dağıtılan belgeler için çalışır; istem olmadan satır içi görüntüleme için, yalnızca indirme yolu ile döndürülen belgelere parolayı uygulayın.

Kullanıcı Yüklediği PDF'leri Nasıl Gösteririm?

Bir kullanıcının yüklediği bir PDF'yi görüntülemek, gelen dosya baytlarını okumayı ve bir veri URI olarak kodlamayı gerektirir. Aşağıdaki yükleme bileşeni Blazor'un InputFile kontrolünü dosyayı yakalamak için kullanır, daha sonra herhangi bir yeniden işleme olmadan doğrudan gösterir:

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

Sunucu tarafı işlem gerektiren yükleme PDF'leri, örneğin filigranlama, sayfa çıkarımı veya yeniden şifreleme gibi işlemler için, baytları önce PdfDocument içerisine yükleyin:

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'si etkinleştirirken aynı bileşen yapısını korur.

Sonraki Adımlarım Neler?

Bu kılavuz, bir IronPDF Blazor PDF görüntüleyicisi için kurulum, .NET 10 üzerine yükleme, URL ve HTML oluşturma, üstbilgi ve altbilgi ile çıktı özelleştirme, tarayıcı indirmeleri için JavaScript etkileşimi, Blazor Server ve Blazor WebAssembly arasındaki mimari fark ile dört belge işlemini kapsıyordu: birleştirme, açıklamalar, parola koruması ve kullanıcı yüklemeleri.

Bu temeli genişletmek için şu kaynakları keşfedin:

Ücretsiz deneme lisansınızı alın ve su işaretlerini kaldırarak IronPDF'yi Blazor uygulamanızda test edin. IronPDF, .NET 10, ASP.NET Core, Blazor Server ve barındırılan Blazor WebAssembly projelerini ek yapılandırma gerektirmeden destekler. Ek entegrasyon rehberliği için, Microsoft'un resmi Blazor belgelerine bakın.

Sıkça Sorulan Sorular

Blazor PDF görüntüleyici nedir?

Blazor PDF görüntüleyici, Blazor Sunucu veya WebAssembly uygulaması içinde PDF belgelerini inline olarak görüntüleyen bir bileşendir. Genellikle PDF baytlarını base64 veri URI'sına çevirir ve bunları bir iframe öğesi içinde işler, kullanıcılar için yerleşik tarayıcı araç çubuğu sağlar.

Blazor Sunucu uygulamasında bir PDFyi nasıl görüntülerim?

NuGet ile IronPDF'i yükleyin, Program.cs'ye lisans anahtarınızı ekleyin, ardından URL veya HTML dizelerinden PDF baytları oluşturmak için ChromePdfRenderer'ı kullanın. Baytları base64 veri URI olarak kodlayın ve Razor bileşeninizdeki bir iframe'in src özelliğine atayın.

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

IronPDF'in görüntüleme motoru, tarayıcıdaki WASM sanal alanında çalışamayan yerel binary dosyalar gerektirir. Blazor WebAssembly projeleri için, PDF'yi IronPDF kullanarak oluşturup baytları döndüren sunucu tarafı bir ASP.NET Core API uç noktası oluşturun. WASM istemcisi, HttpClient ile bu uç noktayı çağırıp sonucu görüntüler.

Blazor'da PDF indirme nasıl tetiklenir?

Bileşeninize IJSRuntime'ı enjekte edin, IronPDF ile PDF baytlarını oluşturun, bunları bir DotNetStreamReference içinde sarın ve InvokeVoidAsync kullanarak bir JavaScript işlevi çağırın. JavaScript işlevi bir Blob URL oluşturur ve bir bağlantı elemanına tıklayıp tarayıcı indirmesini tetikler.

Blazor PDF görüntülemesi için IronPDF kullanmanın faydaları nelerdir?

IronPDF, HTML, CSS ve JavaScript çıktısını PDF formatına doğru bir şekilde dönüştüren bir Chrome görüntüleme motoru kullanır. Bu, .NET 10'i destekler, Blazor Sunucu ve WebAssembly mimarilerinde çalışır ve PDF oluşturma, birleştirme, açıklama ekleme, parola koruma ve kullanıcı yüklemesi işleme için tek bir API sağlar.

Blazor'da oluşturulan bir PDF'ye nasıl başlıklar ve alt bilgiler eklerim?

Bir render yöntemini çağırmadan önce ChromePdfRenderer üzerindeki RenderingOptions özelliğini ayarlayın. {sayfa}, {toplam-sayfa} ve {tarih} gibi şablon değişkenleri ile sade metin başlık ve alt bilgiler için TextHeader ve TextFooter kullanın. HTML tabanlı düzenler için HtmlHeader ve HtmlFooter kullanın.

Blazor'da birden fazla PDF belgesini nasıl birleştirebilirim?

Her belgeyi ChromePdfRenderer kullanarak bir PdfDocument örneği olarak oluşturun, ardından pdf1 ve pdf2'yi birleştirmek için PdfDocument.Merge(pdf1, pdf2) yöntemini çağırın. Birleştirilen belgenin BinaryData'sını Blazor bileşeninizin base64 veri URI'sine aktarın ve birleştirilmiş sonucu görüntüleyin.

Kullanıcı-yüklenmiş bir PDF'yi Blazor'da diske kaydetmeden görüntüleyebilir miyim?

Evet. Blazor'un InputFile bileşenini kullanarak yüklenen dosyayı bir MemoryStream'e yükleyin, baytları base64 veri URI'sine çevirin ve bir iframe'in src özelliğine atayın. Dosya sistemi yazımı gerekmez. Sunucu tarafı işlem için, baytları kodlamadan önce bir PdfDocument örneğine yükleyin.

Blazor'da oluşturulan bir PDF'ye parola koruması nasıl uygulanır?

PdfDocument oluşturduktan sonra, kullanıcı için açık parola için Password özelliğini ayarlayın ve sahip parolası için SecuritySettings.OwnerPassword kullanın. Belgeyi kaydetmeden veya kodlamadan önce SecuritySettings.AllowUserPrinting ve AllowUserCopyPasteContent ile izinleri kontrol edin.

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 üstü sürümleri destekler. Blazor uygulamanızda IronPDF'i kullanmak için özel bir yapılandırma gerektirmez.

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ı...

Daha Fazla Oku

Iron Destek Ekibi

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