Jak przekonwertować CSHTML na PDF przy użyciu Razor Headlessly w C# | IronPDF

How to Convert Razor Views to PDFs Headlessly in C

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

Konwertuj widoki Razor na pliki PDF w języku C#, używając Razor.Templating.Core do przekształcania plików cshtml na HTML, a następnie użyj metody RenderHtmlAsPdf biblioteki IronPDF do generowania dokumentów PDF bez konieczności korzystania z interfejsu graficznego lub okna przeglądarki.

Proces renderowania bez interfejsu graficznego przetwarza zawartość sieciową bez graficznego interfejsu użytkownika. Chociaż IronPdf.Extensions.Razor jest przydatne, brakuje mu możliwości renderowania bezinterfejsowego. Ten przewodnik zajmuje się tą luką.

Użyjemy Razor.Templating.Core do konwersji cshtml do HTML, a następnie IronPDF do generowania plików PDF.

Szybki start: Przekonwertuj widoki Razor na PDF w kilka sekund

Przekształć widoki Razor w PDF za pomocą konwersji bez interfejsu IronPDF. Użyj IronPdf.HtmlToPdf.StaticRender.RenderHtmlAsPdf, aby renderować kod HTML z widoków Razor do plików PDF. To podejście działa bezproblemowo w środowiskach ASP.NET Core.

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf
  2. Skopiuj i uruchom ten fragment kodu.

    var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); 
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Zainstaluj Razor.Templating.Core, aby konwertować widoki Razor na HTML w aplikacjach internetowych .NET Core.

# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
SHELL

Jak skonfigurować projekt ASP.NET Core do konwersji Razor na PDF?

Potrzebujesz projektu ASP.NET Core Web App (Model-View-Controller), aby konwertować widoki na PDF. Konfiguracja obejmuje tworzenie projektu w Visual Studio, instalację pakietów NuGet oraz konfigurację struktury projektu. W przypadku podobnych technik zapoznaj się z konwersją CSHTML na PDF w MVC Core lub konwersją CSHTML na PDF używając stron Razor.

Dlaczego potrzebuję Razor.Templating.Core zamiast IronPdf.Extensions.Razor?

Razor.Templating.Core zapewnia prawdziwe renderowanie bezinterfejsowe — konwertuje widoki Razor do formatu HTML bez kontekstu internetowego lub okna przeglądarki. To pasuje do usług w tle, aplikacji konsolowych lub środowisk bez interfejsu użytkownika. IronPdf.Extensions.Razor wymaga kontekstu internetowego do działania.

Jaki typ projektu najlepiej nadaje się do generowania PDF bez interfejsu?

Projekty ASP.NET Core Web App (Model-View-Controller) zapewniają niezbędną infrastrukturę widoków Razor z elastycznymi opcjami wdrożenia. Użyj tego podejścia w usługach w tle, Azure Functions lub aplikacjach konsolowych. Zobacz wdrażanie IronPDF na Azure dla generowania w chmurze.

Jak zainstalować wymagane pakiety NuGet?

Zainstaluj pakiety używając Menedżera Pakietów NuGet. Potrzebujesz IronPdf i Razor.Templating.Core:

// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
' Install via Package Manager Console
' Install-Package IronPdf
' Install-Package Razor.Templating.Core

' Or add to your .vbproj file
' <PackageReference Include="IronPdf" Version="2024.x.x" />
' <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
$vbLabelText   $csharpLabel

Jak utworzyć i skonfigurować widok Razor do generowania PDF?

  • Kliknij prawym przyciskiem myszy na folderze "Home". Wybierz "dodaj", a następnie "Dodaj widok".
  • Utwórz pusty widok Razor o nazwie "Data.cshtml".

 related to Jak utworzyć i skonfigurować widok Razor do generowania PDF?

Jaką treść HTML należy dodać do mojego widoku Razor?

Dodaj HTML, który chcesz wyrenderować jako PDF:

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
HTML

Dla skomplikówanych układów użyj CSS i stylów druku, aby zapewnić doskonałe renderowanie PDF. IronPDF obsługuje nowoczesne funkcje CSS3 dla zaawansowanych układów dokumentów.

Dłączego warto używać tabel do wyświetlania danych PDF?

Tabele dostarczają zorganizowanej, uporządkowanej informacji, która dobrze przekłada się na drukowane dokumenty. Zachowują spójność formatowania na różnych platformach i są czytelne w formacie PDF. Silnik renderujący IronPDF dobrze obsługuje układy tabel, zachowując granice, odstępy i wyrównanie. Dla zaawansowanego formatowania zapoznaj się z niestandardowymi marginesami do optymalizacji układu.

Jakie są powszechne kwestie stylizacyjne dotyczące wyników PDF?

Dla wyników PDF używaj zapytań medialnych specyficznych dla druku CSS, wartości w pikselach zamiast jednostek względnych i osadzonych czcionek dla spójnego renderowania. IronPDF obsługuje czcionki internetowe i ikonograficzne dla spójności marki. Rozważ przerwy stron dla dokumentów wielostronicowych i odpowiednie marginesy dla profesjonalnego wyglądu.

Jak skonfigurować Program.cs do renderowania PDF w trybie headless?

W Program.cs dodaj ten kod. Wykorzystuje RenderAsync z Razor.Templating.Core do konwersji widoków Razor do HTML, a następnie instancjonuje ChromePdfRenderer i przekazuje HTML do RenderHtmlAsPdf. Użyj RenderingOptions dla tekstu niestandardowego, nagłówków, stopek, marginesów i numerów stron.

app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
Imports IronPdf
Imports Microsoft.AspNetCore.Builder

app.MapGet("/PrintPdf", Async Function()
    ' Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

    ' Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All

    ' Render the Razor view to an HTML string
    Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")

    ' Create a new instance of ChromePdfRenderer 
    Dim renderer As New ChromePdfRenderer()

    ' Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4
    renderer.RenderingOptions.MarginTop = 25
    renderer.RenderingOptions.MarginBottom = 25
    renderer.RenderingOptions.MarginLeft = 20
    renderer.RenderingOptions.MarginRight = 20

    ' Render the HTML string as a PDF document
    Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")

    ' Return the PDF file as a response
    Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
$vbLabelText   $csharpLabel

Jakie opcje renderowania mogę zastosować do moich PDF?

IronPDF zapewnia rozległe opcje renderowania. Dodaj nagłówki i stopki, ustaw niestandardowe rozmiary papieru, kontroluj orientację stron i dodaj znaki wodne. ChromePdfRenderer oferuje ponad 50 właściwości umożliwiających dostosowanie generowania plików PDF.

Jak radzić sobie z błędami podczas generowania PDF?

Implementuj obsługę błędów dla solidnego generowania PDF:

try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
Imports IronPdf
Imports System.Threading.Tasks

Public Class PdfGenerator
    Public Shared Async Function GeneratePdfAsync() As Task(Of IResult)
        Try
            Dim html = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")
            Dim renderer = New ChromePdfRenderer()
            Dim pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot")
            Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
        Catch ex As Exception
            ' Log the error details
            IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}")
            Return Results.Problem("Failed to generate PDF", statusCode:=500)
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Kiedy powinienem włączyć szczegółowe logowanie?

Włącz szczegółowe logowanie podczas rozwoju i rozwiązywania problemów. Logowanie IronPDF dostarcza wgląd w renderowanie, pomagając zidentyfikować problemy z parsowaniem HTML, ładowaniem zasobów lub konfiguracją. Dla produkcji używaj niestandardowego logowania do integracji z infrastrukturą logowania aplikacji.

Dłączego muszę zmieniać ścieżki linków do zasobów?

Przejdź do Widoki > Udostępnione > _Layout.cshtml. W tagach linków należy zmienić "~/" na "./", ponieważ "~/" nie działa poprawnie z IronPDF.

Na jakie inne problemy związane ze ścieżkami powinienem zwrócić uwagę?

Oprócz problemu ze ścieżką tyldy (~), upewnij się, że źródła obrazów używają ścieżek absolutnych lub prawidłowych odniesień względnych. Dla zewnętrznych zasobów używaj podstawowych adresów URL do zapewnienia prawidłowego ładowania zasobów. Dla obrazów z Azure Blob Storage zobacz osadzanie obrazów z Azure Blob Storage.

Jak statyczne zasoby wpływają na generowanie PDF?

Statyczne zasoby (CSS, JavaScript, obrazy) wpływają na wydajność i jakość generowania PDF. Upewnij się, że zasoby są dostępne podczas renderowania, używaj zoptymalizowanych obrazów i rozważ osadzanie krytycznego CSS inline dla szybszego renderowania. Dowiedz się o opóźnieniach renderowania i limitach czasowych dla treści z dużą ilością JavaScript.

Jak przetestować moje generowanie PDF bez interfejsu?

Uruchom projekt, aby wygenerować dokument PDF.

Visual Studio showing running ASP.NET Core MVC app with Program.cs open and successful debug output

Wynik w formacie PDF

Jak powinien wyglądać mój końcowy PDF?

Twój PDF powinien zachować formatowanie całego widoku Razor—struktury tabel, czcionki, kolory i układ. Powinien być odpowiednio dostosowany z czystymi marginesami i profesjonalnym wyglądem. Aby zweryfikować jakość wyników, użyj funkcji rasteryzacji IronPDF do podglądu stron jako obrazów.

Jak mogę rozwiązywać typowe problemy z renderowaniem PDF?

Typowe problemy to brakujące style, uszkodzone układy lub niekompletna treść. Włącz szczegółowe logowanie, zweryfikuj ścieżki zasobów i upewnij się, że HTML jest prawidłowo walidowany. Dla skomplikówanych układów użyj narzędzi do debugowania Chrome do podglądu HTML przed konwersją. Dla specyficznych problemów z renderowaniem użyj opóźnień WaitFor, aby zapewnić załadowanie treści przed renderowaniem.

Gdzie mogę pobrać kompletny działający przykład?

Pobierz kompletny kod jako spakowany projekt Visual Studio ASP.NET Core Web App (Model-View-Controller).

Kliknij tutaj, aby pobrać projekt.

Jakie są wymagania wstępne do uruchomienia przykładowego projektu?

Potrzebujesz Visual Studio 2019 lub nowszego z .NET 6.0 SDK lub wyższym. Projekt wymaga połączenia z internetem do przywrócenia pakietów NuGet. Przed uruchomieniem zaktualizuj klucz licencyjny IronPDF w Program.cs. Dla wdrożenia, przejrzyj przewodnik instalacji Windows dla dodatkowych wymagań.

Jak dostosować przykład do mojego przypadku użycia?

Przykład zapewnia podstawę dla twoich specyficznych potrzeb. Dodaj dynamiczne modele danych, implementuj buforowanie dla często generowanych PDF lub integruj z istniejącą autoryzacją. Dla zaawansowanych scenariuszy, eksploruj asynchroniczne generowanie PDF dla poprawy wydajności, lub zaimplementuj kompresję PDF do zmniejszenia rozmiaru plików. Dodaj podpisy cyfrowe dla autentyczności dokumentów lub ochronę hasłem dla wrażliwych dokumentów.

Często Zadawane Pytania

Jak przekonwertować widoki Razor do formatu PDF bez interfejsu graficznego w języku C#?

Użyj Razor.Templating.Core do konwersji plików cshtml na HTML, a następnie użyj metody RenderHtmlAsPdf biblioteki IronPDF do generowania plików PDF w trybie bezinterfejsowym. Ten dwuetapowy proces pozwala przekształcić widoki Razor w dokumenty PDF bez konieczności korzystania z graficznego interfejsu użytkownika lub okna przeglądarki.

Jaki jest najszybszy sposób na renderowanie widoku Razor do formatu PDF bez użycia interfejsu graficznego?

Najszybszym sposobem jest użycie dwóch linii kodu: najpierw przekonwertuj widok Razor na HTML za pomocą RazorTemplateEngine.RenderAsync, a następnie użyj metody IronPDF ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs(), aby utworzyć i zapisać plik PDF.

Dłączego warto używać Razor.Templating.Core zamiast IronPdf.Extensions.Razor?

Razor.Templating.Core zapewnia prawdziwe możliwości renderowania bezinterfejsowego, umożliwiając konwersję widoków Razor do formatu HTML bez kontekstu internetowego lub okna przeglądarki. Chociaż IronPdf.Extensions.Razor jest przydatny, do działania wymaga kontekstu internetowego, co sprawia, że Razor.Templating.Core lepiej nadaje się do usług działających w tle i aplikacji konsolowych.

Jakiego rodzaju projektu ASP.NET Core potrzebuję do generowania plików PDF w trybie headless?

Należy skorzystać z projektu aplikacji internetowej ASP.NET Core (Model-View-Controller), który zapewnia niezbędną infrastrukturę Razor View z elastycznymi opcjami wdrażania. Ta konfiguracja dobrze współpracuje z IronPDF w przypadku usług działających w tle, Azure Functions lub aplikacji konsolowych.

Jak zainstalować pakiety wymagane do konwersji Razor do formatu PDF?

Zainstaluj Razor.Templating.Core za pomocą menedżera pakietów NuGet, używając polecenia „Install-Package Razor.Templating.Core”. Będziesz również potrzebować zainstalowanego w projekcie IronPDF, aby obsłużyć etap konwersji HTML do PDF.

Czy mogę używać tego podejścia do generowania plików PDF bez interfejsu użytkownika w środowiskach chmurowych?

Tak, bezinterfejsowa konwersja Razor do PDF firmy IronPDF doskonale sprawdza się w środowiskach chmurowych, w tym Azure Functions, AWS Lambda i aplikacjach kontenerowych, dzięki czemu idealnie nadaje się do skalowalnych usług generowania dokumentów.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,926,724 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.