Jak przekonwertować HTML na PDF w C# (Przewodnik dla programistów)
Konwersja HTML na PDF w C# często wydaje się prosta, dopóki nie pojawią się rzeczywiste wymagania. Programiści szybko napotykają ograniczenia wpływające na dokładność renderowania, wdrażanie i skalowalność.
Poza renderowaniem, zgodność z infrastrukturą staje się kluczowa. Zespoły muszą zapewnić, że generowanie PDF działa we współczesnych środowiskach .NET, platformach chmurowych oraz kontenerowych bez kompromisów w wydajności.
Aby odpowiedzieć na te luki, nowoczesne rozwiązania oparte na Chrome, takie jak IronPDF, zapewniają wyższą wierność renderowania, szersze wsparcie platform oraz gotowe do produkcji przepływy wdrażania - omówione krok po kroku w reszcie tego przewodnika.
Skrócona instrukcja: Przewodnik szybkiego startu, jak przekonwertować HTML na PDF
Możesz łatwo przekonwertować HTML na PDF w C# używając biblioteki IronPDF, która dostarcza metodę ChromePdfRenderer.RenderHtmlAsPdf do tworzenia wysokiej jakości plików PDF z HTML, CSS i JavaScript.
-
Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf -
Skopiuj i uruchom ten fragment kodu.
IronPdf.ChromePdfRenderer .StaticRenderHtmlAsPdf("<p>Hello World</p>") .SaveAs("pixelperfect.pdf"); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
Po zakupie lub zarejestrowaniu się na 30-dniowy okres próbny IronPDF, znajdź klucz licencyjny wysłany na twój e-mail. Dodaj klucz licencyjny na początku swojej aplikacji.
IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "KEY"
Dlaczego programiści .NET potrzebują konwertera HTML na PDF dla C#
IronPDF korzysta z wbudowanego mechanizmu renderującego Google Chromium, aby zapewnić wysoką wierność konwersji, dokładnie zachowując układ i stylizację treści webowych.
✅ Solidny silnik renderowania Chrome: Silnik Blink Chrome dla dokładnej konwersji HTML na PDF, teraz ulepszony o poprawki dotyczące pamięci, formularzy oraz dokładności renderowania (v2025.9.4)
✅ Precyzja na poziomie pikseli: Generowane PDFy dokładnie odzwierciedlają strony webowe, a nie wersje przyjazne dla drukarki. Niedawne poprawki dotyczą przycinania nagłówków i stopki, zachowania tekstu w odcieniach szarości oraz specjalnych znaków/emoji w metadanych (od wersji v2025.9.4)
✅ Pełne wsparcie dla nowoczesnej sieci: Wsparcie dla pełnego CSS3, HTML5, JavaScript dla wszystkich elementów HTML. Niedawne ulepszenia obejmują obsługę pól formularzy dla długich obszarów tekstowych i pól wyboru.
✅ 5-20x wzrost wydajności: Zdecydowanie szybsze niż automatyzacja przeglądarki czy sterowniki webowe, teraz z poprawkami wycieków pamięci i zmniejszonymi rozmiarami plików dla powtarzających się elementów jak pieczątki/nagłówki w operacjach wsadowych.
✅ Zgodność z PDF/UA: Dostępne generowanie PDF, które spełnia normy Sekcji 508, ulepszone dla renderowania formularzy cross-platform (np. Linux).
✅ Brak zewnętrznych zależności: Brak plików wykonywalnych do zainstalowania na serwerach
✅ Zaprojektowane dla C#, F# i VB.NET działających na .NET 10, 9, 8, 7, 6, Core, Standard lub Framework
IronPDF upraszcza proces dla programistów .NET, oferując prostą i wydajną metodę generowania profesjonalnie wyglądających dokumentów PDF z HTML aplikacji webowych. Od faktur i raportów po certyfikaty i archiwa, programiści mogą korzystać z dobrze znanej stosu webowego, podczas gdy IronPDF obsługuje złożoność w zaledwie kilku linijkach kodu.
RELATED: IronPDF Changelog: Updates, milestones, roadmap
Czego się nauczysz
-
Jak używać zaawansowanych funkcji generowania i bezpieczeństwa PDF
- Rozwiązywanie problemów i wsparcie techniczne
1. Jak przekonwertować HTML do PDF w C
Niezależnie od tego, czy pracujesz z stringami HTML, URL-ami, czy plikami HTML, IronPDF oferuje elastyczne opcje generowania wysokiej jakości dokumentów PDF spełniających twoje konkretne wymagania.
W tym tutorialu przeprowadzimy cię przez najczęstsze scenariusze, w tym konwersję stringu HTML na PDF, URL-a na PDF, i pliku HTML na PDF. Ponadto, IronPDF oferuje również różnorodne operacje manipulacji dokumentami PDF:
| Wszechstronna konwersja PDF | Dynamiczna konwersja stron webowych na PDF |
|---|---|
Jak przekonwertować string HTML na PDF
Najbardziej podstawową operacją jest konwersja stringu HTML na PDF. Ta metoda jest doskonała dla dynamicznie generowanych treści HTML. Metoda RenderHtmlAsPdf w pełni obsługuje HTML5, CSS3, JavaScript oraz obrazy podczas konwersji HTML bezpośrednio na PDF.
using IronPdf;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
using IronPdf;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
Imports IronPdf
' Create the Chrome renderer
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Save the PDF
pdf.SaveAs("output.pdf")
Gdy twój string HTML odnosi się do lokalnych zasobów, takich jak obrazy czy arkusze stylów, używaj parametru BaseUrlPath, aby prawidłowo przekonwertować treść HTML ze wszystkimi zasobami:
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML content with local image and CSS references
string html = @"
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>";
// Set base path for resolving relative URLs in HTML to PDF conversion
var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");
pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML content with local image and CSS references
string html = @"
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>";
// Set base path for resolving relative URLs in HTML to PDF conversion
var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML content with local image and CSS references
Dim html As String = "
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>"
' Set base path for resolving relative URLs in HTML to PDF conversion
Dim pdf = renderer.RenderHtmlAsPdf(html, "C:\MyProject\Assets\")
pdf.SaveAs("report.pdf")
RELATED HOW-TO ARTICLE: How to Convert HTML String to PDF in C#
Jak wyeksportować istniejący URL do PDF
Renderowanie całych stron internetowych do PDF z C# umożliwia zespołom oddzielenie projektu PDF od renderowania backendu. To podejście pozwala na konwersję dowolnego określonego URL bezpośrednio do formatu PDF.
CSS dla Drukowania vs Ekran
Możesz skonfigurować IronPDF do renderowania z użyciem dowolnego typu mediów CSS.
using IronPdf;
using IronPdf.Rendering;
// Initialize HTML to PDF converter
var renderer = new ChromePdfRenderer();
// Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Screen media type shows the entire web page as displayed on screen
using IronPdf;
using IronPdf.Rendering;
// Initialize HTML to PDF converter
var renderer = new ChromePdfRenderer();
// Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Screen media type shows the entire web page as displayed on screen
Imports IronPdf
Imports IronPdf.Rendering
' Initialize HTML to PDF converter
Dim renderer As New ChromePdfRenderer()
' Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Screen media type shows the entire web page as displayed on screen
Wsparcie JavaScript
IronPDF w pełni obsługuje JavaScript, jQuery, a nawet AJAX podczas konwersji HTML na PDF. Dla dynamicznych treści HTML możesz skonfigurować IronPDF, aby czekał na zakończenie JavaScript przed renderowaniem stron webowych w PDF. Jest to idealne dla jednorożnych aplikacji internetowych i dynamicznych witryn.
using IronPdf;
// Configure JavaScript rendering for dynamic HTML content to PDF
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = true;
// WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
using IronPdf;
// Configure JavaScript rendering for dynamic HTML content to PDF
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = true;
// WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
Imports IronPdf
' Configure JavaScript rendering for dynamic HTML content to PDF
Dim renderer As New ChromePdfRenderer()
' Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = True
' WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay = 500 ' milliseconds
Wykonywanie JavaScriptu można również zobaczyć przy renderowaniu zaawansowanej wizualizacji d3.js z witryny do PDF.
using IronPdf;
// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();
// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");
using IronPdf;
// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();
// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");
Imports IronPdf
' Create renderer for JavaScript-heavy HTML
Dim renderer As New ChromePdfRenderer()
' Convert d3.js visualization web page to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")
' Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf")
CSS Responsywny
Jako że responsywne strony internetowe są zaprojektowane do oglądania w przeglądarce, a IronPDF nie otwiera prawdziwego okna przeglądarki w systemie operacyjnym serwera, responsywne elementy HTML mogą być renderowane w najmniejszym rozmiarze. PdfCssMediaType.Print jest zalecane, aby nawigować ten problem podczas renderowania całych stron internetowych.
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
```vbnet
' Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
```
RELATED HOW-TO ARTICLE: How to Render URL to PDF
Jak przekonwertować plik HTML na PDF
Konwersja lokalnych plików HTML na PDF zachowuje wszystkie względne zasoby, w tym CSS, obrazy i JavaScript, jakby były otwarte przy użyciu protokołu file://. Metoda ta jest najlepsza do konwersji szablonów lub wstępnie zaprojektowanych stron HTML na dokumenty PDF.
using IronPdf;
// Initialize ChromePdfRenderer for HTML file conversion
var renderer = new ChromePdfRenderer();
// Convert HTML file to PDF documents
// Preserves all relative paths and linked resources in HTML
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
// Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf");
// All CSS, JavaScript, and images load correctly in the generated PDF
using IronPdf;
// Initialize ChromePdfRenderer for HTML file conversion
var renderer = new ChromePdfRenderer();
// Convert HTML file to PDF documents
// Preserves all relative paths and linked resources in HTML
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
// Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf");
// All CSS, JavaScript, and images load correctly in the generated PDF
Imports IronPdf
' Initialize ChromePdfRenderer for HTML file conversion
Dim renderer As New ChromePdfRenderer()
' Convert HTML file to PDF documents
' Preserves all relative paths and linked resources in HTML
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
' Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf")
' All CSS, JavaScript, and images load correctly in the generated PDF
RELATED HOW-TO Article: Render HTML File to PDF
Jak przekonwertować strony Razor na PDF
Jeśli twój projekt ASP.NET Core już używa stron Razor, możesz je bezpośrednio przekonwertować na PDF bez przebudowywania HTML. Rozszerzenie Razor w IronPDF dodaje metodę RenderRazorToPdf, która pobiera twoją stronę .cshtml — razem z modelem i układem — i renderuje ją jako dokument PDF w jednym wywołaniu.
PM > Install-Package IronPdf.Extensions.Razor
PM > Install-Package IronPdf.Extensions.Razor
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Render a Razor Page directly to PDF
Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
RELATED HOW-TO Article: How to Convert CSHTML to PDF in Razor Pages
Jak przekonwertować widoki MVC na PDF
Zespoły używające wzorca MVC mogą generować PDF-y bezpośrednio z swoich istniejących Widoków i kontrolerów. Zainstaluj pakiet rozszerzeń MVC Core, a następnie wywołaj RenderRazorViewToPdf z ścieżką widoku i modelem — IronPDF obsługuje potok renderowania Razor i generuje gotowy PDF.
Jest to szczególnie przydatne dla raportów, faktur i wszelkich stron, gdzie HTML już został zaprojektowany i przetestowany w przeglądarce. Generowany PDF zachowuje pełną treść Widoku, włącznie z stronami układu i widokami cząstkowymi.
PM > Install-Package IronPdf.Extensions.Mvc.Core
PM > Install-Package IronPdf.Extensions.Mvc.Core
Najpierw zarejestruj usługę IRazorViewRenderer w swoim Program.cs, aby kontrolery mogły ją wstrzyknąć:
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
Imports IronPdf.Extensions.Mvc.Core
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()
' Register the Razor view renderer for IronPDF
builder.Services.AddSingleton(Of IHttpContextAccessor, HttpContextAccessor)()
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
Następnie w działaniu kontrolera wstrzyknij renderer i przekonwertuj dowolny widok na PDF:
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
Imports IronPdf
Imports IronPdf.Extensions.Mvc.Core
Dim renderer As New ChromePdfRenderer()
' Render an MVC View with model data to PDF
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Report.cshtml", reportModel)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
RELATED HOW-TO Article: How to Convert Views to PDF in ASP.NET Core MVC
2. Jak skonfigurować ustawienia HTML na PDF
Jeśli chodzi o manipulację dokumentami PDF, IronPDF oferuje szerokie możliwości dostosowywania poprzez właściwość ChromePdfRenderer.RenderingOptions dla renderowanych PDF-ów.
| Ustawienia | Opis | Przykład |
|---|---|---|
| PaperSize | Ustaw wymiary strony dla istniejących PDF-ów (A4, Letter, Legal, itp.) | `PdfPaperSize.A4` |
| PaperOrientation | Ustaw Orientację pionową lub poziomą dla istniejących PDF-ów | `PdfPaperOrientation.Landscape` |
| MarginTop/Bottom/Left/Right | Ustaw marginesy stron w milimetrach (domyślnie: 25 mm) | |
| CssMediaType | CSS dla Ekranu lub Drukowania dla HTML na PDF | `PdfCssMediaType.Print` |
| PrintHtmlBackgrounds | Uwzględnij kolory tła i obrazy (domyślnie: true) | true |
| EnableJavaScript | Wykonaj JavaScript przed renderowaniem treści HTML | true |
| WaitFor.RenderDelay | Czas oczekiwania na dynamiczną treść HTML (ms) | 500 |
Zobacz ten fragment kodu dla pełnego przykładu konfiguracji manipulacji dokumentami PDF:
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
' Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Generate PDFs with all settings applied to HTML content
Dim htmlContent As String = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdfDocument.SaveAs("styled-output.pdf")
POWIĄZANE ARTYKUŁY INSTRUKTAŻOWE:
| Dostosuj konwersję PDF | Doprecyzuj układ PDF |
|---|---|
Jak ustawić niestandardowe nagłówki HTTP, ciasteczka i dane logowania
Podczas renderowania URL-ów, które wymagają uwierzytelnienia lub konkretnej metadanych żądania, IronPDF pozwala na dołączenie danych logowania, ciasteczek sesyjnych i nagłówków HTTP z żądaniem. To umożliwia renderowanie pulpitów intranetowych, raportów ograniczonych dostępu lub generowanych przez API stron bez potrzeby samodzielnego pobierania HTML.
Dla podstawowego lub NTLM uwierzytelnienia ustaw obiekt LoginCredentials na rendererze. Dla dostępów opartych na tokenach lub sesjach, prześlij ciasteczka i nagłówki poprzez RenderingOptions przed wywołaniem RenderUrlAsPdf.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword"
}
' Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies("sessionId") = "abc123"
' Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report")
pdf.SaveAs("quarterly-report.pdf")
POWIĄZANE ARTYKUŁY INSTRUKTAŻOWE: Render PDFs Behind Login Authentication | Custom HTTP Request Headers
Jak skonfigurować proxy dla renderowania PDF
Podczas renderowania HTML, który ładuje zasoby zewnętrzne za korporacyjnym proxy, przekaż adres proxy jako trzeci parametr na RenderHtmlAsPdf(). To jest parametr metody, nie właściwość ChromePdfRenderOptions — więc jest ustawiane dla każdego wywołania renderowania, a nie na instancji renderera.
Dla uwierzytelnionych proxy, osadź dane logowania bezpośrednio w URL używając formatu http://user:pass@host:port. Specjalne znaki w hasłach zakoduj w URL za pomocą Uri.EscapeDataString().
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Proxy is the third parameter — not a render option
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath:=Nothing,
proxy:="http://proxy.corp.local:8080"
)
pdf.SaveAs("proxied-report.pdf")
Zauważ, że RenderUrlAsPdf() nie akceptuje parametru proxy. Aby renderować żywy URL za proxy, najpierw pobierz HTML za pomocą HttpClient skonfigurowanego z WebProxy, a potem przekaż go do RenderHtmlAsPdf() z parametrem proxy dla ładowania zasobów.
RELATED HOW-TO Article: How to Configure Proxy Servers for PDF Rendering
3. Jak używać zaawansowanych funkcji generowania i bezpieczeństwa PDF
Odblokuj możliwości na poziomie Enterprise dla konwersji HTML na PDF z zaawansowanym szablonowaniem, operacjami asynchronicznymi i funkcjami bezpieczeństwa. Te metody manipulacji PDF umożliwiają tworzenie dokumentów PDF na dużą skalę, ochronę poufnych plików PDF oraz zapewnienie autentyczności dokumentu podczas konwersji HTML na profesjonalny format PDF.
Jak generować szablon HTML dla wsadowego tworzenia PDF
Podstawowe wsadowe tworzenie PDF
Tworzenie wsadowego PDF jest kluczowe dla efektywnego generowania wielu spersonalizowanych dokumentów PDF. Dla podstawowych scenariuszy, metoda String.Format w C# najlepiej nadaje się do prostej manipulacji PDF.
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
' Simple HTML templating with String.Format
Dim htmlTemplate As String = String.Format("<h1>Hello {0}!</h1>", "World")
' Results in HTML content: <h1>Hello World!</h1>
Dla dłuższych szablonów, kiedy potrzebujesz generować dokumenty PDF, użyj zamiany symboli zastępczych w treści HTML: using IronPdf;
// Define reusable HTML template for PDF files
var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";
// Customer names for batch PDF conversion processing
var names = new[] { "John", "James", "Jenny" };
// Create personalized PDF documents for each customer
var renderer = new ChromePdfRenderer();
foreach (var name in names)
{
// Replace placeholder with actual data in HTML string
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
// Generate personalized PDF document from HTML content
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
// Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf");
}
// Define reusable HTML template for PDF files
var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";
// Customer names for batch PDF conversion processing
var names = new[] { "John", "James", "Jenny" };
// Create personalized PDF documents for each customer
var renderer = new ChromePdfRenderer();
foreach (var name in names)
{
// Replace placeholder with actual data in HTML string
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
// Generate personalized PDF document from HTML content
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
// Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf");
}
' Define reusable HTML template for PDF files
Dim htmlTemplate As String = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"
' Customer names for batch PDF conversion processing
Dim names As String() = {"John", "James", "Jenny"}
' Create personalized PDF documents for each customer
Dim renderer As New ChromePdfRenderer()
For Each name In names
' Replace placeholder with actual data in HTML string
Dim htmlInstance As String = htmlTemplate.Replace("[[NAME]]", name)
' Generate personalized PDF document from HTML content
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
' Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf")
Next
Szablonowanie HTML do PDF z Handlebars.NET
Dla złożonych szablonów z pętlami i warunkami, gdy konwertujesz HTML na PDF, użyj zaawansowanego szablonowania z Handlebars.NET, aby generować dokumenty PDF z dynamiczną treścią HTML.
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Package Handlebars.NET
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Package Handlebars.NET
using HandlebarsDotNet;
using IronPdf;
// Define Handlebars template with placeholders for HTML content
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile template for reuse in PDF conversion
var template = Handlebars.Compile(source);
// Create data object (can be database records) for HTML to PDF directly
var data = new {
title = "Monthly Report",
body = "Sales increased by 15% this month."
};
// Merge template with data to create HTML content
var htmlResult = template(data);
// Convert templated HTML to PDF using the PDF converter
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlResult);
pdf.SaveAs("monthly-report.pdf");
using HandlebarsDotNet;
using IronPdf;
// Define Handlebars template with placeholders for HTML content
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile template for reuse in PDF conversion
var template = Handlebars.Compile(source);
// Create data object (can be database records) for HTML to PDF directly
var data = new {
title = "Monthly Report",
body = "Sales increased by 15% this month."
};
// Merge template with data to create HTML content
var htmlResult = template(data);
// Convert templated HTML to PDF using the PDF converter
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlResult);
pdf.SaveAs("monthly-report.pdf");
Imports HandlebarsDotNet
Imports IronPdf
' Define Handlebars template with placeholders for HTML content
Dim source As String =
"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile template for reuse in PDF conversion
Dim template = Handlebars.Compile(source)
' Create data object (can be database records) for HTML to PDF directly
Dim data = New With {
.title = "Monthly Report",
.body = "Sales increased by 15% this month."
}
' Merge template with data to create HTML content
Dim htmlResult = template(data)
' Convert templated HTML to PDF using the PDF converter
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlResult)
pdf.SaveAs("monthly-report.pdf")
RELATED HOW-TO ARTICLE: Learn more about Handlebars.NET on GitHub
Kontrola podziałów stron PDF:
Zarządzanie paginacją w generowanych dokumentach PDF zapewnia profesjonalne, czytelne układy podczas konwersji fragmentów HTML. Użyj CSS, aby kontrolować, gdzie strony się załamują w plikach PDF.<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>Page 1 Content</h1>
</div>
<div class="page">
<h1>Page 2 Content</h1>
</div>
<div class="page">
<h1>Page 3 Content</h1>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>Page 1 Content</h1>
</div>
<div class="page">
<h1>Page 2 Content</h1>
</div>
<div class="page">
<h1>Page 3 Content</h1>
</div>
</body>
</html>
Jak generować PDF metodą asynchroniczną
IronPDF zapewnia wydajność na poziomie Enterprise z pełnym wsparciem asynchronicznym i wielowątkowym dla potrzeb konwersji HTML na PDF, gdy potrzebujesz generować pliki PDF na dużą skalę.
using IronPdf;
using System.Threading.Tasks;
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> htmlTemplates)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlTemplates.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
using IronPdf;
using System.Threading.Tasks;
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> htmlTemplates)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlTemplates.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
Imports IronPdf
Imports System.Threading.Tasks
' Async method for non-blocking PDF generation from HTML content
Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte())
Dim renderer As New ChromePdfRenderer()
' Async HTML to PDF conversion preserves thread pool
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
' Return PDF files as byte array for web responses
Return pdf.BinaryData
End Function
' Concurrent batch PDF generation for multiple HTML strings
Public Async Function GenerateMultiplePdfsAsync(htmlTemplates As List(Of String)) As Task
Dim renderer As New ChromePdfRenderer()
' Create parallel conversion tasks to generate PDF documents
Dim tasks = htmlTemplates.Select(Function(html) renderer.RenderHtmlAsPdfAsync(html))
' Await all PDF conversions simultaneously
Dim pdfs = Await Task.WhenAll(tasks)
' Save generated PDF files from HTML content
For i As Integer = 0 To pdfs.Length - 1
pdfs(i).SaveAs($"document-{i}.pdf")
Next
End Function
- Używaj systemów 64-bitowych dla optymalnej wydajności generowania PDF.
- Zapewnij odpowiednie zasoby serwera, gdy generujesz dokumenty PDF (unikaj słabych darmowych poziomów)
- Daj wystarczająco RenderDelay dla złożonego JavaScriptu w treści HTML.
- Reużywaj instancji
ChromePdfRenderer, kiedy to możliwe. - Wykorzystaj poprawki pamięci v2025.9.4 dla operacji wsadowych/asynchronicznych, aby zredukować zużycie zasobów; testuj dla zmniejszonych rozmiarów plików z powtarzającymi się niestandardowymi nagłówkami/stopkami.
RELATED HOW-TO Article: How to Generate PDFs with Async and Multithreading
Jak dodać zaawansowane funkcje bezpieczeństwa
Jak dodać ochronę hasłem dla plików PDF w .NET
Zabezpieczaj poufne generowane dokumenty PDF hasłami i uprawnieniami podczas konwersji treści HTML na chroniony format PDF.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML to PDF with security
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");
// Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files
// Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint;
// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML to PDF with security
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");
// Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files
// Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint;
// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML to PDF with security
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>")
' Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123" ' Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456" ' Password to modify PDF files
' Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint
' Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256
pdf.SaveAs("secure-document.pdf")
Jak dodać podpisy cyfrowe do plików PDF
Dodaj podpisy kryptograficzne, aby zapewnić autentyczność dokumentu PDF, gdy generujesz pliki PDF z treści HTML.
using IronPdf;
using IronPdf.Signing;
var renderer = new ChromePdfRenderer();
// Generate PDF from HTML page
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");
// Create digital signature with certificate for PDF files
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "legal@company.com",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval",
SignerName = "Authorized Signer" // New property in v2025.8.8 for enhanced signature details
};
// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
using IronPdf;
using IronPdf.Signing;
var renderer = new ChromePdfRenderer();
// Generate PDF from HTML page
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");
// Create digital signature with certificate for PDF files
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "legal@company.com",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval",
SignerName = "Authorized Signer" // New property in v2025.8.8 for enhanced signature details
};
// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
Imports IronPdf
Imports IronPdf.Signing
Dim renderer As New ChromePdfRenderer()
' Generate PDF from HTML page
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>")
' Create digital signature with certificate for PDF files
Dim signature As New PdfSignature("certificate.pfx", "password") With {
.SigningContact = "legal@company.com",
.SigningLocation = "New York, NY",
.SigningReason = "Contract Approval",
.SignerName = "Authorized Signer" ' New property in v2025.8.8 for enhanced signature details
}
' Apply signature to PDF documents
pdf.Sign(signature)
pdf.SaveAs("signed-contract.pdf")
RELATED HOW-TO Article: Digitally Signing PDF Documents with C#
Jak konwertować formularze HTML na wypełnialne PDFy
Aby przekonwertować standardowe elementy formularzy HTML na interaktywne, wypełnialne pola formularzy PDF, włącz opcję renderowania CreatePdfFormsFromHtml. To zachowuje pola tekstowe, pola wyboru, radio buttony i menu rozwijane jako edytowalne pola w generowanym dokumencie PDF.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
string htmlForm = @"
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>";
var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
string htmlForm = @"
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>";
var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim htmlForm As String = "
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlForm)
pdf.SaveAs("onboarding-form.pdf")
name. Duplikaty nazw spowodują, że pola będą dzielić tę samą wartość w generowanym PDF, co prowadzi do niespodziewanych zachowań, gdy użytkownicy wypełniają formularz.RELATED HOW-TO Article: How to Create Fillable PDF Forms in C#
Jak konwertować określone elementy HTML na PDF
Aby renderować konkretną sekcję strony, a nie cały dokument, odizoluj docelowy element przed renderowaniem. Najbardziej bezpośrednie podejście wykorzystuje opcję renderingu JavaScript, aby zastąpić treść dokumentu treścią docelowego elementu, w połączeniu z WaitFor.HtmlQuerySelector(), aby upewnić się, że element istnieje przed ekstrakcją. Fragment poniżej zachowuje document.head, aby style i czcionki były przenoszone — bez tego kroku, zasady CSS opierające się na selektorach przodków zostałyby utracone w wyodrębnionym PDF.
Dla scenariuszy po stronie serwera, gdzie masz dostęp do surowego HTML, wyodrębnij docelowy fragment za pomocą parsera jak AngleSharp i przekaż go do RenderHtmlAsPdf() — bez potrzeby wykonywania JavaScriptu.
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
// Replace the body with only the target element
renderer.RenderingOptions.JavaScript = @"
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
";
// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);
var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
// Replace the body with only the target element
renderer.RenderingOptions.JavaScript = @"
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
";
// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);
var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
' Replace the body with only the target element
renderer.RenderingOptions.JavaScript = "
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
"
' Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000)
Dim pdf = renderer.RenderHtmlAsPdf(fullPageHtml)
pdf.SaveAs("invoice-summary.pdf")
RELATED HOW-TO Article: How to Convert HTML Elements and Partial Pages to PDF
Jak przekształcać uwierzytelnione strony na PDF
Istnieją trzy mechanizmy do renderowania stron za uwierzytelnianiem: dane logowania sieciowego, niestandardowe ciasteczka i nagłówki żądań HTTP. To pokrywa najczęstsze scenariusze uwierzytelniania podczas konwersji chronionych treści webowych na PDF.
Dane logowania
Użyj ChromeHttpLoginCredentials dla uwierzytelnienia podstawowego, rozpoznawania lub NTLM podczas konwersji chronionych URL do PDF.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword",
AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword",
AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Configure network authentication
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword",
.AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
}
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports")
pdf.SaveAs("authenticated-report.pdf")
Ciasteczka i nagłówki HTTP
Dla uwierzytelnienia oparte na tokenach lub sesjach, dołącz niestandardowe ciasteczka i nagłówki HTTP bezpośrednio do żądania renderowania.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";
// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";
// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Add session cookies
renderer.RenderingOptions.CustomCookies("sessionId") = "abc123token"
renderer.RenderingOptions.CustomCookies("authToken") = "bearer-xyz"
' Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard")
pdf.SaveAs("dashboard.pdf")
HttpClient do uwierzytelnienia najpierw, a następnie przekaż otrzymane ciasteczka do słownika CustomCookies dla renderowania chronionej strony.RELATED HOW-TO Article: How to Convert HTML Behind Login Authentication to PDF
4. Jak wdrożyć HTML na PDF na platformach chmurowych
Wdrażanie konwersji HTML na PDF w środowiskach chmurowych wymaga specyficznej konfiguracji dla renderowania bezgłowego, tymczasowych ścieżek plików i przydziału zasobów. Aby zadawaliśmy kluczowe zagadnienia dotyczące wdrożeń w popularnych platformach chmurowych i w kontenerach z IronPDF.
| Platforma | Min Zasoby | Pakiet | AutoConfig | Tymczasowa Ścieżka | Kluczowy Problem |
|---|---|---|---|---|---|
| Usługa aplikacji Azure | Poziom B1 (Podstawowy) | IronPdf.Linux |
true
|
/tmp | Poziomy Darmowy/Współdzielony zawodzą — brak GPU, mała pamięć |
| Funkcje Azure (Windows) | Poziom B1 | IronPdf |
true
|
/tmp | Odznacz "Uruchom z pliku pakietu" |
| AWS Lambda | 512 MB / 330s limit czasu | IronPdf.Linux |
true
|
/tmp (wymagane) | Domyślny system plików jest tylko do odczytu |
| Docker (Ubuntu/Debian) | Zależne od obrazu | IronPdf.Linux |
false
|
Domyślny obraz |
Ustaw false — Dockerfile zarządza zależnościami
|
Jak wdrożyć na Azure
Podczas wdrażania na Funkcjach Azure lub Usłudze App, wyłącz akcelerację GPU i zapewnij, że twoja warstwa hostingowa dostarcza wystarczającą pamięć dla renderowania opartego na Chrome. Dodaj te ustawienia podczas uruchamiania aplikacji, przed wszelkimi wywołaniami renderowania.
Piaskownice Azure działają bezgłowo bez dostępu do GPU, a poziomy darmowe/współdzielone (F1, D1) brakuje zasobów wymaganych przez Chrome. Celuj w Poziom B1 (Podstawowy) lub wyższy.
using IronPdf;
// Azure sandboxes block GPU access — always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
using IronPdf;
// Azure sandboxes block GPU access — always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
Imports IronPdf
' Azure sandboxes block GPU access — always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>")
pdf.SaveAs("azure-report.pdf")
RELATED GET-STARTED Guide: How to Deploy IronPDF on Azure
Jak wdrożyć na AWS Lambda
AWS Lambda wymaga wdrożenia opartego na Dockerze dla renderowania PDF opartego na Chrome. Domyślny system plików Lambda jest tylko do odczytu, więc wszystkie ścieżki tymczasowe i wdrożeniowe muszą wskazywać na /tmp.
Skonfiguruj te ustawienia na górze obsługiwacza funkcji, przed jakimikolwiek wywołaniami renderowania.
using Amazon.Lambda.Core;
using IronPdf;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
using Amazon.Lambda.Core;
using IronPdf;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
Imports Amazon.Lambda.Core
Imports IronPdf
Public Class PdfFunction
Public Function FunctionHandler(input As String, context As ILambdaContext) As String
' Lambda's only writable directory
Dim tmpPath As String = "/tmp/"
IronPdf.Installation.TempFolderPath = tmpPath
IronPdf.Installation.CustomDeploymentDirectory = tmpPath
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
context.Logger.LogLine("Rendering PDF...")
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(input)
' Save to /tmp before uploading to S3 or returning
Dim outputPath As String = $"{tmpPath}output.pdf"
pdf.SaveAs(outputPath)
Return outputPath
End Function
End Class
RELATED GET-STARTED Guide: How to Deploy IronPDF on AWS Lambda
Jak wdrożyć z Dockerem
Dla wdrożeń Dockera, użyj pakietu IronPdf.Linux NuGet, aby zmniejszyć rozmiar obrazu i uniknąć pobierania zasobów w czasie wykonywania. Ten pakiet zawiera wcześniej skompilowane binaria natywne dla Linuksa, zoptymalizowane dla środowisk kontenerowych.
Ustaw LinuxAndDockerDependenciesAutoConfig = false, gdy Twój Dockerfile już instaluje zależności bibliotek współdzielonych Chrome poprzez apt-get. Automatyczna instalacja w czasie wykonywania jest w tym przypadku zbędna i może powodować błędy uprawnień lub dłuższe zimne starty.
| Platforma | Pakiet | Konfiguracja kluczowa |
|---|---|---|
| Ubuntu 22.04 / Debian | IronPdf.Linux | Domyślnie – działa od razu po wyjęciu z pudełka |
| Alpine Linux | IronPdf.Linux | Zainstaluj chromium przez apk w Dockerfile |
| Amazon Linux 2 | IronPdf.Linux |
Użyj LinuxAndDockerDependenciesAutoConfig = true
|
| Kontenery Windows | IronPdf | Nie wymaga dodatkowej konfiguracji |
Minimalny wieloetapowy Dockerfile dla obrazu opartego na Ubuntu/Debian:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
libcairo2 libasound2 libxshmfence1 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
using IronPdf;
// Dependencies handled by Dockerfile apt-get — disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");
using IronPdf;
// Dependencies handled by Dockerfile apt-get — disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
' Dependencies handled by Dockerfile apt-get — disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = False
' No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>")
pdf.SaveAs("output.pdf")
RELATED GET-STARTED Guide: How to Use IronPDF with Docker
5. Porównanie IronPDF z innymi bibliotekami PDF dla .NET
IronPDF jest preferowanym rozwiązaniem dla wielu zespołów, jeśli chodzi o generowanie plików PDF w C# dzięki solidnemu silnikowi renderowania opartemu na Chromium, intuicyjnemu API i częstym ulepszeniom produktu. Porównajmy IronPDF z innymi konwerterami PDF, aby znaleźć najlepsze rozwiązanie dla Twoich potrzeb generowania PDF.
Szybka macierz decyzyjna: IronPDF versus inne konwertery PDF dla .NET
| Rozwiązanie | Kiedy używać | Najlepsze dla |
|---|---|---|
| IronPDF | Konwersja nowoczesnych stron internetowych/HTML do PDF z dokładnym wizualnym podobieństwem. | Aplikacje Enterprise wymagające niezawodnego silnika renderowania HTML, dynamicznych treści i profesjonalnego wsparcia. |
| wkhtmltopdf | Prosta konwersja HTML w aplikacjach niekrytycznych, gdzie przestarzałe renderowanie jest akceptowalne. | Podstawowe generowanie dokumentów z dziedzicznym HTML/CSS. |
| Syncfusion | Jeśli już zainwestowano w ekosystem Syncfusion lub uprawnione do bezpłatnej licencji dla społeczności. | Organizacje używające wielu komponentów Syncfusion. |
| Aspose.PDF | Skomplikowana manipulacja PDF, gdy jakość renderowania HTML jest mniej istotna. | Obszerne funkcje edycji PDF poza konwersją HTML. |
RELATED COMPARISONS:
Szczegółowe porównanie: IronPDF versus inne konwertery PDF .NET
| Funkcja | ★ ZalecaneIronPDF | wkhtmltopdf | iText 7 | Aspose.PDF | Syncfusion | Apryse | SelectPdf | Spire.PDF | PDFsharp | QuestPDF |
|---|---|---|---|---|---|---|---|---|---|---|
| Rendering & Conversion | ||||||||||
| Dokładność renderowania | Pixel-Perfect Najlepsze | Styl druku | Tylko programistyka | Dobrze | Dobrze | Dobrze | Dobrze | Niski poziom | Bez renderowania | Układ Code-First |
| Wsparcie HTML5 | Pełne | Przestarzałe | Dodatek | Częściowe | Pełne | Moduł | Pełne | Ograniczone | Nie | Nie (Code-First) |
| Wsparcie dla CSS3 | Pełne | Ograniczone | Dodatek | Częściowe | Pełne | Moduł | Pełne | Ograniczone | Nie | Nie (Code-First) |
| Wykonanie JavaScript | Pełne Najlepsze | Nie | Nie | Kwestionowane | Ograniczone | Ograniczone | Ograniczone | Bardzo ograniczone | Nie | Nie |
| HTML→PDF (Nowoczesny układ) | Wbudowane Chromium Najlepsze | Qt WebKit (Przestarzałe) | Płatny dodatek | Częściowe; JS Kwestionowane | Silnik Blink | Wymaga modułu | Pełne HTML→PDF | Oparte na obrazach | Nie | Nie jest rendererem HTML |
| Renderowanie PDF→Obraz | Tak | Nie | Osobny moduł | Osobny produkt | Tak | Tak | Nie | Ograniczone | Nie | Tylko własne dokumenty |
| Operacje na dokumentach | ||||||||||
| Generowanie PDF programistycznie | Tak | Nie | Tak | Tak | Tak | Tak | Tylko HTML | Tak | Podstawowe | Tak (Fluent API) |
| Merge, Split & Rearrange | Tak | Nie | Tak | Tak | Tak | Tak | Tak | Tak | Ograniczone | Tak |
| Nagłówki / Stopki / Numery stron | HTML/Tekst/Obraz Najlepsze | Ograniczone | Tak | Przez wydarzenia | Przez wydarzenia | Tak | Szablony | Podręcznik | Tylko ręcznie | Slot najwyższej klasy |
| Watermarks & Stamping | Tekst & Obraz | Nie | Tak | Tak | Tak | Tak | Tak | Ograniczone | Nie | Tak (Nakładki) |
| Wyodrębnianie tekstu z plików PDF | Tak | Nie | Tak | Tak | Tak | Tak | Tak | Tak | Podstawowe | Nie |
| OCR dla zeskanowanych PDF | Za pomocą IronOCR Zintegrowane | Nie | Dodatek | Osobny produkt | Dodatek | Dodatek | Nie | Sposób obejścia | Nie | Nie |
| Security & Compliance | ||||||||||
| Podpisy cyfrowe | Tak | Nie | Tak | Tak | Tak | Przykładowy kod | Tak | Nie | Nie | Nieudokumentowane |
| Zgodność z PDF/A | Tak (PDF/A-3B) | Nie | Pełny PDF/A | Walidacja & Tworzenie | Wymaga natywnego SDK | PDFACompliance | Nie | Tak | Ograniczone | PDF/A-2x & 3x |
| Platforma & Developer Experience | ||||||||||
| Wieloplatformowe | Windows · Linux · macOS Wszystkie 3 | Zależy od binariów | .NET Standard 2.0 | Dodatkowa konfiguracja Linuksa | Blink + Serwer .NET | SDK natywne | Tylko Windows * | Ograniczona dokumentacja Linuksa | Skoncentrowane na Windows | Win/Linux/macOS |
| Cloud & Docker Deploy | Azure · AWS · Docker Najlepsze | Skomplikowane; Dziedziczne | Wiele pakietów | Częściowe; Kontenery | Potrzebne dodatki Blink | Natywne zależności | Tylko Windows | Ograniczone informacje | Proste; Lekki | Docker/K8s; Lokalnie |
| Support & Dokumentacja | ||||||||||
| Dokumentacja | Obszerna + Kopiuj/Wklej Najlepsze | Częściowa dokumentacja CLI | Obszerna; KB | Szeroka; GitHub | Centrum pomocy | Katalog Cross-Language | Przewodniki na start | Przewodnik programowy | Przewodniki społecznościowe | Strukturalna + Aplikacja towarzysząca |
| Wsparcie dla deweloperów | 24/7 Inżynierowie Najlepsze | Tylko społeczność | Subskrypcja wliczona | Forum + Płatne | 24/5 Direct-Trac | Komercjalne | Forum + Email | Tylko społeczność | Społeczność + GitHub | |
| Licensing & Pricing | ||||||||||
| Model licencji | Wieczysta | Open Source | AGPL / Subskrypcja | Wieczysta | Subskrypcja roczna | Dostosowane / Według zużycia | Wieczysta | Subskrypcja roczna | Darmowe (MIT) | MIT Darmowe / Płatne poziomy |
| Cena wyjściowa | 9Wieczysta · 1 Deweloper | style="color:#16a34a">Darmowe | ~$45K/rokDostosowana oferta | $1,175+Na dewelopera | $995/rokSubskrypcja · Free <$1M | ~$9K+/rokDostosowana oferta | $499+Wieczysta | $999/rokSubskrypcja roczna | style="color:#16a34a">Darmowe | style="color:#16a34a">DarmoweWspólnota MIT
|
| Bezpłatna wersja próbna | 30 dni · Pełne funkcje Bez limitów | N/D (Darmowe) | 30 dni | Tak (Z watermarkiem) | Community <$1M Rev | Tak | Wspólnota (5 stron) | Darmowe (10 stron) | N/D (Darmowe) | N/A (MIT Free <$1M) |
| Przejrzystość cenowa | Opublikowana & Jasna Najlepsze | Open Source | Skomplikowane AGPL | Wiele poziomów | Skontaktuj się po wycenę | Brak opublikowanych cen | Opublikowana | Opublikowana | MIT; Bez ograniczeń | MIT; Oparte na zaufaniu |
Porównanie prawdziwego życia HTML do PDF: Renderowanie strony głównej Reddita
Aby ocenić jakość wyjściowego PDF, przetestowaliśmy te biblioteki na stronie głównej Reddita zawierającej dynamiczne treści webowe, nowoczesne CSS i elementy HTML JavaScript. Ta strona służy jako idealny przypadek testowy do generowania wyjściowego PDF.

IronPDF

IronPDF dostarcza pixel-perfect wyniki, zachowując całą dynamiczną zawartość webową, stylizację nowoczesnych czcionek webowych i elementy interaktywne dokładnie tak, jak są wyświetlane w Chrome, wszystko w zaledwie kilku liniach kodu.
Syncfusion

Syncfusion wyrenderowało PDF z większością brakujących sekcji i stylizacji, szczególnie dynamicznej zawartości. Początkowo zablokowany przez zabezpieczenia Reddita. Osiągnięcie lepszych wyników wymaga obszernego dostosowania wiersza poleceń, ale wyjściowy wciąż jest niekompletny.
Aspose.PDF

Aspose.PDF wymagał ręcznego pobrania HTML na początku (brak obsługi bezpośredniego URL). Po konwersji wyjściowy brakował właściwego formatowania i prawie wszystkich sekcji zawartości, czyniąc go nieodpowiednim dla nowoczesnego webu z dynamiczną zawartością.
wkhtmltopdf

wkhtmltopdf zakończył szybko, ale wyprodukował czystą, statyczną stronę z brakującą istotną zawartością, jak aktualizacje na żywo, elementy dynamiczne i interaktywne sekcje. To pokazuje niekompatybilność wkhtmltopdf z nowoczesnymi stronami opartymi na JavaScript.
Wnioski dotyczące wydajności i jakości wyjściowego PDF
.NET deweloperzy potrzebujący niezawodnego konwertera HTML do PDF, wybierają IronPDF ze względu na minimalny kod, łatwe w użyciu API i częste ulepszenia produktu.
W prawdziwym teście na treści webowej dostarczył najszybsze, najbardziej dokładne wyniki, podczas gdy Syncfusion pozostawało w tyle, Aspose wymagał dodatkowych kroków, a wkhtmltopdf brakowało nowoczesnych stylizacji. IronPDF oferuje najlepszą równowagę między szybkością, dokładnością i prostotą dla dzisiejszych procesów konwersji HTML do PDF.
Uwaga: Aspose, SyncFusion i wkhtmltopdf są znakami towarowymi ich właścicieli. Ta strona nie jest z nimi powiązana ani nie jest przez nie zatwierdzona. Wszystkie nazwy, logotypy i marki należą do ich właścicieli, a porównania są oparte na publicznie dostępnych informacjach w momencie pisania.
Podsumowanie
Ta instrukcja obejmowała wszystko, co potrzebne do konwersji HTML do PDF w .NET: od podstawowej konwersji ciągu do zaawansowanych funkcji, takich jak przetwarzanie asynchroniczne, cyfrowe podpisy i generowanie wsadowe. Demonstrowaliśmy trzy metody konwersji, niezbędne konfiguracje, zaawansowane funkcje i ustawienia bezpieczeństwa oraz porównaliśmy IronPDF z innymi bibliotekami poprzez testy w realnym świecie generowania dokumentów dynamicznych.
Podczas gdy konkurenci mieli problemy z nowoczesnymi stronami lub wymagały skomplikowanych obejść, IronPDF dostarczył nieskazitelne wyniki z minimalnym kodem i potężnym silnikiem renderowania.
Gotowy, aby uprościć swoje procesy PDF i doświadczyć wszechstronnej generacji PDF w zaledwie kilku liniach kodu? Zainstaluj IronPDF przez NuGet Pakiet Manager (lub wybierz Zarządzaj pakietem NuGet w Visual Studio) i skonwertuj swój pierwszy HTML do PDF już dziś.
Rozpocznij darmowy 30-dniowy okres próbny dla testów produkcyjnych bez znaków wodnych. Elastyczne licencjonowanie rozpoczyna się od $799 z przejrzystymi cenami zespołów, które skalują się z Twoimi potrzebami.
6. Rozwiązywanie problemów i wsparcie techniczne
Masz problem z poniższymi błędami w konwersji HTML na PDF? IronPDF oferuje całodobowe wsparcie inżynieryjne przez czat na https://ironpdf.com/
Szybkie Naprawy Najczęstszych Błędów
- Powolne pierwsze renderowanie? Normalne. Chrome inicjalizuje się w 2–3 sekundy, a następnie przyspiesza.
- Problemy z chmurą? Użyj co najmniej zasobów Azure B1 lub równoważnych.
- Brakujące zasoby? Ustaw ścieżki bazowe lub osadź jako base64.
- Brakujące elementy? Dodaj RenderDelay dla wykonania JavaScript.
- Problemy z pamięcią podczas renderowania? Zaktualizuj do wersji v2025.9.4, aby uzyskać poprawki w HTML do PDF, pieczęcie i nagłówki/stopki.
- Problemy z pola formularza (np. długie obszary tekstowe, checkboksy)? Naprawione w wersji v2025.7.17; zapewnij unikalne nazwy dla checkboksów.
- Zacinanie niestandardowych nagłówków/stopek lub uszkodzone znaki specjalne? Rozwiązane w wersji v2025.8.8; przetestuj zawijanie słów i metadane.
Uzyskaj Pomoc od Inżynierów, Którzy Stworzyli IronPDF, 24/7
- Kompletny przewodnik rozwiązywania problemów
- Strategie optymalizacji wydajności
- Wnioski o wsparcie inżynierskie
- Szybka lista kontrolna rozwiązywania problemów
Następne kroki
Często Zadawane Pytania
Jak przekonwertować HTML na PDF w języku C#?
Możesz konwertować HTML na PDF w C#, korzystając z biblioteki renderującej w Chrome, która zamienia HTML, CSS3 i JavaScript na pliki PDF o idealnej rozdzielczości. Narzędzia takie jak IronPDF pozwalają na renderowanie z adresów URL, ciągów HTML lub plików, obsługując jednocześnie nagłówki, uwierzytelnianie i ustawienia drukowania.
Jaka jest najlepsza biblioteka do konwersji HTML na PDF dla platformy .NET?
Najlepsza biblioteka powinna obsługiwać dokładne renderowanie w przeglądarce Chrome, wdrażanie na wielu platformach oraz funkcje dla przedsiębiorstw. IronPDF spełnia wszystkie te wymagania — działa w systemach Windows, Linux, macOS i Docker, zapewniając obsługę zabezpieczeń, podpisów, zgodności z przepisami oraz skalowalnych aplikacji .NET.
Jak mogę przekonwertować ciągi znaków HTML do formatu PDF przy użyciu języka C#?
Aby przekonwertować ciągi HTML na PDF, użyj klasy ChromePdfRenderer i jej metody RenderHtmlAsPdf. Przekaż swój ciąg HTML do tej metody, a następnie zapisz plik PDF za pomocą SaveAs.
Jakie kroki należy wykonać, aby przekonwertować adres URL strony internetowej na dokument PDF w języku C#?
Możesz przekonwertować adres URL strony internetowej bezpośrednio do formatu PDF, korzystając z metody RenderUrlAsPdf, która pozwala zachować styl, obrazy i elementy interaktywne, takie jak formularze i hiperłącza.
Jak przekonwertować plik HTML na PDF w języku C#?
Użyj ChromePdfRenderer.RenderHtmlFileAsPdf("path/to/file.html"), aby przekonwertować lokalne pliki HTML do formatu PDF. IronPDF automatycznie rozpoznaje wszystkie względne ścieżki zasobów (obrazy, CSS, JS).
Jak przekonwertować strony ASP.NET Razor Pages lub widoki MVC do formatu PDF?
IronPDF udostępnia dedykowane pakiety rozszerzeń — IronPdf.Extensions.Razor dla Razor Pages oraz IronPdf.Extensions.Mvc.Core dla widoków MVC. Użyj RenderRazorToPdf lub RenderRazorViewToPdf z wstrzykiwaniem zależności, aby konwertować widoki bezpośrednio do formatu PDF z kontrolerów. Zobacz przewodnik Razor →
Jak zapewnić prawidłowe renderowanie treści JavaScript w pliku PDF?
Włącz renderowanie JavaScript, ustawiając RenderingOptions.EnableJavaScript = true, i dodaj opóźnienie renderowania za pomocą RenderingOptions.WaitFor.RenderDelay, aby zapewnić pełne załadowanie treści dynamicznych przed konwersją. Zobacz przewodnik WaitFor →
Jaka jest najlepsza metoda dodawania nagłówków i stopek do pliku PDF w języku C#?
Użyj klasy TextHeaderFooter do prostych nagłówków i stopek tekstowych lub klasy HtmlHeaderFooter do bardziej złożonej zawartości HTML. Możesz dołączyć dynamiczne symbole zastępcze, takie jak {page}, {total-pages} i {date}, w celu automatycznego generowania treści. Zobacz przewodnik po nagłówkach i stopkach →
Jak zarządzać podziałami stron w pliku PDF w C# .NET?
Kontroluj podziały stron w plikach PDF, używając właściwości CSS, takich jak page-break-after: always i page-break-inside: avoid w bloku CSS typu PRINT. Zobacz przewodnik po podziałach stron →
Jakie opcje są dostępne w zakresie ustawiania rozmiaru i orientacji papieru w plikach PDF?
Rozmiar papieru ustawia się za pomocą opcji RenderingOptions.PaperSize (dostępne opcje to A4, Letter, Legal itp.), a orientację za pomocą opcji RenderingOptions.PaperOrientation (portretowa lub krajobrazowa). Obsługiwane są również niestandardowe rozmiary w milimetrach lub calach. Zobacz przewodnik po rozmiarach papieru →
Czy mogę konwertować uwierzytelnione strony internetowe do formatu PDF?
Tak. IronPDF obsługuje pliki cookie, niestandardowe nagłówki HTTP oraz uwierzytelnianie oparte na formularzach. Pliki cookie można ustawić za pomocą ChromePdfRenderer.RenderingOptions.CustomCookies lub przekazać nagłówki uwierzytelniające w celu uwierzytelniania opartego na tokenach. Obsługiwane jest również uwierzytelnianie Windows NTLM i Kerberos. Zobacz przewodnik dotyczący plików cookie →
Czy w języku C# mogę utworzyć wiele plików PDF z jednego szablonu HTML?
Tak, utwórz szablony HTML z symbolami zastępczymi, a następnie użyj funkcji zamiany ciągów znaków lub bibliotek szablonów, takich jak Handlebars.NET. Zastąp symbole zastępcze rzeczywistymi wartościami w danych z pętli i wygeneruj pliki PDF za pomocą RenderHtmlAsPdf.
Czy można zabezpieczyć wygenerowane pliki PDF hasłem?
Tak, można użyć właściwości SecuritySettings do ustawienia haseł użytkownika i właściciela, skonfigurowania uprawnień, takich jak drukowanie i kopiowanie, oraz zastosowania szyfrowania AES256 za pomocą SecuritySettings.EncryptionAlgorithm. Zobacz przewodnik po szyfrowaniu →
Czy mogę generować dokumenty zgodne ze standardem PDF/A na podstawie kodu HTML?
Tak. IronPDF obsługuje standardy PDF/A-1b, PDF/A-2b, PDF/A-3b i PDF/UA dotyczące archiwizacji i zgodności z wymogami dostępności, których nie oferuje większość konwerterów HTML na PDF. Zobacz przewodnik po PDF/A →
Jak mogę zoptymalizować wydajność generowania dużej ilości plików PDF?
Zoptymalizuj wydajność, używając metod asynchronicznych, takich jak RenderHtmlAsPdfAsync, do operacji nieblokujących. Ponownie wykorzystuj instancje ChromePdfRenderer, przetwarzaj wiele plików PDF jednocześnie za pomocą Task.WhenAll i upewnij się, że masz odpowiednie zasoby serwera w systemie 64-bitowym. Zobacz przewodnik po asynchroniczności →
Jak mogę połączyć wiele plików PDF lub dołączyć stronę tytułową do mojego dokumentu?
Użyj statycznej metody PdfDocument.Merge, aby połączyć wiele plików PDF. Wygeneruj stronę tytułową osobno i połącz ją z głównym dokumentem, aby utworzyć kompleksowy plik PDF. Zobacz przewodnik po scalaniu →
Czy mogę wdrożyć IronPDF na platformie Azure, AWS lub w środowisku Docker?
Tak. IronPDF działa na Azure App Service, Azure Functions, AWS Lambda oraz w kontenerach Docker na systemie Linux. Dla każdej platformy dostępne są dedykowane przewodniki konfiguracji oraz obrazy Docker. Zobacz przewodnik Azure → · Zobacz przewodnik AWS → · Zobacz przewodnik Docker →
Zgodność z .NET 10: Czy IronPDF od razu obsługuje .NET 10?
Tak — IronPDF jest w pełni kompatybilny z .NET 10. Zgodnie z informacjami zawartymi w notatkach dotyczących wydania IronPDF, biblioteka jest gotowa do użycia w projektach .NET 10 od pierwszego dnia, bez konieczności dodatkowej konfiguracji. Niezależnie od tego, czy korzystasz z aplikacji internetowych, konsolowych, desktopowych czy mikrousług, IronPDF działa „od razu po uruchomieniu” z .NET 10.
Czy korzystanie z IronPDF jest bezpłatne?
IronPDF oferuje bezpłatny 30-dniowy okres probny z pełną funkcjonalnością i bez znaków wodnych w fazie rozwoju. Wykorzystanie produkcyjne wymaga licencji komercyjnej w cenie od 749 USD. Dostępne są poziomy Lite, Plus, Professional i Enterprise. Zobacz cennik →
Jak jakość renderowania tej biblioteki wypada w porównaniu z innymi opcjami, takimi jak wkhtmltopdf?
Biblioteka ta wykorzystuje nowoczesny silnik renderujący Chrome do tworzenia plików PDF o idealnej rozdzielczości, w przeciwieństwie do przestarzałego silnika WebKit stosowanego w wkhtmltopdf. Nie wymaga ona plików wykonywalnych na serwerze, obsługuje pełną funkcjonalność JavaScript/CSS3, jest regularnie aktualizowana i oferuje profesjonalne wsparcie techniczne.
Dlaczego warto wybrać tę bibliotekę zamiast PDFSharp do konwersji HTML na PDF?
PDFSharp nie posiada wbudowanej funkcji konwersji HTML do PDF, co wymaga stosowania skomplikowanych rozwiązań zastępczych. Ta biblioteka oferuje bezpośrednią konwersję HTML/URL/plików za pomocą API wysokiego poziomu, obsługę nowoczesnych technologii internetowych oraz regularne aktualizacje wraz z profesjonalnym wsparciem. Zobacz porównanie PDFSharp →
Dlaczego jest to lepszy wybór niż iTextSharp do konwersji HTML?
Darmowa wersja iTextSharp nie obsługuje natywnej konwersji HTML do PDF i ma skomplikowany interfejs API niskiego poziomu. Ta biblioteka zapewnia płynną konwersję HTML dzięki intuicyjnemu interfejsowi API, pełnej obsłudze CSS3/JavaScript i braku ograniczeń licencyjnych AGPL. Zobacz porównanie iTextSharp →
Jak jakość renderowania tej biblioteki wypada w porównaniu z Aspose.PDF?
Ta biblioteka generuje pliki PDF o jakości Chrome z idealną rozdzielczością, podczas gdy Aspose.PDF często pomija stylizację i treści dynamiczne. Aspose wymaga ręcznego pobierania kodu HTML w celu konwersji adresów URL, ale ta biblioteka konwertuje adresy URL bezpośrednio z najwyższą dokładnością. Zobacz porównanie z Aspose →
Dlaczego warto wybrać tę bibliotekę zamiast Syncfusion PDF?
Chociaż Syncfusion jest wydajny, zoptymalizowany silnik Chrome tej biblioteki działa szybciej i skuteczniej obsługuje treści dynamiczne. Oferuje prostsze API oraz dodatkowe funkcje, takie jak OCR i generowanie kodów kreskowych. Zobacz porównanie z Syncfusion →

