Tworzenie PDF w C# z pliku HTML
IronPDF konwertuje HTML na dokumenty PDF programistycznie.
Jak utworzyć PDF w C# - Przykład konwersji HTML na PDF
Kod źródłowy całego tego artykułu jest dostępny dla C# jako Kod źródłowy projektu C# HTML na PDF do pobrania.
Poniższy samouczek przeprowadzi Cię przez proces używania IronPDF jako Generatora PDF w C#. Obejmuje podstawy oraz wiele zaawansowanych tematów PDF w C#.
HTML do PDF C#
- Pobierz bibliotekę C# do konwersji HTML na PDF
- Utwórz PDF z ciągu HTML w kodzie
- Utwórz PDF z pliku HTML w kodzie
- Konwertuj URL na dokument PDF z łatwością
- Eksportuj pliki PDF do wybranej lokalizacji
Przewodnik po konwersji HTML na PDF
Ten demo przeprowadzi Cię przez przykłady, jak używać IronPdf. Poproś o dodatkowe dema przypadków użycia od Iron Software.
Demo składa się z przykładu Hello World, RenderHtmlAsPdf i RenderUrlAsPdf przykładów. Wszystkie przykłady można znaleźć w odpowiednich projektach w rozwiązaniu IronPDF Demo.
Krok 1: Instalacja
Możesz zainstalować IronPdf przez NuGet. The package name is IronPDF NuGet Package.
Or you can use the Direct Library Download.
Krok 2: Hello World
Gdy już zainstalujesz IronPDF i dodasz go do swojego projektu, możesz zacząć używać go od razu, wpisując kilka ciągów:
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
' Create a new instance of ChromePdfRenderer
Dim chromePdfRenderer As New ChromePdfRenderer()
Następnie, jeśli potrzebujesz zamienić HTML na PDF:
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' Define HTML content to turn into PDF
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' Render the HTML string as a PDF
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
Lub jeśli chcesz zamienić stronę internetową na plik PDF:
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");
// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");
// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
' URI of the page to turn into PDF
Dim uri As New Uri("http://www.google.com/ncr")
' Render the webpage as a PDF
Dim pdf = chromePdfRenderer.RenderUrlAsPdf(uri)
' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
I to wszystko! Odpowiadające wyniki to:
Wynik konwersji HTML na PDF**
Wynik konwersji strony internetowej na PDF
Próbkę kodu znajdziesz w projekcie IronPDFDemo.HelloWorld.
Krok 3: RenderHtmlAsPdf
Przykład 1
Aby zbadać bardziej rzeczywisty przykład, wyobraź sobie fakturę HTML, którą trzeba przekształcić na PDF. Oto kod, jak to zrobić.
Uwaga: Faktura HTML znajduje się w projekcie IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Zwróć uwagę, że faktura ma niestandardowy CSS dla typu medium "print".
Źródłowa faktura wygląda tak w przeglądarce:

Aby zamienić to na plik PDF, użyty został kod podobny do przykładu HelloWorld powyżej, różnicą jest źródłowy plik HTML.
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
' Read HTML from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim chromePdfRenderer As New ChromePdfRenderer()
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))
Wynik jest:
Generowanie pliku PDF z HTML
Wygląda świetnie! Próbkę kodu znajdziesz w projekcie IronPDFDemo.RenderHtmlAdPdfDemo.
Zobacz również to pytanie na Jak używać dokumentów HTML lub ciągów z tablicami bajtów w IronPDF
Przykład 2
Ta sekcja pomoże dostosować wynikowy PDF z Przykładu 1. Na przykład, doda niestandardowe marginesy, nagłówek z tytułem dokumentu, stopkę z datą stworzenia i numerami stron oraz niektóre niestandardowe CSS dla typu medium "print", który standardowa faktura ma. Aby to zrobić, instancja ChromePdfRenderOptions jest inicjalizowana i przekazywana do konstruktora ChromePdfRenderer.
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
' Configure rendering options with margins, headers, and footers
Dim pdfRenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}
Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)
Wskazówka: Zamiast przekazywać opcje jako parametr w konstruktorze, możesz ustawić odpowiadające pola dla instancji ChromePdfRenderer:
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions
Uwaga: Funkcjonalność nagłówków i stopek łączy się, co oznacza, że wszystkie pola do integracji ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) mogą być wypełnione odpowiadającymi danymi.
Reszta kodu jest taka sama jak w Przykładzie 1. Wynik to:
Generowanie faktury z nagłówkiem i stopką
Niestandardowe marginesy, nagłówki, stopki i CSS dla typu medium "print" są teraz na swoim miejscu. Próbkę kodu znajdziesz w projekcie IronPDFDemo.RenderHtmlAdPdfDemo. Więcej ustawień można znaleźć w dokumentacji API IronPDF.
Krok 4: RenderUrlAsPdf
Konfiguracja
Aby uruchomić przykłady z tej sekcji, musisz lokalnie hostować IronPDFDemo.DemoWebSite. Aby to zrobić w IIS Express:
- Przejdź do DemoWebSite
- Kliknij prawym przyciskiem myszy > Ustaw jako projekt startowy
- Uruchom bez debugowania (Ctrl+F5)
- Przejdź do swojego
{baseurl}/Static/TestInvoice1.html, aby upewnić się, że działa. To jest URLhttp://localhost:51169/Static/TestInvoice1.html(będzie taki sam dla Ciebie, jeśli nie zmienisz odpowiadających ustawień projektu).
Przykład 1
W tej sekcji, hostowana faktura DemoWebSite jest konwertowana na PDF przy użyciu tego samego kodu jak w przykładzie HelloWorld. Różnica leży w hostowanym URL:
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
' URL of the hosted invoice webpage
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
Wynik jest:
Generowanie hostowanej strony do PDF
To jest świetne i wygląda tak, jak się spodziewano. Próbkę kodu znajdziesz w projekcie IronPDFDemo.RenderUrlAsPdfDemo.
Przykład 2
Wiele stron internetowych jest często chronionych metodą uwierzytelniania. W tej sekcji używany jest podany login i hasło podczas procesu renderowania pliku PDF z pewną dostosowaniem: niestandardowe marginesy, nagłówek z tytułem dokumentu, stopka z datą stworzenia i stronami oraz niestandardowy CSS dla typu medium "print". URL faktury jest pod http://localhost:51169/Invoice.
Dostęp do http://localhost:51169/Invoice skutkuje formularzem "Wymagana uwierzytelnienie":
Formularz wymagańej uwierzytelnienia
Uwaga: Dane logowania to "testUser"/"testPassword".
Jak obejść uwierzytelnianie? Poprzez ustawienie HttpLoginCredentials:
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");
// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// Set login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");
// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// Set login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
' URL of the protected invoice webpage
Dim uri As New Uri("http://localhost:51169/Invoice")
' Configure renderer with login credentials to bypass authentication
Dim urlToPdf = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
.LoginCredentials = New HttpLoginCredentials() With {
.NetworkUsername = "testUser",
.NetworkPassword = "testPassword"
}
}
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))
Uwaga: To samo dostosowanie jest używane jak w przykładzie ChromePdfRenderer Example2.
Wynik jest:
Generowanie strony HTML z danymi logowania do pliku PDF
Wszystko jest na miejscu. Próbkę kodu znajdziesz w projekcie IronPDFDemo.RenderUrlAsPdfDemo. Jeśli zastanawiasz się, jak wyglądałby wynik bez HttpLoginCredentials, oto on:
Generowanie pustego pliku PDF bez danych logowania
Zobacz również tutorial Jean .NET HTML do PDF
Dodatkowo, IronPDF może też interakcjonować z PDF na różne sposoby: