.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

HTML'den doğrudan yüksek kaliteli PDF'ler oluşturmak, modern .NET uygulamalarında rutin bir gerekliliktir; raporlar, faturalar ve biletlerin tümü, web kullanıcı arayüzüyle eşleşen piksel mükemmelliğinde çıktılara ihtiyaç duyar. IronPDF, HTML, Razor görünümleri ve web sitelerinin tamamını standartlara uygun PDF belgelerine dönüştürmek için tek bir C# API sunarak bu iş akışını kolaylaştırır. Bu kılavuzun sonunda, bir geliştirici ASP.NET Core projesindeki URL'leri, ham HTML'yi veya MVC görünümlerini dönüştürebilecek ve aynı kodu Windows, Linux, Docker veya sunucusuz ortamlara dağıtabilecektir.

İ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ı ile birlikte gelir. Derinlemesine teknikler için özel piksel mükemmelliğinde HTML'den PDF/A'ya dönüştürme kılavuzunu inceleyin.

Hızlı Başlangıç: .NET Core'da HTML'den PDF Oluşturma

IronPDF kütüphanesini kullanarak .NET Core'da HTML'yi zahmetsizce PDF'ye dönüştürün. Bu kılavuz, minimum kodla HTML içeriğini yüksek kaliteli bir PDF'ye dönüştürerek hızlı bir başlangıç yapmanızı sağlayacak basit bir örnek sunar. PDF oluşturmayı uygulamalarına kolaylıkla entegre etmek isteyen geliştiriciler için mükemmeldir.

  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. YüklemeInstall-Package IronPdf
  2. Bir URL'yi işleyinChromePdfRenderer.RenderUrlAsPdf()
  3. Ham HTML'yi işleyinChromePdfRenderer.RenderHtmlAsPdf()
  4. Razor görünümünü dışa aktarmaChromePdfRenderer.RenderHtmlAsPdfAsync()
  5. Çıktıyı ince ayarlayınChromePdfRenderer.RenderingOptions'den yararlanın

Bu Eğitimde Ele Alınan Konular

  • URL, HTML dizesi ve Razor görünümü dönüştürme
  • Kağıt, kenar boşluğu ve ortam türü yapılandırması
  • Çapraz platform dağıtımı (Windows, Linux, Docker)
  • Son işlem: PDF'leri birleştirme, filigran ekleme, parola ile koruma ve dijital olarak imzalama
  • Uçtan uca örnek: bilet rezervasyonu MVC uygulaması

PDF kütüphanesini .NET Core'a nasıl yüklerim?

Kütüphanenin kurulumu, herhangi bir .NET 8 projesinde tek satırlık bir işlemdir ve .NET 9 önizlemesi ile yakında çıkacak olan .NET 10 sürümüyle ileriye dönük uyumludur. NuGet'in Paket Yöneticisi Konsolu'nu kullanın; paket yöneticisi, Windows, Linux, Docker ve sunucusuz hedefler için tüm bağımlılıkları otomatik olarak çözecektir.

PM> Install-Package IronPdf             # .NET 8 LTS and higher
PM> Install-Package IronPdf             # .NET 8 LTS and higher
SHELL

Lütfen dikkate alınCLI mi ihtiyacınız var? Aynı komut, proje klasörünüzün içindeki dotnet add package IronPdf ile çalışır.

Yükleme tamamlandıktan sonra, herhangi bir genel URL'yi dönüştürerek her şeyin doğru şekilde bağlandığını doğrulayın:

// Program.cs — .NET 8 LTS
using IronPdf;

var renderer = new ChromePdfRenderer();

// Render a live website to PDF
using PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com");

// Persist to disk
pdf.SaveAs("website-snapshot.pdf");
// Program.cs — .NET 8 LTS
using IronPdf;

var renderer = new ChromePdfRenderer();

// Render a live website to PDF
using PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com");

// Persist to disk
pdf.SaveAs("website-snapshot.pdf");
' Program.cs — .NET 8 LTS
Imports IronPdf

Private renderer = New ChromePdfRenderer()

' Render a live website to PDF
Private PdfDocument As using

' Persist to disk
pdf.SaveAs("website-snapshot.pdf")
$vbLabelText   $csharpLabel

Nasıl çalışır?

  • ChromePdfRenderer arka planda sanal bir Chromium örneği başlatır; ayrı bir Chrome yüklemesi gerekmez.
  • RenderUrlAsPdf, JavaScript ile oluşturulan içerik, CSS medya sorguları ve yazı tipleri dahil olmak üzere, tamamen işlenmiş DOM'u yakalar.
  • Sonuçta ortaya çıkan PdfDocument, çıktıyı birleştirmek, parola ile korumak veya dijital olarak imzalamak için yardımcı yöntemler sunar; bu özellikler bu öğreticinin ilerleyen bölümlerinde ele alınacaktır.

Dağıtımla ilgili ayrıntılar (Azure App Service, AWS Lambda, şirket içi Linux) için özel kurulum kılavuzuna ve gelişmiş NuGet kurulum sayfalarına bakın. Docker ve K8s kümeleri için dahili CI/CD ipuçları, Docker dağıtımına ilişkin en iyi uygulamalar bölümünde ele alınmaktadır.


Bir .NET Core hizmeti, canlı bir web sitesi URL'sini nasıl PDF'ye dönüştürebilir?

RenderUrlAsPdf'ye tek bir çağrı yeterlidir: herkese açık herhangi bir URL'yi iletin ve IronPDF, tamamen işlenmiş, standartlara uygun bir PDF dosyası döndürür. Aşağıdaki kod, .NET 8 LTS'yi hedeflemektedir ve .NET 9 önizlemesinde ve 2025'te çıkacak olan .NET 10 sürümünde de değiştirilmeden derlenebilir.

Adım adım örnek

// Program.cs — .NET 8 LTS-compatible
using IronPdf;

// 1. Activate a license (or trial key)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// 2. Create a reusable renderer instance
var renderer = new ChromePdfRenderer
{
    RenderingOptions =
    {
        // Force A4 portrait output and apply @media print styles
        PaperSize    = PdfPaperSize.A4,
        CssMediaType = PdfCssMediaType.Print
    }
};

// 3. Convert Microsoft Docs home page to PDF
using PdfDocument pdf = renderer.RenderUrlAsPdf("https://learn.microsoft.com/");

// 4. Save the PDF or stream it from a Web API
pdf.SaveAs("docs-offline-copy.pdf");
// Program.cs — .NET 8 LTS-compatible
using IronPdf;

// 1. Activate a license (or trial key)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// 2. Create a reusable renderer instance
var renderer = new ChromePdfRenderer
{
    RenderingOptions =
    {
        // Force A4 portrait output and apply @media print styles
        PaperSize    = PdfPaperSize.A4,
        CssMediaType = PdfCssMediaType.Print
    }
};

// 3. Convert Microsoft Docs home page to PDF
using PdfDocument pdf = renderer.RenderUrlAsPdf("https://learn.microsoft.com/");

// 4. Save the PDF or stream it from a Web API
pdf.SaveAs("docs-offline-copy.pdf");
' Program.cs — .NET 8 LTS-compatible
Imports IronPdf

' 1. Activate a license (or trial key)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

' 2. Create a reusable renderer instance
Dim renderer = New ChromePdfRenderer With {
	.RenderingOptions = {
		PaperSize = PdfPaperSize.A4,
		CssMediaType = PdfCssMediaType.Print
	}
}

' 3. Convert Microsoft Docs home page to PDF
Using pdf As PdfDocument = renderer.RenderUrlAsPdf("https://learn.microsoft.com/")
	
	' 4. Save the PDF or stream it from a Web API
	pdf.SaveAs("docs-offline-copy.pdf")
End Using
$vbLabelText   $csharpLabel

Neden işe yarıyor?

  • ChromePdfRenderer, sanal bir Chromium örneği başlatır; sistem Chrome bağımlılığı yoktur, bu da Docker görüntülerini hafif tutar.
  • RenderUrlAsPdf, tek sayfalık uygulamaların doğru şekilde görüntülenmesi için DOM ve JavaScript'in tamamlanmasını bekler.
  • CssMediaType değerini PRINT olarak ayarlamak, motorun tarayıcının PRINT → Save as PDF çıktısıyla eşleşen, yazdırmaya özgü kuralları kullanmasını sağlar.
  • Ortaya çıkan PdfDocument şifrelenebilir, dijital olarak imzalanabilir, birleştirilebilir veya rasterleştirilebilir; bu özellikler sonraki bölümlerde ele alınacaktır.

İpuçlarıPiksel hassasiyetinde hata ayıklama: renderer.LoggingOptions.DebugMode = true'yi etkinleştirin ve Headless Chrome hata ayıklama kılavuzunu izleyerek, görüntüleme sırasında canlı DevTools'u inceleyin.

İlgili kaynaklar


.NET Core'da ham HTML'yi PDF'ye nasıl dönüştürebilirim?

Bir HTML dizesi veya bir Razor görünümünün işlenmiş işaretlemesini ChromePdfRenderer.RenderHtmlAsPdf'ye aktardığınızda, anında standartlara uygun bir PDF/A oluşturulur. Bu yöntem, IronPDF'nin gömülü Chromium motorunu çalıştırır; bu nedenle harici bir tarayıcı yüklemesi veya WebView bağımlılığı gerekmez. Aşağıda gösterilen aynı kod, bugün .NET 8 LTS üzerinde derlenir ve .NET 9 ile Kasım 2025'te piyasaya sürülmesi planlanan .NET 10 sürümleriyle ileriye dönük uyumludur.

Örnek — bir HTML parçasından PDF oluşturma

// Program.cs — compatible with .NET 8 and newer
using IronPdf;

// Sample HTML fragment (could also be read from a file, Razor view, or CMS)
const string html = """
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Quarterly Report</title>
  <style>
     body { font-family:'Segoe UI', sans-serif; margin:1.2rem; }
     header { margin-bottom:2rem; }
     h1 { color:#3056d3; }
     table { width:100%; border-collapse:collapse; margin-top:1rem; }
     th,td { border:1px solid #ddd; padding:0.5rem; text-align:right; }
     tr:nth-child(even){ background-color:#f8f9fa; }
  </style>
</head>
<body>
  <header><h1>Q2 Revenue Summary</h1></header>
  <table>
    <thead><tr><th>Product</th><th>Revenue ($)</th></tr></thead>
    <tbody>
      <tr><td>IronPDF for .NET</td><td>1,200,000</td></tr>
      <tr><td>IronOCR for .NET</td><td>890,000</td></tr>
      <tr><td>IronXL for .NET</td><td>610,000</td></tr>
    </tbody>
  </table>
</body>
</html>
""";

// 1. Create a renderer once and reuse it across conversions
var renderer = new ChromePdfRenderer
{
    RenderingOptions =
    {
        PaperSize    = PdfPaperSize.A4,                  // ISO-standard paper size
        PaperOrientation = PdfPaperOrientation.Portrait,
        CssMediaType = PdfCssMediaType.Screen,           // Respect on-screen CSS
        RenderDelay  = 100,                              // Wait 100 ms for JS/animations
        FallbackEncoding = "utf-8"                       // Handle non-ASCII correctly
    }
};

// 2. Render the HTML fragment
using PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

// 3. Persist to disk or return via ASP.NET Core FileStreamResult
pdf.SaveAs("q2-report.pdf");
// Program.cs — compatible with .NET 8 and newer
using IronPdf;

// Sample HTML fragment (could also be read from a file, Razor view, or CMS)
const string html = """
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Quarterly Report</title>
  <style>
     body { font-family:'Segoe UI', sans-serif; margin:1.2rem; }
     header { margin-bottom:2rem; }
     h1 { color:#3056d3; }
     table { width:100%; border-collapse:collapse; margin-top:1rem; }
     th,td { border:1px solid #ddd; padding:0.5rem; text-align:right; }
     tr:nth-child(even){ background-color:#f8f9fa; }
  </style>
</head>
<body>
  <header><h1>Q2 Revenue Summary</h1></header>
  <table>
    <thead><tr><th>Product</th><th>Revenue ($)</th></tr></thead>
    <tbody>
      <tr><td>IronPDF for .NET</td><td>1,200,000</td></tr>
      <tr><td>IronOCR for .NET</td><td>890,000</td></tr>
      <tr><td>IronXL for .NET</td><td>610,000</td></tr>
    </tbody>
  </table>
</body>
</html>
""";

// 1. Create a renderer once and reuse it across conversions
var renderer = new ChromePdfRenderer
{
    RenderingOptions =
    {
        PaperSize    = PdfPaperSize.A4,                  // ISO-standard paper size
        PaperOrientation = PdfPaperOrientation.Portrait,
        CssMediaType = PdfCssMediaType.Screen,           // Respect on-screen CSS
        RenderDelay  = 100,                              // Wait 100 ms for JS/animations
        FallbackEncoding = "utf-8"                       // Handle non-ASCII correctly
    }
};

// 2. Render the HTML fragment
using PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

// 3. Persist to disk or return via ASP.NET Core FileStreamResult
pdf.SaveAs("q2-report.pdf");
' Program.cs — compatible with .NET 8 and newer
Imports IronPdf

' Sample HTML fragment (could also be read from a file, Razor view, or CMS)
Private Const html As String = "<!DOCTYPE html>
<html lang=""en"">
<head>
  <meta charset=""utf-8"">
  <title>Quarterly Report</title>
  <style>
     body { font-family:'Segoe UI', sans-serif; margin:1.2rem; }
     header { margin-bottom:2rem; }
     h1 { color:#3056d3; }
     table { width:100%; border-collapse:collapse; margin-top:1rem; }
     th,td { border:1px solid #ddd; padding:0.5rem; text-align:right; }
     tr:nth-child(even){ background-color:#f8f9fa; }
  </style>
</head>
<body>
  <header><h1>Q2 Revenue Summary</h1></header>
  <table>
    <thead><tr><th>Product</th><th>Revenue ($)</th></tr></thead>
    <tbody>
      <tr><td>IronPDF for .NET</td><td>1,200,000</td></tr>
      <tr><td>IronOCR for .NET</td><td>890,000</td></tr>
      <tr><td>IronXL for .NET</td><td>610,000</td></tr>
    </tbody>
  </table>
</body>
</html>"

' 1. Create a renderer once and reuse it across conversions
Private renderer = New ChromePdfRenderer With {
	.RenderingOptions = {
		PaperSize = PdfPaperSize.A4,
		PaperOrientation = PdfPaperOrientation.Portrait,
		CssMediaType = PdfCssMediaType.Screen,
		RenderDelay = 100,
		FallbackEncoding = "utf-8"
	}
}

' 2. Render the HTML fragment
Private PdfDocument As using

' 3. Persist to disk or return via ASP.NET Core FileStreamResult
pdf.SaveAs("q2-report.pdf")
$vbLabelText   $csharpLabel

Kodun gösterdiği şey

  • Gömülü Chromium — IronPDF, Chromium motorunu bir araya getirerek HTML5, CSS3 ve JavaScript'in modern tarayıcılarla uyumlu olmasını garanti eder.
  • Tek bağımlılıkHafif bir NuGet yüklemesi, ek sistem kütüphanelerine gerek kalmadan Windows, Linux, Docker ve Azure/AWS'yi kapsar.
  • Görüntüleme seçenekleriPaperSize, CssMediaType ve RenderDelay, tarayıcının PRINT ayarlarını yansıtarak PDF'lerin ekran düzeniyle uyumlu olmasını sağlar.
  • Geleceğe dönük hedefleme — API yüzeyi .NET 8, .NET 9 STS ve yakında çıkacak olan .NET 10'da aynıdır, bu nedenle uzun vadeli bakım ihtiyacı minimum düzeydedir.
  • Son işlem kancalarıPdfDocument, birleştirme, parola koruması ve dijital imzalar için yardımcılar sunar; bunların her biri bu kılavuzun ilerleyen bölümlerinde ele alınacaktır.

Daha fazla bilgi için: adım adım HTML dizisinden PDF'ye dönüştürme kılavuzuna ve ChromePdfRenderer API belgelerinin tamamına bakın.


Bir ASP .NET Core MVC görünümü nasıl PDF'ye aktarılabilir?

IronPDF, tamamen işlenmiş bir Razor görünümünü ( .cshtml ) bir tarayıcının yapacağı gibi işler ve sonucu PdfDocument olarak aktarır. Aşağıdaki iş akışı, denetleyici mantığını temiz tutar, tarayıcı eklentisi gerektirmez ve .NET 8 LTS, .NET 9 önizleme sürümü ve Kasım 2025'te piyasaya sürülmesi planlanan .NET 10 sürümünde çalışır.

Uçtan uca denetleyici ö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österdiği şey

  • Geçici dosya yok — Razor görünümü bellekte işlenir, ardından doğrudan RenderHtmlAsPdf'ye aktarılır; böylece disk I/O ve geçici klasör yarış koşulları önlenir.
  • Bilet boyutunda çıktıPaperSize = A5 ve dar kenar boşlukları, evde yazdırılan biletlerin kompakt olmasını sağlar.
  • Tutarlı PRINT stilleriCssMediaType = Print, tarayıcıların kullandığı @media print CSS kurallarının aynısını uygular.
  • İkili akışpdf.BinaryData, dosya sistemine dokunmadan belgeyi aktarır; API uç noktaları ve Lambda işlevleri için idealdir.
  • Yeniden kullanılabilir rendererChromePdfRenderer, her denetleyici için bir kez örneklenir, ardından yeniden kullanılır ve böylece işlem başlatma yükü en aza indirilir.

PaperSize, PaperOrientation, FitToPaperWidth

Margins, Header, Footer, Watermark

Sonraki adım: şifreleme ekleyin, dijital imzalar ekleyin veya birden fazla bileti tek bir dosyada birleştirin. Birleştirme örneğine ve dijital imza kılavuzuna bakın.


Render işleminden önce kağıt boyutu, kenar boşlukları, üstbilgiler, filigranlar ve güvenlik ayarlarını nasıl ince ayarlayabilirim?

IronPDF, çıktıların her yönünü (kağıt boyutları, yönlendirme, üstbilgiler ve altbilgiler, JavaScript zamanlaması, filigranlar, şifreleme ve dijital imzalar) kontrol eden tek bir ChromePdfRenderOptions nesnesi sunar; tüm bunlar ekstra tarayıcı eklentileri gerektirmez.

Kod örneği — birden fazla seçeneği aynı anda uygulayın

// AdvancedOptions.cs — .NET 8 compatible
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure everything in one place
renderer.RenderingOptions = new ChromePdfRenderOptions
{
    // 1. Page layout
    PaperSize        = PdfPaperSize.A4,                     // ISO size
    PaperOrientation = PdfPdfOrientation.Portrait,
    Margins          = new PdfMargins { Top = 20, Bottom = 25, Left = 15, Right = 15 }, // mm

    // 2. Timing & media
    CssMediaType     = PdfCssMediaType.Print,               // Respect @media print
    EnableJavaScript = true,
    RenderDelay      = 200,                                 // Wait 200 ms for animations

    // 3. Headers & footers (HTML gives full design freedom)
    HtmlHeader       = "<header style='font:14px Segoe UI'>Invoice — {{date}}</header>",
    HtmlFooter       = "<footer style='text-align:right;font-size:10px'>Page {{page}} / {{total-pages}}</footer>",

    // 4. Watermark
    Watermark        = new HtmlStamp
    {
        HtmlTemplate = "<div style='font-size:50px;color:#cccccc;opacity:0.3;'>CONFIDENTIAL</div>",
        VerticalAlignment = VerticalAlignment.Center,
        HorizontalAlignment = HorizontalAlignment.Center
    },

    // 5. Security
    SecurityOptions = new PdfSecurityOptions
    {
        OwnerPassword = "StrongOwnerPwd!",
        UserPassword  = "ReadOnly",
        AllowUserPrinting = false,
        AllowUserCopyPasteContent = false
    }
};

// Render any HTML
using PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Advanced Options Demo</h1>");

// Digitally sign with a PFX certificate (optional)
pdf.SignAndStamp("./certs/company.pfx", "Iron Software", "Bangkok", "Approval");

// Save
pdf.SaveAs("advanced-options-demo.pdf");
// AdvancedOptions.cs — .NET 8 compatible
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure everything in one place
renderer.RenderingOptions = new ChromePdfRenderOptions
{
    // 1. Page layout
    PaperSize        = PdfPaperSize.A4,                     // ISO size
    PaperOrientation = PdfPdfOrientation.Portrait,
    Margins          = new PdfMargins { Top = 20, Bottom = 25, Left = 15, Right = 15 }, // mm

    // 2. Timing & media
    CssMediaType     = PdfCssMediaType.Print,               // Respect @media print
    EnableJavaScript = true,
    RenderDelay      = 200,                                 // Wait 200 ms for animations

    // 3. Headers & footers (HTML gives full design freedom)
    HtmlHeader       = "<header style='font:14px Segoe UI'>Invoice — {{date}}</header>",
    HtmlFooter       = "<footer style='text-align:right;font-size:10px'>Page {{page}} / {{total-pages}}</footer>",

    // 4. Watermark
    Watermark        = new HtmlStamp
    {
        HtmlTemplate = "<div style='font-size:50px;color:#cccccc;opacity:0.3;'>CONFIDENTIAL</div>",
        VerticalAlignment = VerticalAlignment.Center,
        HorizontalAlignment = HorizontalAlignment.Center
    },

    // 5. Security
    SecurityOptions = new PdfSecurityOptions
    {
        OwnerPassword = "StrongOwnerPwd!",
        UserPassword  = "ReadOnly",
        AllowUserPrinting = false,
        AllowUserCopyPasteContent = false
    }
};

// Render any HTML
using PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Advanced Options Demo</h1>");

// Digitally sign with a PFX certificate (optional)
pdf.SignAndStamp("./certs/company.pfx", "Iron Software", "Bangkok", "Approval");

// Save
pdf.SaveAs("advanced-options-demo.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Configure everything in one place
renderer.RenderingOptions = New ChromePdfRenderOptions With {
    ' 1. Page layout
    .PaperSize = PdfPaperSize.A4, ' ISO size
    .PaperOrientation = PdfPdfOrientation.Portrait,
    .Margins = New PdfMargins With {.Top = 20, .Bottom = 25, .Left = 15, .Right = 15}, ' mm

    ' 2. Timing & media
    .CssMediaType = PdfCssMediaType.Print, ' Respect @media print
    .EnableJavaScript = True,
    .RenderDelay = 200, ' Wait 200 ms for animations

    ' 3. Headers & footers (HTML gives full design freedom)
    .HtmlHeader = "<header style='font:14px Segoe UI'>Invoice — {{date}}</header>",
    .HtmlFooter = "<footer style='text-align:right;font-size:10px'>Page {{page}} / {{total-pages}}</footer>",

    ' 4. Watermark
    .Watermark = New HtmlStamp With {
        .HtmlTemplate = "<div style='font-size:50px;color:#cccccc;opacity:0.3;'>CONFIDENTIAL</div>",
        .VerticalAlignment = VerticalAlignment.Center,
        .HorizontalAlignment = HorizontalAlignment.Center
    },

    ' 5. Security
    .SecurityOptions = New PdfSecurityOptions With {
        .OwnerPassword = "StrongOwnerPwd!",
        .UserPassword = "ReadOnly",
        .AllowUserPrinting = False,
        .AllowUserCopyPasteContent = False
    }
}

' Render any HTML
Using pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Advanced Options Demo</h1>")
    ' Digitally sign with a PFX certificate (optional)
    pdf.SignAndStamp("./certs/company.pfx", "Iron Software", "Bangkok", "Approval")

    ' Save
    pdf.SaveAs("advanced-options-demo.pdf")
End Using
$vbLabelText   $csharpLabel

Bu seçenekler neden önemlidir?

  • PaperSize, Margins ve CssMediaType, tarayıcının yazdırma iletişim kutusunu yansıtmaktadır; böylece ekran düzenleri ve PDF, Windows, Linux ve Docker'da aynı kalır.
  • HTML üstbilgileri ve altbilgileri Razor belirteçlerini, CSS'yi ve JavaScript'i destekler; bu, dinamik sayfa numaraları veya markalama için kullanışlıdır.
  • HtmlStamp, tek bir satırla tam HTML + CSS kontrolüyle markalı filigranlar oluşturmanıza olanak tanır.
  • Güvenlik seçenekleri, üçüncü taraf araçlara gerek kalmadan 128 bit şifreleme, sahip/kullanıcı şifreleri ve ayrıntılı izinler sağlar.
  • Dijital imzalar, kodun içine doğrudan bir şifreleme mührü ekleyerek yasal geçerliliği ve tahrifat kanıtını korur.
  • ExtractAllText ve ExtractAllImages gibi ayıklama yardımcıları, analiz gerektiğinde süreci tersine çevirir.

Hızlı başvuru — Popüler ayarlar

##

PaperSize, PaperOrientation, Margins, CssMediaType, RenderDelay

##

`HtmlHeader`, `HtmlFooter`, dinamik Razor yer tutucuları, sayfa numarası belirteçleri

##

`Watermark`, `HtmlStamp`, opaklık, hizalama

##

`SecurityOptions`, `SignAndStamp`, sahip / kullanıcı şifreleri, sertifika mühürleme

Sonraki görevler: birden fazla PDF'yi birleştirmek, metin ve görüntüleri çıkarmak ve Docker veya sunucusuz ortama dağıtmak. Çapraz platform uyumluluğunu sağlamak için dağıtım bölümüne geçin.


PDF oluşturma kodunu Linux ve Windows'ta Docker'a nasıl dağıtabilirim?

IronPdf tek bir bağımsız NuGet paketi olarak dağıtılır, bu nedenle ASP.NET Core (veya konsol) uygulamasını konteynerize etmek hem Windows hem de Linux'ta oldukça basittir. Buradaki anahtar nokta, yayınlanan ikili dosyaları ince bir çalışma zamanı görüntüsüne kopyalamak ve Linux'ta IronPDF'nin gerektirdiği iki yerel kütüphaneyi (libnss3 ve libatk1.0-0) eklemektir.

Çok aşamalı Dockerfile (Ubuntu 22.04)

Lütfen dikkate alınNeden çok aşamalı? SDK görüntüsü (1. aşama) projeyi derler; (2. aşama) nihai çalışma zamanı görüntüsü, derleme araçları atıldığı için < 120 MB gibi küçük kalı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 kapsayıcıları? İkinci aşamayı mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 ile değiştirin—Chromium DLL'leri pakete dahil edildiği için ek paketlere gerek yoktur.

Uçtan uca doğrulama komut dosyası

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, Bölüm 2'de olduğu gibi dahili olarak ChromePdfRenderer.RenderUrlAsPdf'yi çağırır.
  • IronPDF, konteyner içinde sanal alanlı Chromium sürecini başlatır; başsız olarak işlediği için X sunucusu gerekmez.
  • Büyük render işlemleri sırasında bile bellek kullanımı 200 MB'nin altında kalır.

İpuçlarıSorun giderme ipucu: Konteyner günlüklerinde "libnss3.so bulunamadı" hatası görünüyorsa, hem libnss3 hem de libatk1.0-0 dosyasının mevcut olduğunu kontrol edin. (musl C kütüphanesinde gerekli semboller bulunmadığından Alpine görüntüleri desteklenmemektedir.

Dahili kaynaklar


.NET Core'da mevcut PDF'leri nasıl açabilir, birleştirebilir, filigran ekleyebilir ve içeriklerini ayıklayabilirim?

IronPDF, IronPDF, Adobe® Acrobat veya üçüncü taraf araçlar tarafından oluşturulan her PDF dosyasını, kalite kaybı olmadan açılabilen, düzenlenebilen, güvenliği sağlanabilen ve yeniden kaydedilebilen birinci sınıf bir PdfDocument nesnesi olarak ele alır. Aynı API yüzeyi bugün .NET 8 LTS'de çalışmaktadır ve .NET 9 önizlemesinde ve yakında çıkacak olan .NET 10 sürümünde de değiştirilmeden derlenmektedir.

Birleştirilmiş örnek — aç → birleştir → filigran → ayıkla

// ManipulateExistingPdf.cs — .NET 8 LTS compatible
using IronPdf;
using System.Linq;

// Step 1: Open two existing files (password-protected PDFs are supported)
PdfDocument invoice  = PdfDocument.FromFile("invoice.pdf", "ReadOnly");   // open with user pwd
PdfDocument tAndCs   = PdfDocument.FromFile("terms.pdf");                 // no pwd required

// Step 2: Merge them (invoice pages first, then T&Cs)
PdfDocument mergedPdf = PdfDocument.Merge(invoice, tAndCs);               // 1-liner merge

// Step 3: Apply a diagonal CONFIDENTIAL watermark to every page
mergedPdf.ApplyStamp(
    "<div style='font-size:60px;color:#d9534f;opacity:0.2;transform:rotate(-45deg);"
  + "width:100%;text-align:center;'>CONFIDENTIAL</div>",
    verticalAlignment   : VerticalAlignment.Center,
    horizontalAlignment : HorizontalAlignment.Center);

// Step 4: Extract all text and the first image for audit purposes
string fullText = mergedPdf.ExtractAllText();
var    image    = mergedPdf.ExtractAllImages().FirstOrDefault();

// Step 5: Save or stream
mergedPdf.SaveAs("invoice-with-terms.pdf");
// ManipulateExistingPdf.cs — .NET 8 LTS compatible
using IronPdf;
using System.Linq;

// Step 1: Open two existing files (password-protected PDFs are supported)
PdfDocument invoice  = PdfDocument.FromFile("invoice.pdf", "ReadOnly");   // open with user pwd
PdfDocument tAndCs   = PdfDocument.FromFile("terms.pdf");                 // no pwd required

// Step 2: Merge them (invoice pages first, then T&Cs)
PdfDocument mergedPdf = PdfDocument.Merge(invoice, tAndCs);               // 1-liner merge

// Step 3: Apply a diagonal CONFIDENTIAL watermark to every page
mergedPdf.ApplyStamp(
    "<div style='font-size:60px;color:#d9534f;opacity:0.2;transform:rotate(-45deg);"
  + "width:100%;text-align:center;'>CONFIDENTIAL</div>",
    verticalAlignment   : VerticalAlignment.Center,
    horizontalAlignment : HorizontalAlignment.Center);

// Step 4: Extract all text and the first image for audit purposes
string fullText = mergedPdf.ExtractAllText();
var    image    = mergedPdf.ExtractAllImages().FirstOrDefault();

// Step 5: Save or stream
mergedPdf.SaveAs("invoice-with-terms.pdf");
' ManipulateExistingPdf.cs — .NET 8 LTS compatible
Imports IronPdf
Imports System.Linq

' Step 1: Open two existing files (password-protected PDFs are supported)
Private invoice As PdfDocument = PdfDocument.FromFile("invoice.pdf", "ReadOnly") ' open with user pwd
Private tAndCs As PdfDocument = PdfDocument.FromFile("terms.pdf") ' no pwd required

' Step 2: Merge them (invoice pages first, then T&Cs)
Private mergedPdf As PdfDocument = PdfDocument.Merge(invoice, tAndCs) ' 1-liner merge

' Step 3: Apply a diagonal CONFIDENTIAL watermark to every page
mergedPdf.ApplyStamp("<div style='font-size:60px;color:#d9534f;opacity:0.2;transform:rotate(-45deg);" & "width:100%;text-align:center;'>CONFIDENTIAL</div>", verticalAlignment := VerticalAlignment.Center, horizontalAlignment := HorizontalAlignment.Center)

' Step 4: Extract all text and the first image for audit purposes
Dim fullText As String = mergedPdf.ExtractAllText()
Dim image = mergedPdf.ExtractAllImages().FirstOrDefault()

' Step 5: Save or stream
mergedPdf.SaveAs("invoice-with-terms.pdf")
$vbLabelText   $csharpLabel

Bunun önemi

  • Aç ve birleştirPdfDocument.FromFile, şifrelenmiş dosyalar dahil olmak üzere standartlara uygun tüm PDF'leri yüklerken, PdfDocument.Merge tek bir çağrı ile istediğiniz sayıda belgeyi birleştirir.
  • WatermarkApplyStamp (alias HtmlStamp), seçilen sayfalara rasterleştirme yapmadan tamamen stilize edilmiş HTML/CSS katmanları (logo, QR kodu veya diyagonal metin) yerleştirir.
  • İçerik çıkarmaExtractAllText ve ExtractAllImages, sonraki aşamalarda arşivleme veya AI iş akışları için ham UTF-8 metin veya ikili görüntü akışlarını alır.
  • Dijital imzalar için hazır – aynı PdfDocument örneği SignAndStamp ile mühürlenebilir ve ISO 32000-2 dijital imza gerekliliklerine uygun RFC 3161 uyumlu hash'ler üretilir.
  • 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üleyicilerle uyumlu kalır.
  • Geleceğe dönük – API, birlikte çalışabilirlik derlemelerini ve Win32 GDI çağrılarını kullanmaz, böylece kod Windows, Linux, Docker ve yakında çıkacak olan .NET 10 sunucusuz SKU'larda değiştirilmeden çalışır.

Sayfaları bölmek, döndürmek veya silmek mi istiyorsunuz? Ayrıntılı işlemler için sayfa düzeyinde düzenleme eğitimine bakın.


.NET Core'da PDF'ler nasıl şifrelenebilir ve dijital olarak imzalanabilir?

IronPDF, bir belgeyi iki adımda güvence altına alır: AES tabanlı şifreleme (kullanıcı/sahip şifreleri + ayrıntılı izinler) ve dosyayı kriptografik bir hash ile mühürleyen X.509 dijital imzalar. Her iki API de aynı PdfDocument nesnesinde bulunur, bu nedenle iş akışı şu anda .NET 8 LTS'de aynıdır ve .NET 9 önizlemesinde ve yakında çıkacak olan .NET 10 sürümünde de değişiklik yapılmadan derlenir.

Örnek — 256 bit AES uygulayın, PRINT haklarını kilitleyin ve görünür bir imza ekleyin

// SecureAndSign.cs — .NET 8 LTS compatible
using IronPdf;

// Step 1: Load an existing PDF (or produce one with RenderHtmlAsPdf)
PdfDocument pdf = PdfDocument.FromFile("financial-report.pdf");

// Step 2: Configure AES-256 encryption & permissions
pdf.SecuritySettings = new PdfSecuritySettings
{
    EncryptionAlgorithm   = PdfEncryptionAlgorithm.AES256Bit,
    OwnerPassword         = "IronAdmin!2025",
    UserPassword          = "ReadOnly",
    AllowUserPrinting     = PdfPrintSecurity.Disabled,
    AllowUserCopyPasteContent = false,
    AllowUserAnnotations  = false
};

// Step 3: Digitally sign with a PFX certificate
pdf.SignAndStamp(
    certificatePath : "./certs/ironsoftware.pfx",
    authority       : "Iron Software Ltd.",
    location        : "Chicago, IL",
    reason          : "Final approval"
);

// Step 4: Persist or stream
pdf.SaveAs("financial-report-secured-signed.pdf");
// SecureAndSign.cs — .NET 8 LTS compatible
using IronPdf;

// Step 1: Load an existing PDF (or produce one with RenderHtmlAsPdf)
PdfDocument pdf = PdfDocument.FromFile("financial-report.pdf");

// Step 2: Configure AES-256 encryption & permissions
pdf.SecuritySettings = new PdfSecuritySettings
{
    EncryptionAlgorithm   = PdfEncryptionAlgorithm.AES256Bit,
    OwnerPassword         = "IronAdmin!2025",
    UserPassword          = "ReadOnly",
    AllowUserPrinting     = PdfPrintSecurity.Disabled,
    AllowUserCopyPasteContent = false,
    AllowUserAnnotations  = false
};

// Step 3: Digitally sign with a PFX certificate
pdf.SignAndStamp(
    certificatePath : "./certs/ironsoftware.pfx",
    authority       : "Iron Software Ltd.",
    location        : "Chicago, IL",
    reason          : "Final approval"
);

// Step 4: Persist or stream
pdf.SaveAs("financial-report-secured-signed.pdf");
' SecureAndSign.cs — .NET 8 LTS compatible
Imports IronPdf

' Step 1: Load an existing PDF (or produce one with RenderHtmlAsPdf)
Private pdf As PdfDocument = PdfDocument.FromFile("financial-report.pdf")

' Step 2: Configure AES-256 encryption & permissions
pdf.SecuritySettings = New PdfSecuritySettings With {
	.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256Bit,
	.OwnerPassword = "IronAdmin!2025",
	.UserPassword = "ReadOnly",
	.AllowUserPrinting = PdfPrintSecurity.Disabled,
	.AllowUserCopyPasteContent = False,
	.AllowUserAnnotations = False
}

' Step 3: Digitally sign with a PFX certificate
pdf.SignAndStamp(certificatePath := "./certs/ironsoftware.pfx", authority := "Iron Software Ltd.", location := "Chicago, IL", reason := "Final approval")

' Step 4: Persist or stream
pdf.SaveAs("financial-report-secured-signed.pdf")
$vbLabelText   $csharpLabel

Perde arkası

  • AES-256 şifreleme — IronPDF, yükü NIST onaylı AES anahtarlarıyla sararak yetkisiz açma, yazdırma veya kopyala-yapıştır işlemlerini engeller.
  • İzin ayrıntı düzeyiAllowUserPrinting ve AllowUserFormData gibi özellikler, eylem başına hakları değiştirir; Herhangi bir kısıtlamanın yürürlüğe girmesi için bir sahip şifresi gereklidir.
  • Dijital imzalarSignAndStamp, RFC 3161 zaman damgası ve sertifika zincirini gömer, böylece Adobe® Acrobat ve diğer ISO 32000-2 görüntüleyiciler tarafından tanınan, tahrifatı tespit edilebilir hash'ler oluşturur.
  • Tek noktadan API — hem şifreleme hem de imzalama aynı PdfDocument örneğini değiştirir, böylece birden fazla dosya geçişi önlenir ve dahili yazı tipleri, katmanlar ve meta veriler korunur.

İpuçlarıSorun giderme ipucu: Adobe Reader "geçersiz imza" hatası veriyorsa, PFX dosyasının güvenilir bir kök sertifika içerdiğinden ve location dizelerinin ASCII uyumlu olduğundan emin olun.

Temel güvenlik ayarları

##

`PdfSecuritySettings` → `OwnerPassword`, `UserPassword`, `EncryptionAlgorithm`, `AllowUserPrinting`

##

`PdfDocument.SignAndStamp` — PFX yolu, yetki, konum, neden, zaman damgası

Daha ayrıntılı bilgi için iç kaynaklar


.NET Core'da HTML'den PDF'ye dönüştürme performansı nasıl optimize edilebilir ve ölçeklendirilebilir?

IronPDF'nin Chrome motoru, modern donanımlarda çoğu sayfayı zaten 1 saniyeden daha kısa sürede görüntüler, ancak iş hacmi, görüntülemeleri toplu iş olarak gerçekleştirerek, çoklu iş parçacığı özelliğini etkinleştirerek ve Headless Chrome'un ek yükünü azaltarak katlanarak artırılabilir. Aşağıdaki ipuçları tüm .NET sürümleri için geçerlidir.

1. Arka plan iş parçacığı havuzunda toplu işleme

// BatchRender.cs — Thread-safe on .NET 8+
using IronPdf;
using System.Threading.Tasks;

var htmlSources = Directory.GetFiles("./html", "*.html");
var renderer    = new ChromePdfRenderer();                 // reuse 1 instance

Parallel.ForEach(htmlSources, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, file =>
{
    string html = File.ReadAllText(file);
    using PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs(Path.ChangeExtension(file, ".pdf"));
});
// BatchRender.cs — Thread-safe on .NET 8+
using IronPdf;
using System.Threading.Tasks;

var htmlSources = Directory.GetFiles("./html", "*.html");
var renderer    = new ChromePdfRenderer();                 // reuse 1 instance

Parallel.ForEach(htmlSources, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, file =>
{
    string html = File.ReadAllText(file);
    using PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs(Path.ChangeExtension(file, ".pdf"));
});
' BatchRender.cs — Thread-safe on .NET 8+
Imports IronPdf
Imports System.Threading.Tasks

Private htmlSources = Directory.GetFiles("./html", "*.html")
Private renderer = New ChromePdfRenderer() ' reuse 1 instance

Parallel.ForEach(htmlSources, New ParallelOptions With {.MaxDegreeOfParallelism = Environment.ProcessorCount}, Sub(file)
	Dim html As String = File.ReadAllText(file)
	Using pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
		pdf.SaveAs(Path.ChangeExtension(file, ".pdf"))
	End Using
End Sub)
$vbLabelText   $csharpLabel

2. Headless Chrome başlatma maliyetini azaltın

IronPDF kendi Chromium sürümünü sunar, ancak her bir görüntüleme işlemi küçük bir başlangıç maliyeti gerektirir. Havuzlama yardımcı olur ve Linux kapsayıcıları iki yerel kütüphane içermelidir:

RUN apt-get update && \
    apt-get install -y --no-install-recommends libnss3 libatk1.0-0

Herhangi bir kütüphanenin eksik olması, Docker günlüklerinde libnss3.so not found hatası olarak görünür.

Önerilen Chrome bayrakları (IronPDF tarafından otomatik olarak uygulanır), konteynerlerdeki bellek ve kök kullanıcı sorunlarını azaltmak için --disable-gpu ve --no-sandbox'yi içerir.

3. RenderDelay veya WaitFor ile geç JavaScript'i bekleyin

DOMContentLoaded'den sonra sayaçları canlandıran veya veri alan sayfalar için kısa bir gecikme gerekebilir:

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 vaatler ve DOM yoklaması için özel WaitFor eğitimine bakın.

4. Bir istek için hata ayıklama günlüğünü etkinleştirin

renderer.LoggingOptions.DebugMode        = true;
renderer.LoggingOptions.LogsToConsole    = true;
renderer.LoggingOptions.LogFilePath      = "./logs/ironpdf-debug.log";
renderer.LoggingOptions.DebugMode        = true;
renderer.LoggingOptions.LogsToConsole    = true;
renderer.LoggingOptions.LogFilePath      = "./logs/ironpdf-debug.log";
renderer.LoggingOptions.DebugMode = True
renderer.LoggingOptions.LogsToConsole = True
renderer.LoggingOptions.LogFilePath = "./logs/ironpdf-debug.log"
$vbLabelText   $csharpLabel

Canlı DevTools izlemeleri, kodu yeniden derlemeye gerek kalmadan eksik yazı tiplerini, 404 hatalı resimleri ve zamanlama olaylarını ortaya çıkarır.

5. Yeniden oluşturmak yerine şablon PDF'leri yeniden kullanın

Fatura baskıları için, [[name]] gibi yer tutucular içeren bir şablon PDF oluşturun ve karmaşık HTML'yi yeniden oluşturmak yerine metin değiştirme işlemi gerçekleştirin. 10 kat daha hızlı ve bellek kullanımı daha azdır.

Hızlı Ayarlama Kontrol Listesi

##

`Parallel.ForEach`, `async/await`, tek bir `ChromePdfRenderer`

##

Kullanım `aspnet:8.0-jammy`; `libnss3` + `libatk1.0-0`; bayraklar `--no-sandbox`, `--disable-gpu`

##

`RenderDelay`, `WaitFor()`, yavaş SPA yüklemeleri için DevTools zaman çizelgesini günlüğe kaydedin

Daha Fazla Bilgi


Ücretsiz deneme sürümünü nereden indirebilirim, lisans seçebilirim ve uzman desteğini nereden bulabilirim? {#anchor-10-resources}

_Ücretsiz Denemeyi Başlat_ formundan anında 30 Günlük Deneme anahtarı verilir ve bu anahtar, HTML'den PDF'ye dönüştürme, dijital imzalar ve şifreleme dahil olmak üzere tüm özelliklerin filigran olmadan kullanılmasını sağlar.

Kütüphaneyi değerlendirdikten sonra, süresiz geliştirici, dağıtım veya Enterprise Lisansı'ndan birini seçin; Her plan, ücretsiz küçük güncellemeler, geliştirme/deneme/üretim kullanım hakları ve 30 günlük para iade garantisi içerir. Anahtarın uygulanması tek satırlık bir koddur (IronPdf.License.LicenseKey = "YOUR-KEY";) ve CI/CD boru hatlarında otomatikleştirilebilir.

Kapsamlı belgeler (hızlı başlangıç kılavuzları, API Referansı ve eğitim videoları) doküman portalında bulunur ve her .NET sürümüyle birlikte güncellenir.

Mühendislikle ilgili sorular, Chicago merkezli destek ekibi tarafından canlı sohbet, e-posta veya telefon yoluyla bir iş günü içinde yanıtlanır.

Performans ayarlama ve dağıtımla ilgili SSS'ler, Performans Yardım Merkezi'nde bir araya getirilmiştir.

Hızlı bağlantılar

Kaynak URL Neden önemli?
30 Günlük Deneme anahtarı alın https://ironpdf.com/demos/ Filigran olmadan tüm özelliklerin kilidini açar
Lisanslama ve fiyatlandırma https://ironpdf.com/licensing/ Süresiz veya abonelik planları; Iron Suite, 10 kütüphaneyi bir araya getirir
API Referansı https://ironpdf.com/object-reference/api/ Tam sınıf belgeleri, ör. ChromePdfRenderer
Doküman portalı https://ironpdf.com/docs/ Kılavuzlar, öğreticiler, örnek projeler
Performans desteği https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/ Optimizasyon ve ölçeklendirme ipuçları
Destek ile iletişime geçin https://ironsoftware.com/contact-us/ Canlı sohbet, e-posta, telefon desteği

Sonraki adımlar

  1. MVC görünüm oluşturmadan AES-256 şifrelemeye kadar tüm önemli özellikleri gösteren örnek depoyu kopyalayın.
  2. Deneme anahtarını mevcut bir çözüme takın ve platformlar arası uyumluluğu doğrulamak için birim testlerini çalıştırın.
  3. Projeye özel öneriler almak için mühendislik ekibiyle canlı bir demo randevusu alın.

Bu kaynaklar sayesinde, herhangi bir .NET ekibi tek bir sprint içinde piksel mükemmelliğinde PDF'leri üretime (yerel, Docker veya sunucusuz) gönderebilir.

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,014,616 | Sürüm: 2026.5 just released
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.