Jak konwertować widoki Razor na PDF bez interfejsu graficznego w C
Przekonwertuj widoki Razor na PDF w C# używając Razor.Templating.Core do przekształcania plików cshtml na HTML, a następnie użyj metody RenderHtmlAsPdf IronPDF, aby wygenerować dokumenty PDF bez potrzeby okna GUI lub przeglądarki.
Proces renderowania bez interfejsu graficznego przetwarza zawartość sieciową bez graficznego interfejsu użytkownika. Chociaż IronPdf.Extensions.Razor jest przydatny, brakuje mu możliwości renderowania bez interfejsu graficznego. Ten przewodnik zajmuje się tą luką.
Użyjemy Razor.Templating.Core do konwersji cshtml na HTML, a następnie IronPDF do generowania 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 wyrenderować HTML z widoków Razor na PDF. To podejście działa bezproblemowo w środowiskach ASP.NET Core.
-
Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf -
Skopiuj i uruchom ten fragment kodu.
var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf"); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do konwersji widoków Razor na PDF w ASP.NET Core Web App
- Utwórz nowy widok Razor i edytuj plik, aby wyświetlić dane
- Użyj metody
RenderAsyncdo konwersji z widoku Razor na HTML - Przekonwertuj HTML na PDF używając metody
RenderHtmlAsPdf - Pobierz przykładowy projekt, aby szybko rozpocząć pracę
Zainstaluj Razor.Templating.Core, aby konwertować widoki Razor na HTML w ASP.NET Core Web Apps.
# 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
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 należy użyć Razor.Templating.Core zamiast IronPdf.Extensions.Razor?
Razor.Templating.Core zapewnia prawdziwe renderowanie bez interfejsu—konwertuje widoki Razor na HTML bez kontekstu sieciowego lub okna przeglądarki. To pasuje do usług w tle, aplikacji konsolowych lub środowisk bez interfejsu użytkownika. IronPdf.Extensions.Razor wymaga kontekstu sieciowego 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. Należy użyć tego podejścia w usługach w tle, funkcjach Azure lub aplikacjach konsolowych. Więcej informacji zawiera artykuł wdrażanie IronPDF na Azure.
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" />
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".
Jaką treść HTML należy dodać do mojego widoku Razor?
Dodaj HTML, który ma zostać wyrenderowany 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>
Dla skomplikowanych 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.
Dlaczego 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 bez interfejsu?
W "Program.cs" dodaj ten kod. Używa RenderAsync z Razor.Templating.Core do konwersji widoków Razor na HTML, a następnie instancuje ChromePdfRenderer i przekazuje HTML do RenderHtmlAsPdf. Użyj RenderingOptions dla niestandardowego tekstu, 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)
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 do dostosowania generacji 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
Kiedy należy włączyć szczegółowe logowanie?
Szczegółowe logowanie należy włączyć podczas tworzenia aplikacji i rozwiązywania problemów. Logowanie IronPDF dostarcza wglądu w renderowanie, pomagając zidentyfikować problemy z parsowaniem HTML, ładowaniem zasobów lub konfiguracją. W środowisku produkcyjnym należy korzystać z niestandardowego logowania do integracji z infrastrukturą logowania aplikacji.
Dlaczego należy zmieniać ścieżki linków do zasobów?
Należy przejść do Views > Shared > "_Layout.cshtml". W etykietach link zmień "~/" na "./", ponieważ "~/" nie działa dobrze z IronPDF.
Na jakie inne problemy związane ze ścieżkami należy 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.
Wynik w formacie PDF
Jak powinien wyglądać mój końcowy PDF?
Wygenerowany 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, należy użyć 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 skomplikowanych 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?
Wymagany jest Visual Studio 2019 lub nowszy z .NET 6.0 SDK lub wyższym. Projekt wymaga połączenia z internetem do przywracania pakietów NuGet. Przed uruchomieniem należy zaktualizować klucz licencyjny IronPDF w Program.cs. Przy wdrożeniu warto przejrzeć przewodnik instalacji Windows.
Jak dostosować przykład do własnego przypadku użycia?
Przykład stanowi podstawę do rozbudowy. Można dodać dynamiczne modele danych, zaimplementować buforowanie dla często generowanych PDF lub zintegrować z istniejącą autoryzacją. W zaawansowanych scenariuszach warto zbadać asynchroniczne generowanie PDF w celu poprawy wydajności lub zaimplementować kompresję PDF do zmniejszenia rozmiaru plików. Można też dodać podpisy cyfrowe 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.
Dlaczego 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, funkcji Azure 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.

