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ı (
wwwrootklasö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
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:
PdfDocument.FromFilekullanarak PDF dosyasını yükler- Yüklenen PDF belgesinden ikili verileri çıkarır
- Tarayıcı uyumluluğu için Base64 formatına dönüştürür
- 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ı

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

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

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

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

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
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?
| 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
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
| Ş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.

