ASP .NET Core Web Uygulamasında Razor Sayfalarını PDF'lere Dönüştürme

ASP.NET Core C# Uygulamasında Razor Sayfalarını PDF'lere Dönüştürme

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

IronPDF, RenderRazorToPdf yöntemini kullanarak ASP.NET Core uygulamalarında Razor Pages (.cshtml dosyaları) ile PDF belgeleri arasında sorunsuz dönüştürme sağlar ve C# ile HTML işleme için tam destek sunarak web içeriğinden PDF oluşturmayı basitleştirir.

Razor Sayfası, web içeriği oluşturmak için C# ve HTML'yi birleştiren .cshtml uzantılı bir dosyadır. ASP.NET Core'da, Razor Sayfaları web uygulamaları için kod organize etmenin daha basit bir yoludur, okunabilir veya basit veri girişi yapar.

Bir ASP.NET Core Web Uygulaması, modern web uygulamaları geliştirmek için platformlar arası bir framework olan ASP.NET Core kullanılarak oluşturulan bir web uygulamasıdır.

IronPDF, bir ASP.NET Core Web Uygulama projesi içinde Razor Sayfalarından PDF dosyaları oluşturma işlemini basitleştirir. Bu, ASP.NET Core Web Uygulamalarında PDF oluşturmayı kolaylaştırır.

Hızlı Başlangıç: Razor Sayfalarını Saniyeler İçinde PDF'ye Dönüştürme

Razor Sayfalarınızı, ASP.NET Core uygulamasında yüksek kaliteli PDF'lere dönüştürün. RenderRazorToPdf yöntemini kullanarak, CSHTML dosyalarını PDF belgelerine dönüştürebilir, iş akışınızı optimize edebilir ve belge dağıtımını iyileştirebilirsiniz. Bu kılavuz, bunu dakikalar içinde başarmak için gerekli basit adımları adım adım açıklıyor.

  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.

    // Install-Package IronPdf.Extensions.Razor
    var pdf = new IronPdf.ChromePdfRenderer().RenderRazorToPdf("Views/Home/Index.cshtml");
  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

Giriş

Razor Sayfaları, ASP.NET Core uygulamalarında dinamik web içeriği oluşturmak için güçlü ve sezgisel bir yol sağlar. IronPDF'nin render yetenekleri ile birleştirildiğinde, geliştiriciler web içeriklerinden doğrudan profesyonel PDF belgeleri oluşturabilir. Bu yaklaşım karmaşık PDF oluşturma mantığını ortadan kaldırır ve mevcut HTML ve CSS yeteneklerinizi kullanmanıza olanak tanır.

IronPDF ile Razor Sayfaları arasındaki entegrasyon, raporlar, faturalar, sertifikalar ve dinamik veri sunumu gerektiren diğer belgeler üretmek için özellikle değerlidir. Halihazırda aşina olduğunuz Razor sözdizimini kullanarak, artırılmış tutarlılık sağlarken web görünümleriniz ve PDF çıktılarınız arasında tutarlılığı koruyabilirsiniz.

Razor'dan PDF'ye Dönüştürme İçin Hangi NuGet Paketlerine İhtiyacım Var?

IronPdf.Extensions.Razor paketi, ana IronPdf paketinin bir uzantısıdır. ASP.NET Core Web Uygulamasında Razor Pages'ı PDF belgelerine dönüştürmek için hem IronPdf.Extensions.Razor hem de IronPdf paketleri gereklidir. Ayrıntılı kurulum talimatları için kurulum genel bakış kılavuzumuzu ziyaret edin.

# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
Install-Package IronPdf.Extensions.Razor
# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
Install-Package IronPdf.Extensions.Razor
SHELL
PDF için C# NuGet Kütüphanesi

NuGet ile yükleyin

Install-Package IronPdf.Extensions.Razor

ASP.NET Core'da Razor Sayfalarını PDF'ye Nasıl Dönüştürürüm?

Razor Sayfalarını PDF dosyalarına dönüştürmek için bir ASP.NET Core Web Uygulaması projesi gerekecek. Süreç, verileriniz için bir model oluşturmayı, bu verileri görüntülemek için bir Razor Sayfası kurmayı ve ardından IronPDF'nin RenderRazorToPdf yöntemini kullanarak PDF çıktısını oluşturmayı içerir.

Neden PDF Oluşturma İçin Bir Model Sınıfına İhtiyacım Var?

Model sınıfları, Razor Sayfalarınızda veri sunumunun omurgası olarak hizmet eder. Denetleyici mantığınızdan görünümünüze veri geçişinin yapılandırılmış bir yolunu sağlar, tür güvenliğini ve sürdürülebilirliği sağlar. PDF oluştururken, bu modeller daha da önemli hale gelir çünkü son belgenizde görünecek verilerin tam yapısını tanımlarlar.

  • Projeye yeni bir klasör oluştur ve "Models" adını ver.
  • Klasöre standart bir C# sınıfı ekleyin ve adına Person adını verin. Bu sınıf, bireysel veri için bir model görevi görecektir. Aşağıdaki kod parçasını kullanın:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-razor-model.cs
namespace RazorPageSample.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}
Namespace RazorPageSample.Models
	Public Class Person
		Public Property Id() As Integer
		Public Property Name() As String
		Public Property Title() As String
		Public Property Description() As String
	End Class
End Namespace
$vbLabelText   $csharpLabel

PDF Dönüşümü İçin Bir Razor Sayfası Nasıl Ayarlarım?

"Pages" klasörüne boş bir Razor Sayfası ekleyin ve adına persons.cshtml adını verin.

  • Aşağıda verilen kod örneğini kullanarak yeni oluşturulan Persons.cshtml dosyasını değiştirin.

Aşağıdaki kod bilgiyi tarayıcıda görüntüler. Razor sözdiziminin, C# kodunu HTML içinde sorunsuz bir şekilde entegrasyon yapmasına nasıl izin verdiğine dikkat edin, bu da dönüştürülebilecek dinamik içerik oluşturmak için mükemmel hale getirir:

@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
HTML

Razor Sayfalarını PDF'lere Dönüştürme

Ardından, aşağıdaki kod önce ChromePdfRenderer sınıfını başlatır. Bunu RenderRazorToPdf yöntemine aktarmak, bu Razor Sayfasını bir PDF belgesine dönüştürmek için yeterlidir.

RenderingOptions'ta mevcut olan özelliklere tam erişiminiz var. Bu özellikler, oluşturulan PDF'ye sayfa numaraları uygulama, özel kenar boşlukları ayarlama ve özel metin ve HTML başlıklarını ve alt bilgilerini ekleme yeteneğini içerir. PDF'lerinizin doğru bir şekilde tanımlandığından ve aranabilirliğin sağlandığından emin olmak için meta veriler yapılandırabilirsiniz.

  • Persons.cshtml dosyasının açılır menüsünü açarak Persons.cshtml.cs dosyasını görüntüleyin.
  • Persons.cshtml.cs'yi aşağıdaki kodla değiştirin.
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
Imports IronPdf.Razor
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports RazorPageSample.Models

Namespace RazorPageSample.Pages
	Public Class PersonsModel
		Inherits PageModel

		<BindProperty(SupportsGet := True)>
		Public Property Persons() As List(Of Person)

		' Handle GET request to load initial data
		Public Sub OnGet()
			Persons = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			ViewData("personList") = Persons
		End Sub

		' Handle POST request to convert Razor page to PDF
		Public Function OnPost() As IActionResult
			Persons = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			ViewData("personList") = Persons

			Dim renderer As New ChromePdfRenderer()

			' Render Razor Page to PDF document
			Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)

			' Return the generated PDF file with appropriate content headers
			Response.Headers.Add("Content-Disposition", "inline")
			Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")

			' Optionally view the output PDF in browser (uncomment below line if needed)
			' return File(pdf.BinaryData, "application/pdf");
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

RenderRazorToPdf yöntemi, ek işleme ve düzenlemeye tabi tutulabilen bir PdfDocument nesnesi döndürür. PDF'yi PDFA veya PDFUA olarak dışa aktarabilir, oluşturulan PDF belgesine dijital imza ekleyebilir veya PDF belgelerini birleştirebilir ve bölebilirsiniz. Yöntem ayrıca sayfaları döndürme, açıklamalar veya yer imleri ekleme ve PDF'nize özel filigranlar damgalamanıza olanak tanır.

Gelişmiş belge yönetimi için, dosya kalitesinden ödün vermeden dosya boyutunu azaltmak amacıyla PDF'leri sıkıştırabilirsiniz. Bu, özellikle büyük raporlarla uğraşırken veya bant genişliği bir endişe olduğunda kullanışlıdır. Ayrıca, IronPDF tarafından sunulan kapsamlı düzenleme yetenekleri, kapsamlı PDF düzenleme kılavuzumuzda belgelenmiştir.

PDF Oluşturma Sayfası İçin Nasıl Gezinme Eklenir?

Gezinme, ASP.NET Core uygulamanızda kullanıcı deneyimi için çok önemlidir. Ana gezinmenize PDF oluşturma sayfasını entegre ederek kullanıcılar, URL'leri elle girmeden bu işlevselliğe kolayca erişebilir.

  • Pages klasörüne gidin -> Shared klasörü -> _Layout.cshtml. "Person" gezinme öğesini "Home"'dan sonra yerleştirin.

asp-page özniteliğinin değeri, dosya adımızla tam olarak eşleşmelidir; bu durumda dosya adı Persons'dir. Bu, ASP.NET Core uygulamanızda doğru yönlendirilmeyi sağlar:

<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
HTML

PDF Oluşturma Çalıştırdığımda Ne Olur?

Bu, projeyi nasıl çalıştıracağınızı ve bir PDF belgesi oluşturacağınızı gösterir. "Person" gezinme bağlantısına tıkladığınızda, verileri tablo formatında göreceksiniz. "Yazdır" düğmesine tıklamak, PDF oluşturma sürecini tetikler ve mevcut Razor Sayfa görünümünü indirilebilir bir PDF belgesine dönüştürür.

Visual Studio showing C# PersonsModel class with OnGet and OnPostAsync methods for PDF generation using IronPDF

Oluşturulan PDF, Razor Sayfanızdaki tüm stil ve biçimlendirmeleri koruyarak web görünümünüz ve PDF çıktınız arasında tutarlı bir görünüm sağlar. Bu yaklaşım, uygulamanızın veritabanı veya iş mantığından alınan verileri gerektiren raporlar, faturalar veya diğer belgeler oluşturmak için özellikle kullanışlıdır.

Tamamlanmış Bir ASP.NET Core Web Uygulaması Örneğini Nereden İndirebilirim?

Bu kılavuzun tam kodunu zipli dosya olarak indirip, Visual Studio'da bir ASP.NET Core Web Uygulaması projesi olarak açabilirsiniz.

RazorPageSample.zip ASP.NET Core Web Uygulaması Projesini İndirin

Sıkça Sorulan Sorular

ASP.NET Core'da Razor Sayfalarını PDF'e nasıl dönüştürebilirim?

IronPDF'in RenderRazorToPdf metodunu kullanarak ASP.NET Core'da Razor Sayfalarını PDF'e dönüştürebilirsiniz. Basitçe, IronPdf.Extensions.Razor paketini yükleyin ve .cshtml dosyalarınızı doğrudan PDF belgelerine dönüştürmek için ChromePdfRenderer'ı kullanın.

Razor'dan PDF'e dönüşüm için hangi NuGet paketlerine ihtiyaç duyuluyor?

İki NuGet paketine ihtiyacınız var: IronPdf.Extensions.Razor (genişletme paketi) ve IronPdf (ana paket). Her iki paket de ASP.NET Core Web Uygulamalarında Razor Sayfalarını PDF belgelerine dönüştürmek için gereklidir.

Razor Sayfalarımı PDF'e dönüştürürken dinamik veri kullanabilir miyim?

Evet, IronPDF, Razor Sayfalarındaki dinamik verileri tam olarak destekler. C# kodu, model bağlama ve tüm standart Razor sözdizimi özelliklerini PDF'e dönüştürürken kullanabilirsiniz, bu da dinamik içerikle raporlar, faturalar ve sertifikalar üretmek için idealdir.

Razor Sayfalarından hangi tür belgeler üretebilirim?

IronPDF'in Razor'dan PDF'e dönüşümü, raporlar, faturalar, sertifikalar, makbuzlar ve dinamik veri sunumu gerektiren diğer belgeler gibi çeşitli belge türlerini üretmek için mükemmeldir, mevcut HTML ve CSS stilinizi koruyarak.

Projemde Razor'dan PDF'e dönüşümü ne kadar hızlı uygulayabilirim?

IronPDF ile dakikalar içinde Razor'dan PDF'e dönüşüm uygulayabilirsiniz. Minimal iş akışı sadece 5 adım içerir: kütüphaneyi yüklemek, bir model sınıfı eklemek, bir Razor Sayfası oluşturmak, .cs dosyasını RenderRazorToPdf metodu kullanacak şekilde düzenlemek ve uygulamanızı çalıştırmak.

Dönüşüm, HTML ve CSS stilimi korur mu?

Evet, IronPDF, Razor Sayfalarını PDF'e dönüştürürken HTML ve CSS stilinizi korur. Bu, web görünümleriniz ve PDF çıktılarınız arasında tutarlılığı korumanıza ve zaten oluşturduğunuz stil ve yerleşimi kullanmanıza olanak tanır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
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.