Jak konwertować HTML na PDF w C# (Przewodnik dla Deweloperów)
Konwertowanie HTML na PDF w C# wydaje się proste, dopóki rzeczywiste projekty nie osiągną ograniczeń renderowania, wdrożenia i skalowalności. Ten przewodnik pokazuje, jak to zrobić niezawodnie z silnikiem Chromium IronPDF, zaczynając od działającego kodu, który można uruchomić w mniej niż minutę. Jeśli wciąż wybierasz narzędzie, porównaj wszystkie biblioteki C# HTML do PDF najpierw.
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 zapewnia metodę ChromePdfRenderer.RenderHtmlAsPdf do tworzenia wysokiej jakości plików PDF z HTML, CSS i JavaScript.
-
Install IronPDF with NuGet Package Manager
-
Skopiuj i uruchom ten fragment kodu.
new IronPdf.ChromePdfRenderer() .RenderHtmlAsPdf("<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"
Cały kod w tym przewodniku był zweryfikowany w IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
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: używa silnika Blink Chrome'a do dokładnej konwersji HTML na PDF.
✅ Dokładność na poziomie pikseli: generowane PDF odpowiadają precyzyjnie stronie internetowej, a nie wersji przyjaznej dla druku.
✅ Pełne wsparcie dla nowoczesnej sieci: pełna obsługa CSS3, HTML5 i JavaScript dla wszystkich elementów HTML.
✅ Wzrost wydajności o 5-20x: znacznie szybszy niż automatyzacja przeglądarki lub sterowniki sieciowe.
✅ Zgodność z PDF/UA: generowanie dostępnych PDF-ów spełniających standardy Sekcji 508.
✅ Brak zewnętrznych zależności: bez plików wykonywalnych do zainstalowania na serwerach.
✅ Designed for C#, F#, and VB.NET on .NET 10, 9, 8, 7, 6, Core, Standard, and 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.
POWIĄZANE: Dziennik zmian IronPDF: Aktualizacje, kamienie milowe, plan
Czego się nauczysz
-
Jak używać zaawansowanych funkcji generowania i bezpieczeństwa PDF
- Rozwiązywanie problemów i wsparcie techniczne
Wybierz swoją ścieżkę HTML do PDF według przypadku użycia
Nie wiesz, od czego zacząć? Przejdź bezpośrednio do ścieżki, która odpowiada temu, co budujesz:
| Co budujesz | Zacznij tutaj |
|---|---|
| Konwersja jednorazowego łańcucha HTML | HTML String to PDF |
| Archiwizacja aktywnego adresu URL lub strony internetowej | URL to PDF |
| Tworzenie aplikacji Razor Pages lub MVC | Razor / MVC to PDF |
| Generacja na serwerze dużych wolumenów lub w partiach | Generacja asynchroniczna i wsadowa |
1. How to Convert HTML to PDF 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 wspiera HTML5, CSS3, JavaScript i obrazy podczas konwersji HTML na PDF bezpośrednio.
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")
Zweryfikowane na IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
Wynik
Uruchom powyższy fragment, a IronPDF zwróci jednostronicowy PDF zawierający dokładnie nagłówek, który podałeś, najprostszą możliwą renderowania:
Wydajność
Wydajność konwersji IronPDF do formatu PDF z ciągów znaków, adresów URL i kodu HTML została zmierzona przy użyciu laptopa Lenovo z 16 GB pamięci RAM. Dokument testowy to 3-stronicowa faktura dla Enterprise, zawierająca standardowy CSS Grid, gradienty i tabele wielosekcyjne.
Wyniki są następujące:
| Metryka | Wartość |
|---|---|
| Średni czas renderowania | ~486 ms |
| Pamięć na render | ~3,6 MB |
Pomiar przeprowadzono na podstawie 5 kolejnych renderowań na 16-rdzeniowej stacji roboczej (Windows 11, .NET 8). Pierwsze wywołanie obejmuje również jednorazową inicjalizację silnika Chromium (~1,3 s)
Kiedy po raz pierwszy uruchomiłem test, renderowanie przebiegało bardzo wolno (ponad sekundę na każde wywołanie!). Po przyjrzeniu się sytuacji zdałem sobie sprawę, że miałem uruchomionych kilka instancji Chromium i korzystałem z zasilania bateryjnego, co uniemożliwiało bibliotece wykazanie się prawdziwą prędkością. Po zamknięciu konkurencyjnych procesów i podłączeniu się sytuacja uległa poprawie: średni czas działania w trybie warm run wyniósł ~486 ms, a najszybszy wynik to około 473 ms.
EnableJavaScript = true dla optymalnych wyników.Gdy ciąg HTML odwołuje się do lokalnych zasobów, takich jak obrazy czy arkusze stylów, użyj parametru baseUrlOrPath, aby właściwie przekonwertować zawartość HTML z wszystkimi zasobami:
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-2.cs
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")
baseUrlOrPath, aby wskazać ścieżki względne na odpowiedni katalog, więc szybki test wyjścia przed dużą operacją jest zazwyczaj wszystkim, czego potrzebujesz, aby to wykryć.POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak przekonwertować string HTML na PDF w 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.
Główna metoda to RenderUrlAsPdf, która pobiera żywą stronę i renderuje ją w jednym wywołaniu:
using IronPdf;
// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
using IronPdf;
// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
Imports IronPdf
' Create a PDF from any existing web page
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
pdf.SaveAs("wikipedia.pdf")
Wynik
Tutaj RenderUrlAsPdf przechwytuje artykuł z Wikipedii na żywo w statyczny, gotowy do druku PDF, z tekstem, obrazami, tabelkami i układem zachowanym na wszystkich 33 stronach:
CSS dla Drukowania vs Ekran
Możesz skonfigurować IronPDF do renderowania z użyciem dowolnego typu mediów CSS.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-4.cs
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.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-5.cs
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.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-6.cs
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://observablehq.com/@d3/chord-diagram");
// 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://observablehq.com/@d3/chord-diagram")
' Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf")
Zweryfikowane na IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
CSS Responsywny
Ponieważ responsywne strony internetowe są projektowane do oglądania w przeglądarce, a IronPDF nie otwiera prawdziwego okna przeglądarki w systemie operacyjnym serwera, elementy HTML mogą być renderowane w najmniejszym możliwym rozmiarze. PdfCssMediaType.Print jest zalecana, aby poradzić sobie z tym problemem podczas renderowania całych stron internetowych.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-7.cs
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak renderować URL na 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.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-8.cs
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
Zweryfikowane na IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
Wynik
Wskaż RenderHtmlFileAsPdf na szablon faktury HTML, a cały design pliku (logo, tabelka z pozycjami, sumy) zostanie odwzorowany doskonale, bez dodatkowego kodu po Twojej stronie:
Wydajność
Wydajność została ponownie zmierzona przy stałych zmiennych podczas renderowania poprzedniej 3-stronicowej faktury dla Enterprise z pliku na dysku:
| Metryka | Wartość |
|---|---|
| Średni czas renderowania | ~502 ms |
| Pamięć na render | ~3,1 MB |
Pomiar przeprowadzono na podstawie 5 kolejnych renderowań na tej samej stacji roboczej z 16-rdzeniowym procesorem (Windows 11, .NET 8). Renderowanie oparte na plikach odpowiada renderowaniu ciągów znaków w pamięci z dokładnością do około 3%; odczytanie kodu HTML z dysku nie powoduje żadnego wymiernego obciążenia.
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Renderuj plik HTML na 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 IronPDF dodaje metodę RenderRazorToPdf, która pobiera Twoją stronę .cshtml (uzupełnioną o model i układ) i renderuje ją jako dokument PDF w jednym wywołaniu.
Install-Pakiet IronPdf.Extensions.Razor
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ReportModel : PageModel
{
public IActionResult OnGet()
{
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;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ReportModel : PageModel
{
public IActionResult OnGet()
{
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
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Public Class ReportModel
Inherits PageModel
Public Function OnGet() As IActionResult
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")
End Function
End Class
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak przekonwertować CSHTML na PDF w stronach Razor
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 Twoją ścieżką widoku i modelem; IronPDF obsługuje kanał renderowania Razor i wypuszcza 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.
Install-Pakiet IronPdf.Extensions.Mvc.Core
Najpierw zarejestruj usługę IRazorViewRenderer w swoim Program.cs, aby Twoje kontrolery mogły ją wstrzykiwać:
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;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
// Inject the view renderer via constructor
public ReportController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Download()
{
var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
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;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
// Inject the view renderer via constructor
public ReportController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Download()
{
var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
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
Imports Microsoft.AspNetCore.Mvc
Public Class ReportController
Inherits Controller
Private ReadOnly _viewRenderService As IRazorViewRenderer
' Inject the view renderer via constructor
Public Sub New(viewRenderService As IRazorViewRenderer)
_viewRenderService = viewRenderService
End Sub
Public Function Download() As IActionResult
Dim reportModel = New With {.Title = "Quarterly Report", .Total = 1250.0}
Dim renderer = 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")
End Function
End Class
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak przekonwertować widoki na PDF w ASP.NET Core MVC
2. Jak skonfigurować ustawienia HTML na PDF
W zakresie manipulacji dokumentami PDF, IronPDF zapewnia rozległe możliwości dostosowywania przez właściwość ChromePdfRenderer.RenderingOptions dla renderowanych PDF.
| Ustawienia | Opis | Przykład |
|---|---|---|
RozmiarPapieru
|
Ustaw wymiary strony dla istniejących PDF-ów (A4, Letter, Legal, itp.) |
PdfPaperSize.A4
|
OrientacjaPapieru
|
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) | 25 |
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 podstawowej lub NTLM uwierzytelniania ustaw obiekt LoginCredentials na rendererze. Dla dostępu opartego na tokenach lub sesjach przeprowadź ciasteczka i nagłówki przez 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: Renderuj PDFy za logowaniem | Niestandardowe nagłówki żądań HTTP
Jak skonfigurować proxy dla renderowania PDF
Podczas renderowania HTML ładującego zasoby zewnętrzne za firmowym proxy, przekaż adres proxy jako trzeci parametr na RenderHtmlAsPdf(). To jest parametr metody, a nie właściwość na ChromePdfRenderOptions, więc jest ustawiany dla każdego wywołania rendera, a nie instancji renderera.
Dla proxy z uwierzytelnianiem, osadź dane uwierzytelniające bezpośrednio w URL używając formatu http://user:pass@host:port. Zakoduj specjalne znaki w hasłach za pomocą Uri.EscapeDataString().
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter, not a render option
var 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
var 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 = 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ć aktywny adres URL za proxy, najpierw pobierz HTML za pomocą HttpClient skonfigurowanego z WebProxy, następnie przekaż go do RenderHtmlAsPdf() z parametrem proxy dla załadowania zasobów.
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak skonfigurować serwery proxy dla renderowania PDF
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# działa najlepiej do prostych 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:
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-16.cs
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");
}
Imports IronPdf
' 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ętli i warunkach, kiedy konwertujesz HTML na PDF, użyj zaawansowanego szablonowania z Handlebars.NET do generowania plików PDF z dynamiczną zawartością HTML.
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Pakiet Handlebars.NET
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Pakiet Handlebars.NET
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-21.cs
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")
POWIĄZANY ARTYKUŁ: Dowiedz się więcej na temat Handlebars.NET na 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 dostarcza wydajność na poziomie przedsiębiorstwa z pełnym wsparciem dla asynchronicznego i wielowątkowego dla twoich potrzeb konwersji HTML na PDF, kiedy potrzebujesz generować pliki PDF na dużą skalę.
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
public class PdfGenerationService
{
// 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> htmlSzablony)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlSzablony.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.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
public class PdfGenerationService
{
// 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> htmlSzablony)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlSzablony.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.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Public Class PdfGenerationService
' 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(htmlSzablony As List(Of String)) As Task
Dim renderer As New ChromePdfRenderer()
' Create parallel conversion tasks to generate PDF documents
Dim tasks = htmlSzablony.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
End Class
Zweryfikowane na IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
- Używaj systemów 64-bitowych dla optymalnej wydajności generowania PDF.
- Zapewnij odpowiednie zasoby serwera, gdy generujesz dokumenty PDF (unikaj słabyćh darmowych poziomów)
- Daj wystarczająco RenderDelay dla złożonego JavaScriptu w treści HTML.
- Ponownie wykorzystuj instancje
ChromePdfRendererkiedy to możliwe. - Wykorzystaj ostatnie poprawki pamięci dla operacji asynchronicznych / w partiach, aby zmniejszyć zużycie zasobów; testuj dla zmniejszonych rozmiarów plików z powtarzającymi się niestandardowymi nagłówkami/stopkami.
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak generować PDF-y z asynchronicznie i wielowątkowo
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.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-24.cs
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 = PdfPrintSecurity.PrintLowQuality;
// 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 = PdfPrintSecurity.PrintLowQuality
' 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. Po podpisaniu możesz zweryfikować podpis i przeczytać certyfikat podpisującego dla audytu i kontroli zgodności.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-25.cs
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"
};
// 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"
}
' Apply signature to PDF documents
pdf.Sign(signature)
pdf.SaveAs("signed-contract.pdf")
Zweryfikowane na IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Podpisywanie cyfrowo dokumentów PDF w C#
Jak konwertować formularze HTML na wypełnialne PDFy
Aby przekonwertować standardowe elementy formularza HTML na interaktywne, wypełnialne pola formularza PDF, włącz opcję renderowania CreatePdfFormsFromHtml. To zachowuje pola tekstowe, pola wyboru, radio buttony i menu rozwijane jako edytowalne pola w generowanym dokumencie PDF.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-26.cs
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 = 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.POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak tworzyć wypełnialne formularze PDF w 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 używa opcji renderowania JavaScript do zastąpienia treści dokumentu zawartością docelowego elementu, połączonego z WaitFor.HtmlQuerySelector() aby upewnić się, że element istnieje przed ekstrakcją. Fragment poniżej zachowuje document.head, więc arkusze stylów i czcionki są przenoszone; bez tego kroku, reguły CSS opierające się na selektorach przodków był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 takiego jak AngleSharp i przekaż go do RenderHtmlAsPdf(), bez potrzeby wykonywania JavaScriptu.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-27.cs
using IronPdf;
// Full page HTML containing the target element
string fullPageHtml = @"
<html>
<body>
<header><h1>Acme Corp Invoice</h1></header>
<div id='invoice-summary'>
<h2>Invoice #12345</h2>
<p>Total: $1,250.00</p>
</div>
<footer>Confidential</footer>
</body>
</html>";
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
' Full page HTML containing the target element
Dim fullPageHtml As String = "
<html>
<body>
<header><h1>Acme Corp Invoice</h1></header>
<div id='invoice-summary'>
<h2>Invoice #12345</h2>
<p>Total: $1,250.00</p>
</div>
<footer>Confidential</footer>
</body>
</html>"
Dim renderer As 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")
POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak konwertować elementy HTML i częściowe strony na 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 podstawowego, 'digest' lub NTLM uwierzytelniania przy konwertowaniu chronionych adresów URL na PDF.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-28.cs
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.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-29.cs
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.HttpRequestHeaders["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.HttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard")
pdf.SaveAs("dashboard.pdf")
HttpClient do pierwotnej autoryzacji, a następnie przekaż uzyskane ciasteczka do słownika CustomCookies, by renderować chronioną stronę.POWIĄZANY ARTYKUŁ INSTRUKTAŻOWY: Jak przekonwertować HTML za logowaniem na PDF
IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
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 | AutoKonfiguracja | Tymczasowa Ścieżka | Kluczowy Problem |
|---|---|---|---|---|---|
| Usługa aplikacji Azure | Poziom B1 (Podstawowy) |
IronPdf.Linux
|
true
|
/tmp | Bezpłatne/Współdzielone poziomy nie działają (brak GPU, mało pamięci) |
| Azure Functions (Windows) | Poziom B1 |
IronPdf
|
true
|
/tmp | Odznacz "Uruchom z pliku pakietu" |
| AWS Lambda | 512 MB / 60s timeout |
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 Azure Functions 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.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-30.cs
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")
POWIĄZANY PRZEWODNIK ROZPOCZYNAJĄCY: Jak wdrożyć IronPDF na 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 tymczasowe i ścieżki wdrożenia 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.LinuxAndDockerDependenciesAutoKonfiguracja = 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.LinuxAndDockerDependenciesAutoKonfiguracja = 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.LinuxAndDockerDependenciesAutoKonfiguracja = 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: Jak wdrożyć IronPDF na AWS Lambda
Jak wdrożyć z Dockerem
Dla wdrożeń Dockera użyj pakietu NuGet IronPdf.Linux, aby zmniejszyć rozmiar obrazu i uniknąć pobierania zasobów podczas wykonywania. Ten pakiet zawiera wcześniej skompilowane binaria natywne dla Linuksa, zoptymalizowane dla środowisk kontenerowych.
Ustaw LinuxAndDockerDependenciesAutoKonfiguracja = false, gdy Twój Dockerfile już instaluje współdzielone zależności biblioteki Chrome za pomocą 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ślny, 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 LinuxAndDockerDependenciesAutoKonfiguracja = true
|
| Kontenery Windows |
IronPdf
|
Nie wymaga dodatkowej konfiguracji |
Minimalny wieloetapowy Dockerfile dla obrazu opartego na Ubuntu/Debian:
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:10.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"]
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-33.cs
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")
Zweryfikowane na IronPDF v2026.6.1 · .NET 10 · czerwiec 2026.
RELATED GET-STARTED Guide: Jak korzystać z IronPDF z Dockerem
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.
Bezplatne i otwarte alternatywy
Niektóre narzędzia, które mogą wziąć pod uwagę:
- PuppeteerSharp: wersja portu Puppeteer na platformę .NET na licencji MIT, która steruje bezgłowym Chrome'a.
- Playwright dla .NET: biblioteka automatyzacji Microsoftu na licencji Apache-2.0, również oparta na Chromium.
- wkhtmltopdf: długoterminowa samodzielna binarna konwersja HTML do PDF.
- Natywne drogi przeglądarki: drukowanie do PDF bezpośrednio z bezgłowej przeglądarki lub sterownika drukarki systemu operacyjnego.
Warto najpierw zwrócić uwagę na rozróżnienie: PuppeteerSharp i Playwright są ramkami automatyzacji przeglądarki, a nie bibliotekami PDF. Ekspozycja wywołania drukowania do PDF na bazie prawdziwego Chromium, więc wierność renderowania jest doskonała, ale szczegóły PDF, takie jak nagłówki i stopki, szyfrowanie, podpisy i PDF/A, wraz z cyklem życia przeglądarki, pozostają do zrealizowania przez ciebie: wysyłanie i aktualizowanie binarium Chromium, zarządzanie współbieżnością i odzyskiwanie po awarii, oraz budowanie struktury dokumentu ręcznie. Playwright dodaje warunek warty poznania wcześnie: jego PdfAsync działa tylko w bezgłowym Chromie (nie w Firefox ani WebKit), więc wdrożenia muszą zapewniać bezgłowego Chrome, co ma znaczenie w kontenerach i rozwiązaniach bezserwerowych.
wkhtmltopdf znowu zajmuje inne miejsce. Projekt został zarchiwizowany w 2024 roku, a jego ostatnie wydanie (0.12.6, 2020) działa na ~2012 Qt WebKit silniku, który nie otrzymuje dalszych łatek bezpieczeństwa, w tym krytyczna niezałatana porada dotyczącą SSRF (CVE-2022-35583); pozostaje użyteczny dla prostych statycznych dokumentów na zaufanym wejściu, ale mniej dla jawnego wyjścia. Natywne drogi przeglądarek nie wymagają w ogóle biblioteki, kosztem jakiejkolwiek rodzimój biblioteki PDF .NET ani faktycznej kontroli nad automatyzacją po stronie serwera.
Dla prototypów, narzędzi wewnętrznych i pracy bez budżetu, są to legalne wybory. Poniższe porównanie obejmuje funkcję po funkcji bibliotek komercyjnych.
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. |
POWIĄZANE PORÓWNANIA:
Szczegółowe porównanie: IronPDF versus inne konwertery PDF .NET
Show the full feature-by-feature table (10 .NET PDF libraries)
| Funkcja | ★ Zalecane IronPDF | wkhtmltopdf | iText | Aspose.PDF | Syncfusion | Apryse | SelectPdf | Spire.PDF | PDFsharp | QuestPDF |
|---|---|---|---|---|---|---|---|---|---|---|
| Renderowanie i konwersja | ||||||||||
| 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łna 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 | Tak | Tak | 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) |
| Scałanie, dzielenie i przearanżowanie | 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 |
| Znakowanie wodne i pieczętowanie | 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 |
| Bezpieczeństwo i zgodność | ||||||||||
| 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 | Zgodność z PDFA | Nie | Tak | Ograniczone | PDF/A-2x i 3x |
| Platformaa i doświadczenie deweloperskie | ||||||||||
| Wielopłatformowe | 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 |
| Wdrożenie Cloud & Docker | 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 |
| Wsparcie i 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 + E-mail | Tylko społeczność | Społeczność + GitHub | |
| Licencjonowanie i ceny | ||||||||||
| Model licencji | Wieczysta | Otwarto źródłowy | AGPL / Subskrypcja | Wieczysta | Subskrypcja roczna | Dostosowane / Według zużycia | Wieczysta | Wieczysta | Darmowe (MIT) | MIT Darmowe / Płatne poziomy |
| Cena wyjściowa | $liteLicense Wieczysta · 1 programista | Darmowe | ~45 000 USD/rok Indywidualna wycena | 1 175 USD+ Na programistę | Custom Quote Free <M (Community) | ~9 000 USD+/rok Indywidualna wycena | 499 USD+ Na czas nieokreślony | 9 Wieczysta · aktualizacje przez 1 rok | Darmowe | Bezpłatne Społeczność MIT <1 mln USD |
| 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 | Otwarto źródłowy | 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.
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 zaczyna się od $999 z przejrzystym cenowaniem dla zespołów, które skalują się zgodnie 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
RenderDelaydo wykonania JavaScriptu. - Problemy z pamięcią podczas renderowania? Zaktualizuj do najnowszej wersji (v2026.6.1) dla poprawek w HTML do PDF, pieczątkach i nagłówkach/stopkach.
- 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
- Kompleksowy przewodnik po rozwiązywaniu 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.
Jakie są darmowe opcje HTML do PDF dla .NET?
Otwarte źródła jak wkhtmltopdf, PuppeteerSharp i Playwright konwertują HTML do PDF bez kosztów, ale zamieniają wygodę na utrzymanie — starsze silniki renderujące, dołączone binaria przeglądarki lub ręczna konfiguracja serwera. IronPDF jest komercyjny, z darmowym 30-dniowym okresem próbnym, który oferuje pełną funkcjonalność i brak znaków wodnych podczas rozwoju; licencje produkcyjne zaczynają się od 999 $. Zobacz cennik →
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 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 →
Dlaczego mój wynik HTML do PDF jest pusty lub brakuje zawartości?
Pusty lub częściowy PDF prawie zawsze oznacza, że strona nie została wykończona podczas tworzenia zrzutu lub jej zasoby nie zostały załadowane. Dla treści dynamicznych lub napędzanych JavaScript, ustaw RenderingOptions.EnableJavaScript = true i dodaj WaitFor.RenderDelay (lub WaitFor.HtmlQuerySelector), aby Chrome zakończył najpierw malowanie. Jeśli lokalne obrazy, CSS lub czcionki brakuje, podaj BaseUrlPath, aby względne ścieżki zostały poprawnie rozpoznane. 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 krajobrazówa). Obsługiwane są również niestandardowe rozmiary w milimetrach lub całach. 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 wymogąmi 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 scałaniu →
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 darmowe?
IronPDF oferuje darmowy 30-dniowy okres próbny z pełną funkcjonalnością i bez znaków wodnych na etapie rozwoju. Użycie produkcyjne wymaga komercyjnej licencji zaczynającej się od 999 $. 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 →

