IronPDF ile C# kullanarak .NET Core'da HTML'yi PDF'ye dönüştürün
Yüksek kaliteli PDF'leri doğrudan HTML'den üretmek, modern .NET uygulamalarında rutin bir gerekliliktir; raporlar, faturalar ve biletler, web UI ile eşleşen piksel mükemmellikte çıktılar gerektirir. IronPDF, HTML, Razor görünümleri ve tam web sitelerini standartlara uyumlu PDF belgelerine dönüştürmek için tek bir C# API derleyerek bu iş akışını kolaylaştırır. Bu kılavuzun sonunda, bir geliştirici, bir ASP.NET Core projesinde URL'leri, ham HTML'yi veya MVC görünümlerini dönüştürebilir ve aynı kodu Windows, Linux, Docker veya sunucusuz ortamlara dağıtabilir.
Hızlı Başlangıç: HTML'den PDF oluşturma .NET Core İle
HTML'yi PDF'ye .NET Core'da IronPDF kütüphanesini kullanarak zahmetsizce dönüştürün. Bu kılavuz, HTML içeriğini minimal kodla yüksek kaliteli bir PDF'ye dönüştürmeye başlamak için basit bir örnek sunar. PDF oluşturmayı kolayca uygulamalarına entegre etmek isteyen geliştiriciler için mükemmel.
-
IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
Bu kod parçacığını kopyalayın ve çalıştırın.
var pdf = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello World</h1>"); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın
Asgari İş Akışı (5 adım)
IronPdfNuGet paketini kurunRenderUrlAsPdfile bir web sitesi URL'sini dönüştürünRenderHtmlAsPdfile ham HTML'yi oluşturun- Bir MVC görünümünü PDF'ye aktarın
- Yazı boyutu, kenar boşlukları, başlıklar ve altbilgileri ayarlayın
Hızlı Başlangıç Kontrol Listesi
- Kurulum –
Install-Package IronPdf - Bir URL'i Görüntüle –
ChromePdfRenderer.RenderUrlAsPdf() - Ham HTML Görüntüleme –
ChromePdfRenderer.RenderHtmlAsPdf() - Bir Razor görünümünü dışa aktar –
ChromePdfRenderer.RenderHtmlAsPdfAsync() - Çıktıyı ince ayar yap –
ChromePdfRenderer.RenderingOptionskullan
Bu Öğretici Ne İçerir?
- URL, HTML stringi ve Razor görünümü dönüştürme
- Kağıt, kenar boşluğu ve medya türü yapılandırması
- Platformlar arası dağıtım (Windows, Linux, Docker)
- Son işlemler: PDF'leri birleştirme, filigran ekleme, parola koruma ve dijital olarak imzalama
- Uçtan uca örnek: bilet-rezervasyon MVC uygulaması
PDF kütüphanesini .NET Core'da nasıl kurarım?
Kütüphaneyi kurmak, herhangi bir .NET 8 projesinde tek satırlık bir komuttur ve .NET 9 önizlemesi ve yakında çıkacak .NET 10 sürümü ile ileri uyumludur. NuGet'in Paket Yöneticisi Konsolunu kullanın ve paket yöneticisi, Windows, Linux, Docker ve sunucusuz hedefler için her bağımlılığı otomatik olarak çözer.
PM> Install-Package IronPdf # .NET 8 LTS and higher
PM> Install-Package IronPdf # .NET 8 LTS and higher
dotnet add package IronPdf ile çalışır.Kurulumdan sonra, herhangi bir genel URL'yi dönüştürerek her şeyin bağlandığını doğrulayın:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-3.cs
public class ClientModel
{
[Required]
public string Name { get; set; }
[Required]
public string Phone { get; set; }
[Required]
public string Email { get; set; }
}
Public Class ClientModel
<Required>
Public Property Name() As String
<Required>
Public Property Phone() As String
<Required>
Public Property Email() As String
End Class
Nasıl çalışıyor
ChromePdfRendererarka planda izole bir Chromium örneği oluşturur—ayrı bir Chrome yüklemesi gerektirmez.RenderUrlAsPdf, tam olarak işlenmiş DOM'u, JavaScript ile çalışan içerik, CSS medya sorguları ve yazı tipleri dahil olmak üzere yakalar.- Ortaya çıkan
PdfDocument, birleştirme, parola koruma veya dijital imzalama için yardımcı yöntemleri sunar—bu eğitimde ilerleyen bölümlerde ele alınmıştır.
Dağıtım ayrıntıları (Azure App Service, AWS Lambda, yerel Linux) hakkında daha fazla ayrıntı için özel kurulum kılavuzuna ve gelişmiş NuGet kurulumu sayfalarına bakın. Docker ve K8s küme içi CI/CD ipuçları, Docker dağıtım en iyi uygulamaları başlığı altında ele alınmıştır.
.NET Core hizmeti canlı bir web sitesi URL'sini PDF'ye nasıl dönüştürür?
RenderUrlAsPdf'ya yapılan tek bir çağrı yeterlidir: Herhangi bir genel olarak erişilebilir URL'yi iletin ve IronPDF tam olarak görüntülenmiş, standartlara uygun bir PDF döndürsün. Aşağıdaki kod .NET 8 LTS'yi hedeflemektedir ve .NET 9 önizlemesinde ve 2025'teki yaklaşan .NET 10 sürümünde değişmeden derlenir.
Adım adım örnek
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-4.cs
public class ClientServices
{
private static ClientModel _clientModel;
public static void AddClient(ClientModel clientModel)
{
_clientModel = clientModel;
}
public static ClientModel GetClient()
{
return _clientModel;
}
}
Public Class ClientServices
Private Shared _clientModel As ClientModel
Public Shared Sub AddClient(ByVal clientModel As ClientModel)
_clientModel = clientModel
End Sub
Public Shared Function GetClient() As ClientModel
Return _clientModel
End Function
End Class
Neden çalışıyor?
ChromePdfRenderer, bir izole Chromium örneği oluşturur—sistem Chrome bağımlılığı olmadan, Docker imajlarını zayıf tutar.RenderUrlAsPdf, anlık görüntü almadan önce DOM ve JavaScript'in tamamlanmasını bekler, böylece tek sayfalık uygulamalar doğru bir şekilde görüntülenir.CssMediaType'u Yazdır olarak ayarlamak, motoru yazdırmaya özgü kuralları kullanmak üzere yönlendirir, tarayıcının Yazdır → PDF Olarak Kaydet çıkışına uygun hale getirir.- Ortaya çıkan
PdfDocumentşifrelenebilir, dijital olarak imzalanabilir, birleştirilebilir veya rasterize edilebilir—sonraki bölümlerde ele alınan yeteneklerdir.
renderer.LoggingOptions.DebugMode = true etkinleştir ve canlı DevTools'u görüntüleme sırasında incelemek için Headless Chrome hata ayıklama kılavuzunu takip et.İlgili kaynaklar
- API referansı –
ChromePdfRenderer.RenderUrlAsPdf - API referansı –
PdfDocument.SaveAs - Eğitim – IronPDF'i Docker konteynerlerine dağıtın
Ham HTML nasıl .NET Core'ta PDF'ye dönüştürülür?
HTML dizgisi—veya bir Razor görünümü'nün işlenmiş işaretlemesini—ChromePdfRenderer.RenderHtmlAsPdf'ya geçirerek anında standartlara uygun bir PDF üretin. Yöntem, IronPDF'nin gömülü Chromium motorunu başlatır, böylece harici tarayıcı kurulumu veya WebView bağımlılığı gerektirmez. Aşağıda gösterilen aynı kod, günümüzde .NET 8 LTS üzerinde derlenir ve .NET 9 ve Kasım 2025'te planlanan .NET 10 sürümleriyle ileriye dönük uyumlu kalır.
Örnek — bir HTML parçasından PDF oluşturun
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-5.cs
@model IronPdfMVCHelloWorld.Models.ClientModel
@{
ViewBag.Title = "Book Ticket";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-10 pull-right">
<button type="submit" value="Save" class="btn btn-sm">
<i class="fa fa-plus"></i>
<span>
Save
</span>
</button>
</div>
</div>
</div>
}
model ReadOnly Property () As IronPdfMVCHelloWorld.Models.ClientModel
ViewBag.Title = "Book Ticket"
End Property
'INSTANT VB TODO TASK: The following line could not be converted:
(Of h2) Index</h2> [using](Html.BeginForm())
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
' <div class="form-horizontal"> @Html.ValidationSummary(True, "", New { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Name, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Name, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Phone, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Phone, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Phone, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Email, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Email, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Email, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-10 pull-right"> <button type="submit" value="Save" class="btn btn-sm"> <i class="fa fa-plus"></i> <span> Save </span> </button> </div> </div> </div> }
Kodun gösterdiği şey
- Gömülü Chromium — IronPDF, Chromium motorunu paketler, bu da modern tarayıcılarla HTML5, CSS3 ve JavaScript uyumluluğunu garanti eder.
- Tek bağımlılık — Windows, Linux, Docker ve Azure/AWS için hafif bir NuGet kurulumu ekstra sistem kütüphaneleri olmadan kapsar.
- Görüntüleme seçenekleri —
PaperSize,CssMediaTypeveRenderDelaytarayıcı yazdırma ayarlarını yansıtıyor, böylece PDF'ler ekran görüntüleriyle eşleşiyor. - Geleceğe yönelik hedefleme — API yüzeyi .NET 8, .NET 9 STS ve yaklaşan .NET 10 arasında aynıdır, bu nedenle uzun vadeli bakım minimaldir.
- Son işleme kancaları —
PdfDocumentbirleştirme, parola koruma ve dijital imzalar için yardımcıları ortaya çıkarıyor—her biri bu kılavuzda daha sonra ele alınacaktır.
Daha fazla okuma: adım adım HTML-şirket-dizisine-PDF eğitimi ve tam ChromePdfRenderer API belgesi bakın.
ASP .NET Core MVC görünümü nasıl PDF'ye aktarılır?
IronPDF, tamamen işlenmiş bir Razor görünümünü ( .cshtml ) bir tarayıcı gibi görüntüler ve sonucu bir PdfDocument olarak yayınlar. Aşağıdaki iş akışı, kontrolör mantığını temiz tutar, tarayıcı eklentileri gerektirmez ve .NET 8 LTS, .NET 9 önizlemesi ve Kasım 2025'teki planlanan .NET 10 sürümü üzerinde çalışır.
Baştan sona kontrolör örneği
// TicketsController.cs — .NET 8 LTS / MVC
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models; // TicketViewModel
public class TicketsController : Controller
{
private readonly ChromePdfRenderer _renderer;
public TicketsController()
{
_renderer = new ChromePdfRenderer
{
RenderingOptions =
{
PaperSize = PdfPaperSize.A5, // Compact ticket size
PaperOrientation = PdfPdfOrientation.Portrait,
FitToPaperWidth = true,
CssMediaType = PdfCssMediaType.Print,
Margins = new PdfMargins(5, 10, 5, 10) // mm
}
};
}
// GET /Tickets/Print/42
public async Task<IActionResult> Print(int id)
{
TicketViewModel vm = await _service.GetTicketAsync(id);
// 1. Render the Razor view to an HTML string
string html = await RazorTemplateEngine.RenderViewAsync(
HttpContext, "~/Views/Tickets/Print.cshtml", vm);
// 2. Convert HTML → PDF
using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);
// 3. Stream back as a file
return File(pdf.BinaryData, "application/pdf",
$"ticket-{id}.pdf");
}
}
// TicketsController.cs — .NET 8 LTS / MVC
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models; // TicketViewModel
public class TicketsController : Controller
{
private readonly ChromePdfRenderer _renderer;
public TicketsController()
{
_renderer = new ChromePdfRenderer
{
RenderingOptions =
{
PaperSize = PdfPaperSize.A5, // Compact ticket size
PaperOrientation = PdfPdfOrientation.Portrait,
FitToPaperWidth = true,
CssMediaType = PdfCssMediaType.Print,
Margins = new PdfMargins(5, 10, 5, 10) // mm
}
};
}
// GET /Tickets/Print/42
public async Task<IActionResult> Print(int id)
{
TicketViewModel vm = await _service.GetTicketAsync(id);
// 1. Render the Razor view to an HTML string
string html = await RazorTemplateEngine.RenderViewAsync(
HttpContext, "~/Views/Tickets/Print.cshtml", vm);
// 2. Convert HTML → PDF
using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);
// 3. Stream back as a file
return File(pdf.BinaryData, "application/pdf",
$"ticket-{id}.pdf");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports YourApp.Models ' TicketViewModel
Public Class TicketsController
Inherits Controller
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New()
_renderer = New ChromePdfRenderer With {
.RenderingOptions = New PdfRenderingOptions With {
.PaperSize = PdfPaperSize.A5, ' Compact ticket size
.PaperOrientation = PdfPdfOrientation.Portrait,
.FitToPaperWidth = True,
.CssMediaType = PdfCssMediaType.Print,
.Margins = New PdfMargins(5, 10, 5, 10) ' mm
}
}
End Sub
' GET /Tickets/Print/42
Public Async Function Print(id As Integer) As Task(Of IActionResult)
Dim vm As TicketViewModel = Await _service.GetTicketAsync(id)
' 1. Render the Razor view to an HTML string
Dim html As String = Await RazorTemplateEngine.RenderViewAsync(
HttpContext, "~/Views/Tickets/Print.cshtml", vm)
' 2. Convert HTML → PDF
Using pdf As PdfDocument = _renderer.RenderHtmlAsPdf(html)
' 3. Stream back as a file
Return File(pdf.BinaryData, "application/pdf", $"ticket-{id}.pdf")
End Using
End Function
End Class
Bu kodun gösterdikleri
- Geçici dosya yok — Razor görünümü bellekte işlenir, ardından doğrudan
RenderHtmlAsPdfiletilir, disk G/Ç'si ve geçici klasör yarış koşulları önlenir. - Bilet boyutunda çıktı —
PaperSize = A5ve dar kenar boşlukları, evde yazdırılan biletleri kompakt tutar. - Tutarlı yazdırma stilleri —
CssMediaType = Printtarayıcıların kullandığı aynı@media printCSS kurallarını uygular. - İkili akış —
pdf.BinaryDatabelgenin dosya sistemine dokunmadan akışını sağlar; API uç noktaları ve Lambda fonksiyonları için idealdir. - Yeniden kullanılabilir görüntüleyici —
ChromePdfRendererher kontrolör başına bir kez oluşturulur ve sonra yeniden kullanılır, böylece işlem başlatma yükünü en aza indirir.
PaperSize, PaperOrientation, FitToPaperMode
Margins, Header, Footer, Watermark
Sonraki adım: şifreleme, dijital imzalar ekleyin veya birden fazla bileti tek bir dosyada birleştirin. Birleştirme örneğine ve dijital imza nasıl yapılır rehberine bakın.
IronSuite, operasyonlarımızda kritik bir rol oynar. Bunlar, iş süreçlerinde verimliliği artıran, kat planları oluşturmak ve envanter yönetimini geliştirmek gibi araçlardır.
Kağıt boyutu, kenar boşlukları, başlıklar, filigranlar ve güvenliği işleme öncesi nasıl ince ayar yapabilirim?
IronPDF, çıktıdaki her yönü kontrol eden tek bir ChromePdfRenderOptions nesnesini ortaya çıkarır—kağıt boyutları, yönlendirme, üstbilgi & altbilgi, JavaScript zamanlaması, filigranlar, şifreleme ve dijital imzalar—ekstra tarayıcı eklentileri olmadan.
Kod örneği - birden fazla seçeneği aynı anda uygulayın
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-7.cs
[HttpPost]
public ActionResult Index(ClientModel model)
{
if (ModelState.IsValid)
{
ClientServices.AddClient(model);
return RedirectToAction("TicketView");
}
return View(model);
}
<HttpPost>
Public Function Index(ByVal model As ClientModel) As ActionResult
If ModelState.IsValid Then
ClientServices.AddClient(model)
Return RedirectToAction("TicketView")
End If
Return View(model)
End Function
Bu seçeneklerin önemi nedir?
PaperSize,MarginsveCssMediaTypebir tarayıcının yazdırma diyalogunu yansıtır; böylelikle ekran düzenleri ve PDF, Windows, Linux ve Docker'da aynı kalır.- HTML başlıkları ve alt bilgileri Razor tokenleri, CSS ve JavaScript'i destekler—dinamik sayfa numaraları veya markalama için kullanışlıdır.
HtmlStamptam HTML + CSS kontrolü ile markalı filigranları tek bir satırda oluşturmanıza olanak tanır.- Güvenlik seçenekleri, 128-bit şifreleme, sahip / kullanıcı parolaları ve üçüncü parti araçlar olmadan ayrıntılı izinler sağlar.
- Dijital imzalar, kod içinde doğrudan kriptografik bir mühür ekleyerek yasal özgünlük sağlar ve manipülasyon kanıtı yaratır.
ExtractAllTextveExtractAllImagesgibi çıkarım yardımcıları, analiz gerektiğinde süreci tersine çevirir.
Hızlı referans — Popüler ayarlar
PaperSize, PaperOrientation, Margins, CssMediaType, RenderDelay
`HtmlHeader`, `HtmlFooter`, dinamik Razor yer tutucular, sayfa numarası jetonları
`Filigran`, `HtmlDamga`, opaklık, hizalama
`SecurityOptions`, `SignAndStamp`, sahip / kullanıcı parolaları, sertifika mühürleme
Sonraki görevler: birden fazla PDF'yi birleştirin, metin & resimleri çıkarın ve Docker'a veya sunucusuz bir platforma dağıtın. Çapraz platform uyumluluğunu sağlamak için dağıtım bölümüne devam edin.
PDF üretim kodunu Linux ve Windows üzerinde Docker'a nasıl dağıtabilirim?
IronPdf tek bir kendi kendine yeten NuGet paketi olarak gönderilir, bu nedenle bir ASP.NET Core (veya konsol) uygulamasını kapsamak, hem Windows hem de Linux üzerinde kolaydır. Anahtar, yayımlanan ikilileri zayıf bir çalışma zamanı imajına kopyalamak ve Linux üzerinde IronPDF ihtiyaç duyulan iki yerel kütüphaneyi eklemektir (libnss3 ve libatk1.0-0).
Çok aşamalı Dockerfile (Ubuntu 22.04)
####### ---------- stage 1 ----------
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyPdfApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish
####### ---------- stage 2 ----------
FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy
######## Install two native libs required by Chromium
RUN apt-get update && \
apt-get install -y --no-install-recommends libnss3 libatk1.0-0 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyPdfApp.dll"]
mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 ile değiştirin—Ek paketler gerekmez çünkü Chromium DLL'leri paketlenmiştir.Baştan sona doğrulama betiği
docker build -t pdf-demo .
docker run --rm -p 8080:80 pdf-demo
######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com
docker build -t pdf-demo .
docker run --rm -p 8080:80 pdf-demo
######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com
- API eylemi, tıpkı Bölüm2'de olduğu gibi içsel olarak
ChromePdfRenderer.RenderUrlAsPdfçağrısı yapar. - IronPDF, konteyner içinde kendi sanal Chromium sürecini başlatır—çünkü başsız çalıştığı için X sunucusu gerekmez.
- Büyük işlemler sırasında bile bellek kullanımı 200 MB'nin altında kalır.
libnss3 hem de libatk1.0-0 mevcut olduğundan emin olun. Alp görüntüleri desteklenmez çünkü musl C kitaplığı gereken sembolleri içermez.Dahili kaynaklar
- Eğitim – IronPDF'i Docker konteynerlerine dağıtın
- Nasıl Yapılır – IronPDF'i Azure App Service Linux'ta Çalıştırma
- API referansı –
ChromePdfRendererclass
Mevcut PDF'lerden içerik nasıl açılır, birleştirilir, filigran eklenir ve çıkarılır .NET Core'ta?
IronPDF, her PDF'i—istem IronPDF-i, Adobe® Acrobat veya üçüncü taraf araçlar tarafından oluşturulan—ilk sınıf PdfDocument nesnesi olarak işler, böylece açılabilir, düzenlenebilir, güvence altına alınabilir ve kalite kaybı olmadan tekrar kaydedilebilir. Aynı API yüzeyi bugün .NET 8 LTS üzerinde çalışır ve .NET 9 önizlemesi ve yaklaşan .NET 10 sürümünde de değişmeden derlenir.
Birlikte örnek — açık → birleştir → filigran → çıkar
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-10.cs
[HttpPost]
public ActionResult TicketView(TicketModel model)
{
IronPdf.Installation.TempFolderPath = $@"{Directory.GetParent}/irontemp/";
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var html = this.RenderViewAsync("_TicketPdf", model);
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html.Result, @"wwwroot/css");
return File(pdf.Stream.ToArray(), "application/pdf");
}
<HttpPost>
Public Function TicketView(ByVal model As TicketModel) As ActionResult
IronPdf.Installation.TempFolderPath = $"{AddressOf Directory.GetParent}/irontemp/"
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
Dim html = Me.RenderViewAsync("_TicketPdf", model)
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html.Result, "wwwroot/css")
Return File(pdf.Stream.ToArray(), "application/pdf")
End Function
Neden önemlidir
- Açık & birleştir –
PdfDocument.FromFileher türlü standart uyumlu PDF'i, şifrelenmiş dosyalar dahil yüklerken,PdfDocument.Mergetek bir çağrıda keyfi sayıda belge birleştirir. - Filigran –
ApplyStamp(aliasHtmlStamp) tam stilize edilmiş HTML/CSS kaplamaları—logo, QR kodu veya çapraz metin—seçilen sayfalar üzerine yerleştirir, rasterleştirme olmadan. - İçerik çıkarımı –
ExtractAllTextveExtractAllImagessonradan arşivleme veya AI boru hatları için ham UTF-8 metnini veya ikili resim akışlarını çeker. - Dijital imzalar hazır – aynı
PdfDocumentörneği,SignAndStampile mühürlenebilir, RFC 3161 uyumlu karmalar üreterek ISO 32000-2 dijital-imza gereksinimleriyle uyumlu hale gelir. - Açık standart uyumluluğu – IronPDF, orijinal PDF yapısını (yazı tipleri, katmanlar, XMP meta verileri) korur, böylece çıktı Adobe® Reader ve diğer ISO 32000-1 görüntüleyicileriyle uyumlu kalır.
- Geleceğe yönelik – API, interop montajlarını ve Win32 GDI çağrılarını kullanmaktan kaçınır, bu yüzden kod Windows, Linux, Docker ve yaklaşan .NET 10 sunucusuz SKU'lar üzerinde değişmeden çalışır.
Sayfaları ayırma, döndürme veya silme mi gerekiyor? Granül işlemler için sayfa düzeyinde düzenleme eğitimine bakın.
PDF'ler .NET Core'ta nasıl şifrelenir ve dijital olarak imzalanır?
IronPDF, belgeyi iki adımda güvenceye alır: AES tabanlı şifreleme (kullanıcı/sahibi parolaları + ayrıntılı izinler) ve dosyayı kriptografik bir hash ile mühürleyen X.509 dijital imzaları. Her iki API de aynı PdfDocument nesnesinde yaşar, bu nedenle iş akışı bugün .NET 8 LTS üzerinde aynıdır ve .NET 9 önizlemesinde ve yaklaşan .NET 10 sürümünde değişmeden derlenir.
Örnek — 256-bit AES uygulayın, yazdırma haklarını kilitleyin ve görünür bir imza ekleyin
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-11.cs
using System.IO;
using System.Threading.Tasks;
public static class ControllerExtensions
{
public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = controller.ControllerContext.ActionDescriptor.ActionName;
}
controller.ViewData.Model = model;
using (var writer = new StringWriter())
{
IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
if (viewResult.Success == false)
{
return $"A view with the name {viewName} could not be found";
}
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions());
await viewResult.View.RenderAsync(viewContext);
return writer.GetStringBuilder().ToString();
}
}
}
Imports System.IO
Imports System.Threading.Tasks
Public Module ControllerExtensions
<System.Runtime.CompilerServices.Extension> _
Public Async Function RenderViewAsync(Of TModel)(ByVal controller As Controller, ByVal viewName As String, ByVal model As TModel, Optional ByVal As Boolean = False) As Task(Of String)
If String.IsNullOrEmpty(viewName) Then
viewName = controller.ControllerContext.ActionDescriptor.ActionName
End If
controller.ViewData.Model = model
Using writer = New StringWriter()
Dim viewEngine As IViewEngine = TryCast(controller.HttpContext.RequestServices.GetService(GetType(ICompositeViewEngine)), ICompositeViewEngine)
Dim viewResult As ViewEngineResult = viewEngine.FindView(controller.ControllerContext, viewName, Not partial)
If viewResult.Success = False Then
Return $"A view with the name {viewName} could not be found"
End If
Dim viewContext As New ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, New HtmlHelperOptions())
Await viewResult.View.RenderAsync(viewContext)
Return writer.GetStringBuilder().ToString()
End Using
End Function
End Module
Kulisin arkasında
- AES-256 şifreleme — IronPDF, yükü NIST onaylı AES anahtarları ile sararak yetkisiz açma, yazdırma veya kopyalama-yapıştırmayı engeller.
- Yetkiler ayrıntısı —
AllowUserPrintingveAllowUserFormDatagibi özellikler eylem başına hakları değiştirir; herhangi bir kısıtlamanın etkili olması için sahibi parolası gereklidir. - Dijital imzalar —
SignAndStamp, bir RFC 3161 zaman damgası ve sertifika zinciri yerleştirir, böylece oynama belirtileri eğitim sertifikalı karmalar üretir ve Adobe® Acrobat ve diğer ISO 32000-2 görüntüleyiciler tarafından tanınır. - Tek noktadan API — hem şifreleme hem de imzalama aynı
PdfDocumentörneğini değiştirerek birden fazla dosya geçişini önleyin ve dahili yazı tipleri, katmanları ve meta verileri koruyun.
location dizelerinin ASCII-temiz olduğundan emin olun.Çekirdek güvenlik ayarları
`PdfSecuritySettings` → `OwnerPassword`, `UserPassword`, `ŞifrelemeAlgoritması`, `AllowUserPrinting`
`PdfDocument.SignAndStamp` — PFX yolu, otorite, konum, neden, zaman damgası
Daha derine dalmak için iç kaynaklar
- Öğretici – PDF'yi Şifreyle Korumak
- Örnek – Bir PDF'yi dijital olarak imzala
- API reference –
PdfSecuritySettings
HTML'den PDF'ye performansın optimize edilmesi ve .NET Core'ta ölçeklenmesi nasıl yapılır?
IronPDF'in Chromium motoru zaten modern donanımda < 1 s içinde çoğu sayfayı işler, ancak verimlilik parti halinde işleme, çoklu iş parçacığı desteğini etkinleştirme ve Headless Chrome yükünü azaltma ile artırılabilir. Aşağıdaki ipuçları, tüm .NET sürümleri için eşit olarak geçerlidir.
1. Arka plan iş parçacığı havuzunda toplu işlemleri uygulayın
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
Imports IronPdf
License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()
' Set rendering options
renderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portrait
renderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
ChromePdfRendereris thread-safe; tek bir örnek, kilitlenme olmadan onlarca aynı anda yapılan göreve hizmet edebilir.Parallel.ForEachher CPU çekirdeğini doldurur; tipik sunucular, tek iş parçacıklı bir döngüye kıyasla 4–6× veri aktarım hızı artışı görür.- Eğer ASP.NET istekleri kuyruğa girerse, ağır işlemleri host edilmiş bir arka plan servisine veya mesaj kuyruğuna taşıyın yanıt sürelerini düşük tutmak için.
2. Headless Chrome başlangıç maliyetini azaltın
IronPDF, kendi Chromium yapısıyla birlikte gelir, ancak her işleme küçük bir başlangıç ücreti eklenir. Havuzlanma yardımcı olur ve Linux konteynerleri iki yerel kütüphane içermelidir:
RUN apt-get update && \
apt-get install -y --no-install-recommends libnss3 libatk1.0-0
Herhangi bir kitaplığın eksik olması, Docker günlüklerinde bir libnss3.so not found hatası olarak ortaya çıkar.
Önerilen Chrome bayrakları (IronPDF tarafından otomatik olarak uygulanır), kapsayıcılarda bellek ve kök kullanıcı sorunlarını azaltmak için --disable-gpu ve --no-sandbox içerir.
3. Geç JavaScript'i RenderDelay veya WaitFor ile beklet
DOMContentLoaded ardından sayaçları hareketlendiren veya veri getiren sayfalar kısa bir gecikmeye ihtiyaç duyabilir:
renderer.RenderingOptions.RenderDelay = 200; // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
renderer.RenderingOptions.RenderDelay = 200; // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
renderer.RenderingOptions.RenderDelay = 200 ' ms
' OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
Özel sözler ve DOM anketleme için özel WaitFor eğitimi'ne bakın.
4. Tek bir istek için hata ayıklama kaydını etkinleştirin
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.AppendPdf(pdf2);
pdf.SaveAs("appendedFile.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("2.pdf")
pdf.AppendPdf(pdf2)
pdf.SaveAs("appendedFile.pdf")
Canlı DevTools izlemeleri, eksik yazı tiplerini, 404 resimlerini ve zamanlama olaylarını kodu yeniden derlemeden ortaya koyar.
5. Yeniden işlemek yerine şablon PDF'leri tekrar kullanın
Fatura işlemleri için, [[name]] gibi yer tutucularla bir şablon PDF oluşturun ve karmaşık HTML oluşturmak yerine bir metin değiştirme gerçekleştirin. 10 kat daha hızlı ve hafızayı daha az tüketir.
Hızlı Ayarlama Kontrol Listesi
`Paralel.ForEach`, `async/await`, tek bir `ChromePdfRenderer` kullanma
`aspnet:8.0-jammy` kullanın; `libnss3` + `libatk1.0-0` kurun; bayraklar `--no-sandbox`, `--disable-gpu`
`RenderDelay`, `WaitFor()`, yavaş SPA dolumları için DevTools zaman çizelgesi kaydı
Daha Fazla Okuma
- Nasıl Yapılır – Async / çoklu iş parçacığı ile PDF'ler oluşturma
- Sorun Giderme – Performans Yardım Merkezi
- Örnek – Thread'li render örneği
Ücretsiz deneme sürümünü nereden indirebilir, lisans seçebilir ve uzman desteği bulabilirim? {#anchor-10-resources}
30 günlük deneme anahtarı, Ücretsiz Denemeye Başla formundan anında verilir ve her özelliğin kilidini açar— HTML'den PDF'ye, dijital imzalar ve şifrelemeler dahil — filigran olmadan.
Kütüphaneyi değerlendirdikten sonra, süreli geliştirici, dağıtım veya kurumsal bir lisans seçin; her plan, ücretsiz küçük güncellemeler, geliştirici/deneme/üretim kullanım hakları ve 30 günlük para iade garantisi içerir. Anahtarı uygulamak, kodun tek bir satırıdır (IronPdf.License.LicenseKey = "YOUR-KEY";) ve CI/CD boru hatlarında otomatikleştirilebilir.
Kapsamlı dökümantasyon—hızlı başlangıç kılavuzları, API referansı ve eğitim videoları—dökümantasyon portalında bulunur ve her .NET sürümü için güncellenir.
Mühendislik soruları, Chicago merkezli destek ekibi tarafından canlı sohbet, e-posta veya telefonla bir iş günü içinde yanıt alır.
Performans iyileştirme ve dağıtım SSS'leri, Performans Kontrol Merkezinde toplanmıştır.
Hızlı bağlantılar
| Kaynak | URL | Neden önemlidir |
|---|---|---|
| 30 günlük deneme anahtarı alın | https://ironpdf.com/demos/ |
Her özelliğin kilidini filigran olmadan açar |
| Lisanslama & fiyatlandırma | https://ironpdf.com/licensing/ |
Süreli veya abonelik planları; Iron Suite, 10 kütüphaneyi paketler |
| API referansı | https://ironpdf.com/object-reference/api/ |
Tam sınıf belgeleri, örn. ChromePdfRenderer |
| Döküman portalı | https://ironpdf.com/docs/ |
Kılavuzlar, eğitimler, örnek projeler |
| Performans yardım | https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/ |
Optimizasyon ve ölçeklendirme ipuçları |
| Destekle iletişim | https://ironsoftware.com/contact-us/ |
Canlı sohbet, e-posta, telefon desteği |
Sonraki adımlar
- Örnek depoyu klonla - MVC görünüm işleme'den AES-256 şifrelemeye kadar her ana özelliği demonstre eder.
- Deneme anahtarını yerleştirin mevcut bir çözüme ve platformlar arası uyumluluğu doğrulamak için birim testlerini çalıştırın.
- Proje özel öneriler için mühendislik ekibiyle canlı demo ayırtın.
Bu kaynaklarla, herhangi bir .NET ekibi tek bir sprint içinde üretime piksel mükemmel PDF'ler gönderebilir - yerinde, Docker'da veya sunucusuz.
Sıkça Sorulan Sorular
.NET Core'ta HTML'yi PDF'ye nasıl dönüştürebilirim?
.NET Core'da HTML'yi PDF'ye dönüştürmek için IronPDF kütüphanesini kullanabilirsiniz. İlk olarak, IronPDF NuGet paketini kurun, ardından bir ChromePdfRenderer örneği oluşturun. HTML dizelerini PDF'lere dönüştürmek için RenderHtmlAsPdf yöntemini kullanın.
Bir web sitesi URL'sini PDF belgesine nasıl dönüştürürüm?
Bir web sitesi URL'sini PDF belgesine dönüştürmek için, IronPDF NuGet paketini kurun, bir ChromePdfRenderer örneği oluşturun ve URL'yi PDF olarak işlemek için RenderUrlAsPdf yöntemini kullanın. Sonuç, SaveAs yöntemi kullanılarak kaydedilebilir.
Razor görünümlerini PDF'lere dönüştürmenin en iyi yolu nedir?
Razor görünümlerini PDF'lere dönüştürmenin en iyi yolu IronPDF kullanmaktır. İlk olarak, Razor görünümünü bir HTML dizesine dönüştürün, ardından bu dizeyi bir PDF belgesi oluşturmak için RenderHtmlAsPdf yöntemine iletin.
PDF belgelerimin güvenliğini nasıl artırabilirim?
PDF güvenliğini artırmak için IronPDF kullanarak AES-256 şifreleme uygulayın, şifreler belirleyin ve kullanıcı izinlerini kontrol edin. Yazdırma ve düzenleme gibi eylemleri kısıtlamak için bu ayarları SecuritySettings özelliği aracılığıyla yapılandırın.
PDF render'ı özelleştirmek için hangi seçenekler mevcut?
IronPDF, ChromePdfRenderOptions sınıfı aracılığıyla kağıt boyutu, yönlendirme, kenar boşlukları ayarlama ve CSS medya türlerini uygulama dahil çeşitli render seçenekleri sunar. Ayrıca, özelleştirilmiş belge çıktısı için başlık, altbilgi ve filigran ekleyebilirsiniz.
Bir PDF oluşturma uygulamasını Docker konteynerine nasıl dağıtabilirim?
Bir PDF oluşturma uygulamasını Docker konteynerinde dağıtmak için, Dockerfile'daki Linux bağımlılıklarını yapılandırın ve kullanıcı izinlerini ayarlayın. Otomatik bağımlılık yönetimi için IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig kullanın.
C# kullanarak bir PDF'e filigran nasıl ekleyebilirim?
PDF'lere filigran eklemek için IronPDF kullanarak, HtmlStamp nesneleri ile Watermark özelliğini kullanabilirsiniz. İleri düzey seçenekler için, HtmlStamper sınıfı özelleştirilmiş konumlandırma ve saydamlık efektleri sağlar.
PDF belgelerine dijital imzalar ekleyebilir miyim?
Evet, IronPDF ile PdfSignature sınıfını kullanarak PDF'lere dijital imzalar ekleyebilirsiniz. Bir PdfDocument üzerinde Sign metodunu kullanarak ve belge bütünlüğü ile doğruluğunu sağlamak için bir sertifika dosyası sağlayarak bunu yapabilirsiniz.
.NET Core'da PDF oluşturma performansını nasıl optimize edebilirim?
PDF oluşturma performansını iyileştirmek için ChromePdfRenderer örneğini tekrar kullanarak, çoklu iş parçacığını etkinleştirerek ve gereksiz başsız-Chrome başlatma bayraklarını daraltarak optimize edin. Bu uygulamalar, uygulamanızın verimliliğini artırmaya yardımcı olur.
Bu öğreticideki .NET Core HTML'den-PDF'e örnek .NET 10 ile de çalışıyor mu?
Evet. IronPDF, .NET 10 ile tamamen uyumludur, bu yüzden bu eğitimdeki ChromePdfRenderer HTML-to-PDF örneğini .NET 10 projelerinde çekirdek kodu değiştirmeden kullanabilirsiniz. Ana fark, projeyi oluştururken .NET 10'u hedeflemeniz ve ardından HTML, Razor görünümleri veya URL'lerden piksel mükemmeliyetinde PDF'ler oluşturmak için NuGet'ten en son IronPdf paketini yüklemenizdir.

