UżYWANIE IRON SUITE

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#.

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()
$vbLabelText   $csharpLabel

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"))
$vbLabelText   $csharpLabel

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"))
$vbLabelText   $csharpLabel

I to wszystko! Odpowiadające wyniki to:

Utwórz PDF w C# z pliku HTML, Rysunek 1: Wynik konwersji HTML na PDF Wynik konwersji HTML na PDF**

Utwórz PDF w C# z pliku HTML, Rysunek 2: Wynik konwersji strony internetowej 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:

Utwórz PDF w C# z pliku HTML, Rysunek 4:


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"))
$vbLabelText   $csharpLabel

Wynik jest:

Utwórz PDF w C# z pliku HTML, Rysunek 5: Generowanie pliku PDF z HTML 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)
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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:

Utwórz PDF w C# z pliku HTML, Rysunek 6: Generowanie faktury z nagłówkiem i stopką 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:

  1. Przejdź do DemoWebSite
  2. Kliknij prawym przyciskiem myszy > Ustaw jako projekt startowy
  3. Uruchom bez debugowania (Ctrl+F5)
  4. Przejdź do swojego {baseurl}/Static/TestInvoice1.html, aby upewnić się, że działa. To jest URL http://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"))
$vbLabelText   $csharpLabel

Wynik jest:

Utwórz PDF w C# z pliku HTML, Rysunek 7: Generowanie hostowanej strony do PDF 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":

Utwórz PDF w C# z pliku HTML, Rysunek 8: Formularz wymagańej uwierzytelnienia 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"))
$vbLabelText   $csharpLabel

Uwaga: To samo dostosowanie jest używane jak w przykładzie ChromePdfRenderer Example2.

Wynik jest:

Utwórz PDF w C# z pliku HTML, Rysunek 9: Generowanie strony HTML z danymi logowania do pliku PDF 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:

Utwórz PDF w C# z pliku HTML, Rysunek 10: Generowanie pustego pliku PDF bez danych logowania 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: