.NET Core'da PDF Dosyaları Nasıl Oluşturulur

IronPDF ile C# kullanarak .NET Core'da HTML'yi PDF'ye dönüştürün

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

İpuçlarıDüzen sorunları için, IronPDF PDF oluşturulmadan önce CSS, JavaScript ve medya sorgusu tuhaflıklarını teşhis etmeye yardımcı olan bir Headless Chrome hata ayıklayıcısı sunar. Derinlemesine teknikler için özel piksel-mükemmel HTML'den PDF'e kılavuzunu inceleyin.

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.

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    var pdf = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello World</h1>");
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer

Hızlı Başlangıç Kontrol Listesi

  1. KurulumInstall-Package IronPdf
  2. Bir URL'i GörüntüleChromePdfRenderer.RenderUrlAsPdf()
  3. Ham HTML GörüntülemeChromePdfRenderer.RenderHtmlAsPdf()
  4. Bir Razor görünümünü dışa aktarChromePdfRenderer.RenderHtmlAsPdfAsync()
  5. Çıktıyı ince ayar yapChromePdfRenderer.RenderingOptions kullan

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
SHELL

Lütfen dikkate alınCLI'ye mi ihtiyacınız var? Aynı komut proje klasörünüzün içinde 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
$vbLabelText   $csharpLabel

Nasıl çalışıyor

  • ChromePdfRenderer arka 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
$vbLabelText   $csharpLabel

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.

İpuçlarıPiksel mükemmel hata ayıklama: 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


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> }
$vbLabelText   $csharpLabel

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çenekleriPaperSize, CssMediaType ve RenderDelay tarayı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ıPdfDocument birleş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
$vbLabelText   $csharpLabel

Bu kodun gösterdikleri

  • Geçici dosya yok — Razor görünümü bellekte işlenir, ardından doğrudan RenderHtmlAsPdf iletilir, disk G/Ç'si ve geçici klasör yarış koşulları önlenir.
  • Bilet boyutunda çıktıPaperSize = A5 ve dar kenar boşlukları, evde yazdırılan biletleri kompakt tutar.
  • Tutarlı yazdırma stilleriCssMediaType = Print tarayıcıların kullandığı aynı @media print CSS kurallarını uygular.
  • İkili akışpdf.BinaryData belgenin dosya sistemine dokunmadan akışını sağlar; API uç noktaları ve Lambda fonksiyonları için idealdir.
  • Yeniden kullanılabilir görüntüleyiciChromePdfRenderer her 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.


Icon Quote related to Bu kodun gösterdikleri

Bu türden favori kütüphanem IronPDF'dir. PDF dosyalarının hızlı ve verimli bir şekilde işlenmesine olanak tanır. Ayrıca, PDF/A formatına dışa aktarma ve dijital imzalama gibi birçok değerli özelliğe sahiptir.

Milan Jovanovic related to Bu kodun gösterdikleri

Milan Jovanovic

Microsoft MVP

Vaka çalışmasını görüntüle
Icon Quote related to Bu kodun gösterdikleri

IronOCR, manuel işleme maliyetinden yıllık 40.000 USD tasarruf etmemizi sağlıyor, üretkenliği artırıyor ve yüksek etkili görevler için kaynakları serbest bırakıyor. Kesinlikle tavsiye ederim.

Brent Matzelle related to Bu kodun gösterdikleri

Brent Matzelle

Teknoloji Müdürü, OPYN

Vaka çalışmasını görüntüle
Icon Quote related to Bu kodun gösterdikleri

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.

David Jones related to Bu kodun gösterdikleri

David Jones

Baş Yazılım Mühendisi, Agorus Build

Vaka çalışmasını görüntüle

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
$vbLabelText   $csharpLabel

Bu seçeneklerin önemi nedir?

  • PaperSize, Margins ve CssMediaType bir 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.
  • HtmlStamp tam 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.
  • ExtractAllText ve ExtractAllImages gibi çı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)

Lütfen dikkate alınNeden çok aşamalı? SDK görüntüsü (aşama 1) projeyi derler; son çalışma zamanı görüntüsü (aşama 2) ince kalır—< 120 MB—çünkü derleme araçları atılmıştır.

####### ---------- 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"]

Lütfen dikkate alınWindows kapları? İkinci aşamayı 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
SHELL
  • 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.

İpuçlarıSorun giderme ipucu: Kapsayıcı günlükleri "libnss3.so bulunamadı" hatası gösteriyorsa, hem 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


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
$vbLabelText   $csharpLabel

Neden önemlidir

  • Açık & birleştirPdfDocument.FromFile her türlü standart uyumlu PDF'i, şifrelenmiş dosyalar dahil yüklerken, PdfDocument.Merge tek bir çağrıda keyfi sayıda belge birleştirir.
  • FiligranApplyStamp (alias HtmlStamp) tam stilize edilmiş HTML/CSS kaplamaları—logo, QR kodu veya çapraz metin—seçilen sayfalar üzerine yerleştirir, rasterleştirme olmadan.
  • İçerik çıkarımıExtractAllText ve ExtractAllImages sonradan 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, SignAndStamp ile 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
$vbLabelText   $csharpLabel

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ıAllowUserPrinting ve AllowUserFormData gibi özellikler eylem başına hakları değiştirir; herhangi bir kısıtlamanın etkili olması için sahibi parolası gereklidir.
  • Dijital imzalarSignAndStamp, 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.

İpuçlarıSorun giderme ipucu: Adobe Reader "geçersiz imza" bildiriyorsa, PFX'in güvenilir bir kök sertifika içerdiğinden ve 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


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")
$vbLabelText   $csharpLabel

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')";
$vbLabelText   $csharpLabel

Ö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")
$vbLabelText   $csharpLabel

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


Ü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

  1. Örnek depoyu klonla - MVC görünüm işleme'den AES-256 şifrelemeye kadar her ana özelliği demonstre eder.
  2. Deneme anahtarını yerleştirin mevcut bir çözüme ve platformlar arası uyumluluğu doğrulamak için birim testlerini çalıştırın.
  3. 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.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku
Gözden Geçiren
Jeff Fritz
Jeffrey T. Fritz
Baş Program Yöneticisi - .NET Topluluğu Ekibi
Jeff, .NET ve Visual Studio ekipleri için bir Baş Program Yöneticisidir. .NET Conf sanal konferans serisinin baş yapımcısıdır ve haftada iki kez canlı yayınlanan 'Fritz and Friends' adlı bir akış programı sunar; burada izleyicilerle birlikte teknoloji konuşur ve kod yazar. Jeff, en büyük Microsoft geliştirici etkinlikleri için atölyeler, sunumlar ve içerik planları yazar, Microsoft Build, Microsoft Ignite, .NET Conf ve Microsoft MVP Summit gibi etkinliklerde yer alır.
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,936,792 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.