Altbilgi içeriğine atla
IRONPDF KULLANARAK

HtmlToPdfDocument C# - DinkToPdf Alternatif | IronPDF

Blazor uygulamalarında PDF'leri görüntülemek için, üçüncü taraf tarayıcı araçlarına güvenmeden form doldurma, açıklama ekleme ve mobil destek gibi özelliklerle yüksek performanslı PDF renderme sağlayan IronPDF'in PDF görüntüleyici bileşenini kullanın.

Bir Blazor Uygulamasının Neden Özel Bir PDF Görüntüleyiciye İhtiyacı Var?

Modern web uygulamalarında PDF'leri görüntülemek, temel tarayıcı yeteneklerinin ötesine geçen güvenilir bir görüntüleyici bileşeni gerektirir. .NET geliştiricileri için Blazor uygulamaları oluşturan IronPDF, Blazor Server uygulamanızla entegre olan etkili bir PDF görüntüleyici çözümü sunar. Bu, üçüncü taraf tarayıcı araçlarına güvenmeden yüksek performanslı PDF renderleme ve zengin işlevsellik sağlar.

Yerel tarayıcı PDF desteği, farklı tarayıcılar ve platformlar arasında önemli ölçüde değişir, bu durum tutarsız kullanıcı deneyimlerine yol açar. Blazor uygulamanızda özel bir PDF görüntüleyici uygulayarak, izleme deneyimi üzerinde tam kontrole sahip olursunuz, tüm platformlarda tutarlı işlevsellik sağlar. Bu, uyumluluk standartları ve gelişmiş güvenlik özellikleri gerektiren uygulamalar için özellikle önemlidir.

Microsoft'un ASP.NET Core üzerine inşa edilen Blazor framework'ü, PDF manipülasyon kütüphaneleriyle doğal olarak eşleşen bileşen tabanlı geliştirmeyi mümkün kılar. Harici bir CDN'den üçüncü taraf bir görüntüleyici widget'ı gömmektense, uygulamanızın tam gereksinimlerine göre uyarlanmış bir bileşen oluşturabilirsiniz.

IronPDF'i Bir Blazor Projesine Nasıl Kurabilirsiniz?

Blazor PDF görüntüleyicinizi uygulamadan önce, IronPDF'i yükleyin. NuGet üzerinden, Paket Yöneticisi Konsolunu veya .NET CLI'yı kullanarak, Blazor Server uygulamanıza ekleyin:

Install-Package IronPdf
dotnet add package IronPdf

Sonra, yeni bir Blazor uygulaması oluşturun ve en son .NET sürümünün yüklü olduğundan emin olun. PDF dosyalarını kolay erişim için wwwroot klasöründe saklayın veya onları bayt dizileri veya URL'ler gibi diğer kaynaklardan yükleyin. Kurulum genel bakışı, çeşitli dağıtım senaryoları için detaylı yönlendirme sağlar.

Hangi Ön Koşullar Gereklidir?

Başarılı bir Blazor PDF görüntüleyici uygulamak için, aşağıdakilere sahip olduğunuzdan emin olun:

  • .NET 10 geliştirme makinenizde yüklü
  • C# eklentilerine sahip Visual Studio 2022 veya Visual Studio Code
  • Ücretsiz deneme yoluyla kullanılabilen IronPDF lisans anahtarı
  • Blazor bileşen yapısı hakkında temel bilgi
  • Test için örnek bir PDF dosyası (wwwroot klasörüne yerleştirin)

Windows dağıtımı için, uygun Visual C++ çalıştırma dosyalarının yüklü olduğundan emin olun. Linux kullanıcıları gerekli bağımlılıkları yüklemelidir, macOS geliştiricileri ise Intel ve Apple Silicon uyumluluğunu göz önünde bulundurmalıdırlar.

PDF Dosyaları Nerede Depolanmalıdır?

PDF dosya depolama konumu, uygulamanızın performansını ve güvenliğini önemli ölçüde etkiler. Blazor uygulamaları için, bu seçenekleri göz önünde bulundurun:

  • wwwroot klasörü: Hassas bilgiler içermeyen statik PDF'ler için ideal
  • Azure Blob Depolama: Esnek depolama gereksinimi duyan bulut uygulamaları için
  • Bayt dizileri olarak veritabanı: Erişim kontrolü gerektiren daha küçük PDF'ler için uygun
  • Korunan sunucu dizinleri: Güvenlik gereksinimleri olan hassas belgeler için en iyi seçenek
  • Bellek akışları: HTML'den PDF'ye dinamik olarak oluşturulan PDF'ler için optimal

Bir Blazor PDF Görüntüleyici Bileşeni Nasıl Oluşturursunuz?

PDF belgelerini görüntüleyebilecek temel bir Blazor PDF görüntüleyici bileşeni oluşturun. Projenizde yeni bir Razor bileşeni oluşturun:

@page "/pdfviewer"
@rendermode InteractiveServer
@using IronPdf
@inject IJSRuntime JSRuntime
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment

<h3>PDF Viewer Component</h3>
<div>
    <button @onclick="LoadPdfDocument">Open File</button>
    <div id="pdfContainer">
        @if (!string.IsNullOrEmpty(pdfUrl))
        {
            <iframe src="@pdfUrl" style="width:100%; height:600px;"></iframe>
        }
    </div>
</div>

@code {
    private string pdfUrl = "";
    private byte[] pdfData = Array.Empty<byte>();

    private async Task LoadPdfDocument()
    {
        var pdfDocument = PdfDocument.FromFile("wwwroot/sample.pdf");
        pdfData = pdfDocument.BinaryData;
        var base64 = Convert.ToBase64String(pdfData);
        pdfUrl = $"data:application/pdf;base64,{base64}";
    }
}
@page "/pdfviewer"
@rendermode InteractiveServer
@using IronPdf
@inject IJSRuntime JSRuntime
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment

<h3>PDF Viewer Component</h3>
<div>
    <button @onclick="LoadPdfDocument">Open File</button>
    <div id="pdfContainer">
        @if (!string.IsNullOrEmpty(pdfUrl))
        {
            <iframe src="@pdfUrl" style="width:100%; height:600px;"></iframe>
        }
    </div>
</div>

@code {
    private string pdfUrl = "";
    private byte[] pdfData = Array.Empty<byte>();

    private async Task LoadPdfDocument()
    {
        var pdfDocument = PdfDocument.FromFile("wwwroot/sample.pdf");
        pdfData = pdfDocument.BinaryData;
        var base64 = Convert.ToBase64String(pdfData);
        pdfUrl = $"data:application/pdf;base64,{base64}";
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.AspNetCore.Components
Imports Microsoft.JSInterop

@page "/pdfviewer"
@rendermode InteractiveServer

<h3>PDF Viewer Component</h3>
<div>
    <button @onclick="LoadPdfDocument">Open File</button>
    <div id="pdfContainer">
        @If Not String.IsNullOrEmpty(pdfUrl) Then
            <iframe src="@pdfUrl" style="width:100%; height:600px;"></iframe>
        End If
    </div>
</div>

@Code
    Private pdfUrl As String = ""
    Private pdfData As Byte() = Array.Empty(Of Byte)()

    Private Async Function LoadPdfDocument() As Task
        Dim pdfDocument = PdfDocument.FromFile("wwwroot/sample.pdf")
        pdfData = pdfDocument.BinaryData
        Dim base64 = Convert.ToBase64String(pdfData)
        pdfUrl = $"data:application/pdf;base64,{base64}"
    End Function
End Code
$vbLabelText   $csharpLabel

Bu kod, bir PDF belgesini yükleyen ve bir iframe kullanarak görüntüleyen bir PDF görüntüleyici bileşeni oluşturur. LoadPdfDocument yöntemi, wwwroot klasöründen bir PDF okur ve onu iframe'in doğrudan işlediği bir base64 veri URL'sine dönüştürür. Bu yaklaşım, çeşitli PDF sürümleriyle iyi çalışır ve uluslararası belgeler için UTF-8 kodlamasını destekler.

Bileşen PDF Dosyalarını Nasıl Yükler?

Bileşen, PDF dosyalarını verimli bir şekilde okumak için IronPDF'in belge yükleme yeteneklerini kullanır. Bir kullanıcı 'Dosya Aç' butonuna tıkladığında, bu yöntem:

  1. PdfDocument.FromFile kullanarak PDF dosyasını yükler
  2. Yüklenen PDF belgesinden ikili verileri çıkarır
  3. Tarayıcı uyumluluğu için Base64 formatına dönüştürür
  4. Tarayıcıların doğrudan işleyebileceği bir veri URL'si oluşturur

Bu yaklaşım, farklı tarayıcılar arasında uyumluluğu sağlarken, PDF görüntüleme için iyi performans sunar. Bileşen, çeşitli kağıt boyutlarını ve sayfa yönlerini ele alabilir.

Çıktı

Blazor PDF görüntüleyici bileşeni, 'Bir PDF nedir?' içeriğiyle bir örnek PDF'yi gösterirken, gezinme kontrolleri, zoom seçenekleri ve Dosya Aç düğmesi görüntüleniyor.

PDF Görüntülemesi İçin JavaScript Interop Nasıl Kullanılır?

PDF içeriği kontrolünü daha iyi sağlamak için, JavaScript interopu kullanarak PDF görüntüleyici işlevselliğini yönetin. Bu desen, bir JavaScript modülünü eşzamanlı olmayan olarak yükler ve işleme işini tarayıcının yerel blob/URL API'larına devreder – bu, Blazor'un bileşen yaşam döngüsü için uygun bir tekniktir:

@page "/pdf-jsinterop"
@rendermode InteractiveServer
@using IronPdf
@inject IJSRuntime JSRuntime
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment
@implements IAsyncDisposable

<h3>IronPDF JavaScript Interop Viewer</h3>
<p>Displays PDF using JavaScript Blob/ObjectURL capabilities.</p>

@if (!string.IsNullOrEmpty(ErrorMessage))
{
    <div class="alert alert-danger">Error: @ErrorMessage</div>
}

<div id="@documentId" style="border: 1px solid #ccc; width: 100%; min-height: 600px;">
    Loading PDF...
</div>

@code {
    private string documentId = Guid.NewGuid().ToString();
    private string ErrorMessage = string.Empty;
    private bool pdfLoaded = false;
    private IJSObjectReference? jsModule;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender && !pdfLoaded)
        {
            try
            {
                jsModule = await JSRuntime.InvokeAsync<IJSObjectReference>(
                    "import", "./pdfViewerInterop.js");
                await LoadPdfWithJavaScript();
                pdfLoaded = true;
            }
            catch (Exception ex)
            {
                ErrorMessage = $"Failed to load JS module: {ex.Message}";
            }
            finally
            {
                StateHasChanged();
            }
        }
    }

    private async Task LoadPdfWithJavaScript()
    {
        if (jsModule is null) return;
        var pdfPath = Path.Combine(WebHostEnvironment.WebRootPath, "sample.pdf");
        if (!File.Exists(pdfPath))
        {
            ErrorMessage = $"File not found: {pdfPath}";
            return;
        }
        var pdf = PdfDocument.FromFile(pdfPath);
        await jsModule.InvokeVoidAsync("displayPdf", documentId, pdf.BinaryData);
    }

    public async ValueTask DisposeAsync()
    {
        if (jsModule is not null)
            await jsModule.DisposeAsync();
    }
}
@page "/pdf-jsinterop"
@rendermode InteractiveServer
@using IronPdf
@inject IJSRuntime JSRuntime
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment
@implements IAsyncDisposable

<h3>IronPDF JavaScript Interop Viewer</h3>
<p>Displays PDF using JavaScript Blob/ObjectURL capabilities.</p>

@if (!string.IsNullOrEmpty(ErrorMessage))
{
    <div class="alert alert-danger">Error: @ErrorMessage</div>
}

<div id="@documentId" style="border: 1px solid #ccc; width: 100%; min-height: 600px;">
    Loading PDF...
</div>

@code {
    private string documentId = Guid.NewGuid().ToString();
    private string ErrorMessage = string.Empty;
    private bool pdfLoaded = false;
    private IJSObjectReference? jsModule;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender && !pdfLoaded)
        {
            try
            {
                jsModule = await JSRuntime.InvokeAsync<IJSObjectReference>(
                    "import", "./pdfViewerInterop.js");
                await LoadPdfWithJavaScript();
                pdfLoaded = true;
            }
            catch (Exception ex)
            {
                ErrorMessage = $"Failed to load JS module: {ex.Message}";
            }
            finally
            {
                StateHasChanged();
            }
        }
    }

    private async Task LoadPdfWithJavaScript()
    {
        if (jsModule is null) return;
        var pdfPath = Path.Combine(WebHostEnvironment.WebRootPath, "sample.pdf");
        if (!File.Exists(pdfPath))
        {
            ErrorMessage = $"File not found: {pdfPath}";
            return;
        }
        var pdf = PdfDocument.FromFile(pdfPath);
        await jsModule.InvokeVoidAsync("displayPdf", documentId, pdf.BinaryData);
    }

    public async ValueTask DisposeAsync()
    {
        if (jsModule is not null)
            await jsModule.DisposeAsync();
    }
}
Imports System
Imports System.IO
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.AspNetCore.Components
Imports Microsoft.AspNetCore.Components.Web
Imports Microsoft.JSInterop
Imports Microsoft.AspNetCore.Hosting

@page "/pdf-jsinterop"
@rendermode InteractiveServer

@inject IJSRuntime JSRuntime
@inject IWebHostEnvironment WebHostEnvironment
@implements IAsyncDisposable

<h3>IronPDF JavaScript Interop Viewer</h3>
<p>Displays PDF using JavaScript Blob/ObjectURL capabilities.</p>

@if Not String.IsNullOrEmpty(ErrorMessage) Then
    <div class="alert alert-danger">Error: @ErrorMessage</div>
End If

<div id="@documentId" style="border: 1px solid #ccc; width: 100%; min-height: 600px;">
    Loading PDF...
</div>

@code {
    Private documentId As String = Guid.NewGuid().ToString()
    Private ErrorMessage As String = String.Empty
    Private pdfLoaded As Boolean = False
    Private jsModule As IJSObjectReference

    Protected Overrides Async Function OnAfterRenderAsync(firstRender As Boolean) As Task
        If firstRender AndAlso Not pdfLoaded Then
            Try
                jsModule = Await JSRuntime.InvokeAsync(Of IJSObjectReference)(
                    "import", "./pdfViewerInterop.js")
                Await LoadPdfWithJavaScript()
                pdfLoaded = True
            Catch ex As Exception
                ErrorMessage = $"Failed to load JS module: {ex.Message}"
            Finally
                StateHasChanged()
            End Try
        End If
    End Function

    Private Async Function LoadPdfWithJavaScript() As Task
        If jsModule Is Nothing Then Return
        Dim pdfPath = Path.Combine(WebHostEnvironment.WebRootPath, "sample.pdf")
        If Not File.Exists(pdfPath) Then
            ErrorMessage = $"File not found: {pdfPath}"
            Return
        End If
        Dim pdf = PdfDocument.FromFile(pdfPath)
        Await jsModule.InvokeVoidAsync("displayPdf", documentId, pdf.BinaryData)
    End Function

    Public Async Function DisposeAsync() As ValueTask Implements IAsyncDisposable.DisposeAsync
        If jsModule IsNot Nothing Then
            Await jsModule.DisposeAsync()
        End If
    End Function
}
$vbLabelText   $csharpLabel

Karşılık gelen JavaScript fonksiyonunu wwwroot/pdfViewerInterop.js dosyanıza ekleyin. Bu dosyanın JavaScript (C# değil) kullandığını, .js modülü olarak kaydedildiğini unutmayın:

export function displayPdf(elementId, data) {
    const blob = new Blob([new Uint8Array(data)], { type: 'application/pdf' });
    const url = URL.createObjectURL(blob);
    const container = document.getElementById(elementId);
    if (!container) return;
    container.innerHTML = '';
    const iframe = document.createElement('iframe');
    iframe.src = url;
    iframe.style.width = '100%';
    iframe.style.height = '600px';
    iframe.style.border = 'none';
    container.appendChild(iframe);
}
export function displayPdf(elementId, data) {
    const blob = new Blob([new Uint8Array(data)], { type: 'application/pdf' });
    const url = URL.createObjectURL(blob);
    const container = document.getElementById(elementId);
    if (!container) return;
    container.innerHTML = '';
    const iframe = document.createElement('iframe');
    iframe.src = url;
    iframe.style.width = '100%';
    iframe.style.height = '600px';
    iframe.style.border = 'none';
    container.appendChild(iframe);
}
The provided code is JavaScript, not C#. Therefore, it cannot be directly converted to VB.NET, as VB.NET is a server-side language and JavaScript is a client-side language. If you have C# code that you need converted to VB.NET, please provide that code for conversion.
$vbLabelText   $csharpLabel

Bu JavaScript işlevi, PDF verilerinden bir blob oluşturur, bir nesne URL'si üretir ve konteynere bir iframe ekler. Teknik, JavaScript işleme tekniklerini ve karmaşık belgeler için özel işleme gecikmelerini destekler.

Çıktı

IronPDF JavaScript Interop Viewer arayüzü, 'Bir PDF nedir?' içeriğiyle bir PDF belgesini gösteriyor, JavaScript Blob/ObjectURL PDF işleme yeteneklerini sergiliyor

PDF'leri Birden Fazla Kaynaktan Nasıl Yüklersiniz?

Blazor PDF görüntüleyiciniz, PDF belgelerini farklı kaynaklardan alabilir ve görüntüleyebilir. Aşağıdaki örnek, URL'den ve HTML içeriğinden yüklemeyi gösterir:

private async Task LoadFromUrl(string url)
{
    using var client = new HttpClient();
    client.Timeout = TimeSpan.FromSeconds(30);
    var response = await client.GetAsync(url);
    response.EnsureSuccessStatusCode();
    var stream = await response.Content.ReadAsStreamAsync();
    var pdfDocument = new PdfDocument(stream);
    await DisplayPdfContent(pdfDocument);
}

private async Task LoadFromHtmlContent()
{
    var renderer = new ChromePdfRenderer();
    var htmlContent = "<h1>Generated PDF</h1><p>Dynamic content from Blazor.</p>";
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    await DisplayPdfContent(pdfDocument);
}

private Task DisplayPdfContent(PdfDocument document)
{
    var data = document.BinaryData;
    pdfUrl = $"data:application/pdf;base64,{Convert.ToBase64String(data)}";
    return Task.CompletedTask;
}
private async Task LoadFromUrl(string url)
{
    using var client = new HttpClient();
    client.Timeout = TimeSpan.FromSeconds(30);
    var response = await client.GetAsync(url);
    response.EnsureSuccessStatusCode();
    var stream = await response.Content.ReadAsStreamAsync();
    var pdfDocument = new PdfDocument(stream);
    await DisplayPdfContent(pdfDocument);
}

private async Task LoadFromHtmlContent()
{
    var renderer = new ChromePdfRenderer();
    var htmlContent = "<h1>Generated PDF</h1><p>Dynamic content from Blazor.</p>";
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    await DisplayPdfContent(pdfDocument);
}

private Task DisplayPdfContent(PdfDocument document)
{
    var data = document.BinaryData;
    pdfUrl = $"data:application/pdf;base64,{Convert.ToBase64String(data)}";
    return Task.CompletedTask;
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks

Private Async Function LoadFromUrl(url As String) As Task
    Using client As New HttpClient()
        client.Timeout = TimeSpan.FromSeconds(30)
        Dim response = Await client.GetAsync(url)
        response.EnsureSuccessStatusCode()
        Dim stream = Await response.Content.ReadAsStreamAsync()
        Dim pdfDocument As New PdfDocument(stream)
        Await DisplayPdfContent(pdfDocument)
    End Using
End Function

Private Async Function LoadFromHtmlContent() As Task
    Dim renderer As New ChromePdfRenderer()
    Dim htmlContent As String = "<h1>Generated PDF</h1><p>Dynamic content from Blazor.</p>"
    Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
    Await DisplayPdfContent(pdfDocument)
End Function

Private Function DisplayPdfContent(document As PdfDocument) As Task
    Dim data = document.BinaryData
    pdfUrl = $"data:application/pdf;base64,{Convert.ToBase64String(data)}"
    Return Task.CompletedTask
End Function
$vbLabelText   $csharpLabel

LoadFromUrl yöntemi, uzak konumlardan PDF belgelerini alır, LoadFromHtmlContent ise HTML'yi anında PDF'ye dönüştürmeyi gösterir. Chrome renderleme motoru, doğru HTML dönüşümünü sağlar. Ek kaynak seçenekleri arasında Azure Blob Depolama, veritabanı bellek akışları ve DOCX belgeleri bulunur.

Hangi Kaynak Yöntemi Kullanım Durumunuz İçin Uygun?

Blazor Uygulamaları için PDF Kaynak Yöntemleri
Kaynak Türü En İyi İçin Performans Güvenlik
Yerel Dosyalar Statik içerik Mükemmel Düşük
URL'ler Harici belgeler İyi Orta
HTML Dönüştürme Dinamik raporlar Değişken Yüksek
Blob Depolama Kurumsal uygulamalar Mükemmel Yüksek
Bellek Akışları Geçici PDF'ler Mükemmel Yüksek

HTML İçeriği Kullanarak Çıktı

IronPDF test arayüzü, HTML içeriğinden başarılı bir PDF oluşturma işlemini gösteriyor, URL'den yükleme veya HTML'den oluşturma seçenekleri üstte görünüyor.

Bir PDF Görüntüleyiciye Etkileşimli Özellikler Nasıl Eklenir?

PDF görüntüleyiciye sayfa gezinme, döndürme, yazdırma ve kaydetme işlevselliği eklendiğini gösterir:

@code {
    private int currentPage = 1;
    private int totalPages;
    private byte[] pdfData = Array.Empty<byte>();
    private string pdfUrl = "";
    private string rotationClass = "";
    private string documentId = Guid.NewGuid().ToString();

    private async Task NavigateToPage(int page)
    {
        currentPage = page;
        await JSRuntime.InvokeVoidAsync("navigateTo", page);
    }

    private void RotateCounterclockwise()
    {
        rotationClass = "rotate-270";
    }

    private async Task PrintPdf()
    {
        await JSRuntime.InvokeVoidAsync("printDocument", documentId);
    }

    private async Task DownloadPdf()
    {
        await JSRuntime.InvokeVoidAsync("downloadFile", pdfData, "document.pdf");
    }
}
@code {
    private int currentPage = 1;
    private int totalPages;
    private byte[] pdfData = Array.Empty<byte>();
    private string pdfUrl = "";
    private string rotationClass = "";
    private string documentId = Guid.NewGuid().ToString();

    private async Task NavigateToPage(int page)
    {
        currentPage = page;
        await JSRuntime.InvokeVoidAsync("navigateTo", page);
    }

    private void RotateCounterclockwise()
    {
        rotationClass = "rotate-270";
    }

    private async Task PrintPdf()
    {
        await JSRuntime.InvokeVoidAsync("printDocument", documentId);
    }

    private async Task DownloadPdf()
    {
        await JSRuntime.InvokeVoidAsync("downloadFile", pdfData, "document.pdf");
    }
}
Imports System

Public Class CodeBehind
    Private currentPage As Integer = 1
    Private totalPages As Integer
    Private pdfData As Byte() = Array.Empty(Of Byte)()
    Private pdfUrl As String = ""
    Private rotationClass As String = ""
    Private documentId As String = Guid.NewGuid().ToString()

    Private Async Function NavigateToPage(page As Integer) As Task
        currentPage = page
        Await JSRuntime.InvokeVoidAsync("navigateTo", page)
    End Function

    Private Sub RotateCounterclockwise()
        rotationClass = "rotate-270"
    End Sub

    Private Async Function PrintPdf() As Task
        Await JSRuntime.InvokeVoidAsync("printDocument", documentId)
    End Function

    Private Async Function DownloadPdf() As Task
        Await JSRuntime.InvokeVoidAsync("downloadFile", pdfData, "document.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Bu kod, sayfa gezinme, döndürme, yazdırma ve indirme işlevini ekler. Gezinme yoğun belgeler için sayfa numaraları ve yer imleri eklemeyi düşünün. Gelişmiş özellikler, metin çıkartma ve PDF'yi HTML'ye dönüştürmeye dönüştürme gibi özellikleri içerebilir.

Çıktı

Blazor ile oluşturulmuş tam özellikli bir PDF görüntüleyici bileşeni, belge gezinme kontrollerini, zoom işlevselliği %100'e ayarlanmış ve Yükle PDF Dosyası, Yazdır, İndir ve Döndür seçeneklerini içeren özel eylem düğmelerini gösteriyor

PDF Formları ve Açıklamalar Nasıl İşlenir?

Form alanları ve açıklamalar içeren PDF belgeleri için, IronPDF, alan değerlerini programatik olarak okuma ve yazma için sağlam bir destek sağlar.

private async Task ProcessFormFields()
{
    var pdfDocument = PdfDocument.FromFile("form.pdf");

    foreach (var field in pdfDocument.Form.Fields)
    {
        if (field.Type == PdfFormFieldType.Text)
        {
            field.Value = "User Input";
        }
    }

    await DisplayPdfContent(pdfDocument);
}

private async Task SaveFormData()
{
    var pdfWithFormData = PdfDocument.FromFile("filled-form.pdf");
    var formData = pdfWithFormData.Form.Fields
        .ToDictionary(f => f.Name, f => f.Value);

    var json = System.Text.Json.JsonSerializer.Serialize(formData);
    await File.WriteAllTextAsync("form-data.json", json);

    pdfWithFormData.Form.Flatten();
    pdfWithFormData.SaveAs("form-submission.pdf");
}
private async Task ProcessFormFields()
{
    var pdfDocument = PdfDocument.FromFile("form.pdf");

    foreach (var field in pdfDocument.Form.Fields)
    {
        if (field.Type == PdfFormFieldType.Text)
        {
            field.Value = "User Input";
        }
    }

    await DisplayPdfContent(pdfDocument);
}

private async Task SaveFormData()
{
    var pdfWithFormData = PdfDocument.FromFile("filled-form.pdf");
    var formData = pdfWithFormData.Form.Fields
        .ToDictionary(f => f.Name, f => f.Value);

    var json = System.Text.Json.JsonSerializer.Serialize(formData);
    await File.WriteAllTextAsync("form-data.json", json);

    pdfWithFormData.Form.Flatten();
    pdfWithFormData.SaveAs("form-submission.pdf");
}
Imports System.IO
Imports System.Threading.Tasks
Imports System.Text.Json

Private Async Function ProcessFormFields() As Task
    Dim pdfDocument = PdfDocument.FromFile("form.pdf")

    For Each field In pdfDocument.Form.Fields
        If field.Type = PdfFormFieldType.Text Then
            field.Value = "User Input"
        End If
    Next

    Await DisplayPdfContent(pdfDocument)
End Function

Private Async Function SaveFormData() As Task
    Dim pdfWithFormData = PdfDocument.FromFile("filled-form.pdf")
    Dim formData = pdfWithFormData.Form.Fields.ToDictionary(Function(f) f.Name, Function(f) f.Value)

    Dim json = JsonSerializer.Serialize(formData)
    Await File.WriteAllTextAsync("form-data.json", json)

    pdfWithFormData.Form.Flatten()
    pdfWithFormData.SaveAs("form-submission.pdf")
End Function
$vbLabelText   $csharpLabel

Bu, Blazor PDF görüntüleyici içinde form doldurma yetenekleri sağlar, kullanıcıların tarayıcıda form alanları ile doğrudan etkileşimde bulunmasına izin verir. Kod, form alanlarında gezinip, değerleri programlı olarak ayarlar ki bu, dinamik ön dolum gerektiren uygulamalar için idealdir. IronPDF ayrıca dijital imzalar ve metin açıklamaları destekler.

Desteklenen alan türleri arasında metin girişleri, onay kutuları, radyo düğmeleri, açılır listeler, dijital imza alanları, çok satırlı metin bölgeleri ve tarih seçiciler bulunur.

Programatik mi Etkileşimli mi Form Doldurma Kullanılmalı?

Form Doldurma Yaklaşımı Karşılaştırması
Yaklaşım Ne Zaman Kullanılmalı Faydalar
Programatik Bilinen verileri önceden doldurma Hızlı, tutarlı, otomatik
Etkileşimli Kullanıcı girdisi gerektirir Esnek, anında doğrulama
Karma Kısmi veriler mevcut Her iki yaklaşımın en iyisi

Form gönderiminden sonra, değiştirme işlemlerini önlemek için formları düzleştirmeyi düşünün. Güvenlik için PDF temizlemeyi kullanın.

Çıktı

Kullanıcıların PDF formlarını doğrudan tarayıcıda doldurabilmesi için bir PDF görüntüleyici bileşeninin form doldurma işlevselliği örneği

Büyük PDF'ler İçin Performans Nasıl Optimize Edilir?

Özellikle büyük dosyalar için, PDF'leri görüntülerken iyi bir performans elde etmek için parça yükleme ve bellek yönetimini kullanın:

private async Task LoadLargePdf()
{
    const int chunkSize = 1024 * 1024; // 1MB chunks
    var pdfPath = "largefile.pdf";

    using var fileStream = File.OpenRead(pdfPath);
    var buffer = new byte[chunkSize];
    var chunks = new List<byte[]>();
    int bytesRead;

    while ((bytesRead = await fileStream.ReadAsync(buffer)) > 0)
    {
        var chunk = new byte[bytesRead];
        Array.Copy(buffer, chunk, bytesRead);
        chunks.Add(chunk);
    }

    await ProcessPdfChunks(chunks);
}
private async Task LoadLargePdf()
{
    const int chunkSize = 1024 * 1024; // 1MB chunks
    var pdfPath = "largefile.pdf";

    using var fileStream = File.OpenRead(pdfPath);
    var buffer = new byte[chunkSize];
    var chunks = new List<byte[]>();
    int bytesRead;

    while ((bytesRead = await fileStream.ReadAsync(buffer)) > 0)
    {
        var chunk = new byte[bytesRead];
        Array.Copy(buffer, chunk, bytesRead);
        chunks.Add(chunk);
    }

    await ProcessPdfChunks(chunks);
}
Imports System.IO
Imports System.Threading.Tasks

Private Async Function LoadLargePdf() As Task
    Const chunkSize As Integer = 1024 * 1024 ' 1MB chunks
    Dim pdfPath As String = "largefile.pdf"

    Using fileStream As FileStream = File.OpenRead(pdfPath)
        Dim buffer(chunkSize - 1) As Byte
        Dim chunks As New List(Of Byte())()
        Dim bytesRead As Integer

        Do
            bytesRead = Await fileStream.ReadAsync(buffer, 0, buffer.Length)
            If bytesRead > 0 Then
                Dim chunk(bytesRead - 1) As Byte
                Array.Copy(buffer, chunk, bytesRead)
                chunks.Add(chunk)
            End If
        Loop While bytesRead > 0
    End Using

    Await ProcessPdfChunks(chunks)
End Function
$vbLabelText   $csharpLabel

Bu yaklaşım, büyük PDF dosyalarını parça parça yükleyerek bellek sorunlarını önler ve önemli belgelerle bile pürüzsüz performans sağlar. Bu, özellikle, mobil cihazlarda veya sınırlı kaynaklara sahip sistemlerde PDF dosyalarıyla ilgilenirken yararlıdır. IronPDF'in performans kılavuzuna bakarak ek ayar seçenekleri bulabilirsiniz.

Ek optimizasyon stratejileri arasında hızlı web görüntüleme için doğrusallaştırma, dosya boyutlarını azaltmak için sıkıştırma, ve eşzamanlı olarak birden fazla PDF'yi işlemek için eşzamansız işleme yer alır. PDF Association'ın en iyi uygulamalarına göre, doğrusal hale getirilmiş (ağ için optimize edilmiş) PDF'ler, büyük belgeler için başlangıç yükleme süresini %30--60 oranında azaltabilir.

Hangi Dosya Boyutu İçin Parça Yükleme Gerekir?

PDF Dosya Boyutu Yükleme Strateji Kılavuzu
Dosya Boyutu Yükleme Stratejisi Bellek Etkisi
5 MB'dan Küçük Doğrudan yükleme Minimal
5 -- 20 MB Opsiyonel parçalama Orta
20 -- 50 MB Önerilen parçalama Önemli
50 MB'nin Üzeri Gereken parçalama Kritik

Sunucu tarafı işleme 100 MB'dan büyük PDF'leri işlerken, karmaşık açıklamalar uygularken veya birden fazla eşzamanlı kullanıcıyı desteklerken faydalı hale gelir.

Şifre Korumalı Dosyalar İçin Bir Blazor PDF Görüntüleyici Nasıl Güvenli Hale Getirilir?

Parola korumalı PDF dosyaları ile çalışırken, parolayı doğrudan PdfDocument.FromFile'e aktarın ve uygun HTTP güvenlik başlıklarını yapılandırın:

private async Task LoadSecurePdf(string password)
{
    var pdfDocument = PdfDocument.FromFile("secure.pdf", password);

    var headers = new Dictionary<string, string>
    {
        { "X-Frame-Options", "SAMEORIGIN" },
        { "Content-Güvenlik-Policy", "default-src 'self'" },
        { "X-Content-Type-Options", "nosniff" },
        { "Referrer-Policy", "no-referrer" }
    };

    await DisplayPdfContent(pdfDocument);
}
private async Task LoadSecurePdf(string password)
{
    var pdfDocument = PdfDocument.FromFile("secure.pdf", password);

    var headers = new Dictionary<string, string>
    {
        { "X-Frame-Options", "SAMEORIGIN" },
        { "Content-Güvenlik-Policy", "default-src 'self'" },
        { "X-Content-Type-Options", "nosniff" },
        { "Referrer-Policy", "no-referrer" }
    };

    await DisplayPdfContent(pdfDocument);
}
Private Async Function LoadSecurePdf(password As String) As Task
    Dim pdfDocument = PdfDocument.FromFile("secure.pdf", password)

    Dim headers = New Dictionary(Of String, String) From {
        {"X-Frame-Options", "SAMEORIGIN"},
        {"Content-Güvenlik-Policy", "default-src 'self'"},
        {"X-Content-Type-Options", "nosniff"},
        {"Referrer-Policy", "no-referrer"}
    }

    Await DisplayPdfContent(pdfDocument)
End Function
$vbLabelText   $csharpLabel

Bu kod, uygun başlık yapılandırması yoluyla güvenliği koruyarak, şifre korumalı PDF belgelerini yüklemeyi gösterir. Geliştirilmiş kimlik doğrulama için dijital imza düşünün. PDF temizliği uygulayarak potansiyel olarak zararlı içeriği kaldırabilir ve hassas bilgileri düzenleyebilirsiniz.

Parolalarla çalışırken, asla düz metin olarak veya istemci tarafı kodda saklamayın. Doğru doğrulama ile güvenli giriş yöntemleri kullanın, hassas belgeler için oturum zaman aşımı uygulayın ve kullanımdan sonra bellekten parolaları temizleyin. Microsoft'un ASP.NET Core güvenlik kılavuzu, herhangi bir kullanıcı tarafından sağlanan kimlik bilgilerinin alt API'lere aktarılmadan önce her zaman doğrulanmasını ve temizlenmesini önerir.

İstemci Tarafı vs Sunucu Tarafı Şifre Çözme

PDF Şifre Çözme Yaklaşımı Güvenlik Karşılaştırması
Şifre Çözme Türü Kullanım Örneği Güvenlik Seviyesi
İstemci Tarafı Genel belgeler Düşük
Sunucu Tarafı Hassas veriler Yüksek
Karma Karışık içerik Orta

Maksimum güvenlik için, her zaman şifre çözmeyi sunucu tarafında gerçekleştirin ve şifrelenmiş içeriği güvenli bir şekilde istemciye iletin. Uzun süreli arşivleme gereksinimleri için PDF/A uyumluluğunu uygulayın.

Blazor'da PDF'leri Görüntülemede Öne Çıkanlar Nelerdir?

IronPDF ile bir Blazor PDF görüntüleyici kurmak, geliştiricilere web uygulamalarında PDF'leri görüntülemek için eksiksiz bir çözüm sunar. Temel görüntülemeden form doldurma ve açıklamalara kadar, IronPDF'in PDF görüntüleyici bileşeni, profesyonel uygulamalar için gerekli işlevselliği sunar.

Gösterilen örnekler, çeşitli PDF kaynaklarını işleyebilen, etkileşimli özellikler sunan ve iyi bir performans sağlayan güvenilir bir Blazor PDF görüntüleyici nasıl oluşturulacağını gösterir. Basit bir belge görüntüleyici veya karmaşık bir belge yönetim sistemi oluştururken, IronPDF Blazor Server uygulamaları ile entegre edilmesi sayesinde profesyonel PDF görüntüleme yeteneklerini uygulamayı kolaylaştırır.

Ana faydalar şunları içerir:

  • Tüm tarayıcılarda tutarlı bir renderleme ile çapraz platform uyumluluğu
  • Gelişmiş güvenlik özellikleri için hassas belgeler
  • Asenkron ve parçalı yükleme yoluyla büyük dosyalar için performans optimizasyonu
  • Dijital imzalar dahil tam form yönetimi yetenekleri
  • Mevcut .NET uygulamaları ile kolay entegrasyon

IronPDF, Azure, AWS, Docker ve geleneksel Windows ortamlarını destekler. Kendi görüntüleyicinizi geliştirmeye hazır mısınız? IronPDF'in ücretsiz deneme sürümü ile başlayın ve Blazor uygulamalarınızda etkili PDF görüntüleme deneyimleri oluşturmak için tam belgelere ve kod örneklerine danışın.

Sıkça Sorulan Sorular

IronPDF kullanarak bir Blazor uygulamasında PDF'yi nasıl görüntüleyebilirim?

IronPDF, Blazor uygulamaları içinde PDF'leri işleyip görüntülemenizi sağlayan kapsamlı bir API sunar. IronPDF'i entegre ederek, güçlü bir PDF görüntüleyici bileşenini kolayca uygulayabilirsiniz.

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

Blazor PDF görüntülemesi için IronPDF kullanmak, form alanlarını yönetme, etkileşimli görüntüleyiciler oluşturma ve yüksek kaliteli PDF'leri uygulamanızda kesintisiz bir şekilde işleme gibi faydalar sunar.

Blazor'da IronPDF kullanarak PDF'lerdeki form alanlarını yönetmek mümkün müdür?

Evet, IronPDF, Blazor uygulamasında PDF belgeleri içinde form alanlarını yönetip manipüle etmenizi sağlar, bu da etkileşim ve kullanıcı katılımını artırır.

IronPDF, Blazor'da etkileşimli PDF görüntüleyiciler oluşturmak için kullanılabilir mi?

Kesinlikle. IronPDF, Blazor'da form yönetimi ve dinamik içerik görüntüleme gibi özelliklerle etkileşimli PDF görüntüleyiciler oluşturmak için araçlar sağlar.

IronPDF, Blazor'da PDF manipülasyonu için hangi özellikleri sunar?

IronPDF, PDF işleme, form alanı yönetimi, metin çıkarma ve sayfa manipülasyonu gibi özellikler sunarak, Blazor'da PDF işlemleri için çok yönlü bir seçenek haline gelir.

IronPDF, Blazor uygulamalarında PDF görüntüleme deneyimini nasıl geliştirir?

IronPDF, Blazor uygulamalarında PDF görüntüleme deneyimini pürüzsüz işleme, etkileşimli özellikler ve sağlam PDF belgeleri yönetimi sunarak geliştirir.

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