Jak przekonwertować HTML na PDF C# bez biblioteki
Jeśli chodzi o konwersję HTML do PDF w języku C#, programiści mogą rozważyć wykorzystanie natywnych funkcji platformy .NET bez konieczności korzystania z zewnętrznych bibliotek. Chociaż takie podejście może być opłacalne w niektórych sytuacjach, wiąże się ono z pewnymi zaletami i wyzwaniami. W tym artykule omówimy proces, zalety i wady oraz wyjaśnimy, dlaczego biblioteka taka jak IronPDF może być lepszym rozwiązaniem.
Jak to działa
Korzystając z wbudowanych narzędzi .NET, można dokonać konwersji HTML do PDF poprzez renderowanie treści HTML i wydrukowanie jej przy użyciu kontrolki WebBrowser oraz klasy PrintDocument. Oto uproszczony przebieg pracy:
- Zapisz treść HTML do pliku tymczasowego.
- Załaduj kod HTML do kontrolki WebBrowser w celu renderowania.
- Użyj klasy PrintDocument, aby utworzyć zadanie drukowania, które wyświetli wyrenderowaną zawartość.
Chociaż takie podejście pozwala uniknąć zależności zewnętrznych, wiąże się ono z pracą z komponentami niskiego poziomu i ręcznym definiowaniem logiki drukowania.
Jeśli chcesz przekonwertować HTML na PDF w języku C# bez użycia zewnętrznych bibliotek, możesz skorzystać z wbudowanych funkcji .NET, takich jak System.IO i System.Drawing.Printing, aby wyrenderować HTML, a następnie utworzyć plik PDF. Poniżej znajduje się podstawowy przykład, który pomoże Ci rozpocząć pracę:
Jak przekonwertować HTML na PDF w języku C# bez biblioteki

using System;
using System.IO;
using System.Windows.Forms; // You need to add a reference to System.Windows.Forms
using System.Drawing.Printing;
class Program
{
[STAThread] // Required for using WebBrowser control
static void Main()
{
// HTML content to be converted
string htmlContent = "<html><body><h1>Hello, World!</h1></body></html>";
// Write HTML content to a temporary file
string tempFilePath = Path.Combine(Path.GetTempPath(), "temp.html");
File.WriteAllText(tempFilePath, htmlContent);
// Initialize a WebBrowser to render HTML
WebBrowser webBrowser = new WebBrowser();
webBrowser.DocumentCompleted += (sender, e) =>
{
// Create a PrintDocument for the printing task
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += (s, args) =>
{
// Render the HTML content onto the Graphics object of PrintPageEventArgs
args.Graphics.DrawString(htmlContent, new Font("Arial", 12), Brushes.Black, new PointF(100, 100));
};
// Use a standard print controller for silent printing
printDoc.PrintController = new StandardPrintController();
// Trigger the printing process
printDoc.Print();
// Exit the application once printing is complete
Application.ExitThread();
};
// Load the HTML file into the WebBrowser control
webBrowser.Url = new Uri(tempFilePath);
// Run the application, which processes events like HTML rendering
Application.Run();
}
}
using System;
using System.IO;
using System.Windows.Forms; // You need to add a reference to System.Windows.Forms
using System.Drawing.Printing;
class Program
{
[STAThread] // Required for using WebBrowser control
static void Main()
{
// HTML content to be converted
string htmlContent = "<html><body><h1>Hello, World!</h1></body></html>";
// Write HTML content to a temporary file
string tempFilePath = Path.Combine(Path.GetTempPath(), "temp.html");
File.WriteAllText(tempFilePath, htmlContent);
// Initialize a WebBrowser to render HTML
WebBrowser webBrowser = new WebBrowser();
webBrowser.DocumentCompleted += (sender, e) =>
{
// Create a PrintDocument for the printing task
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += (s, args) =>
{
// Render the HTML content onto the Graphics object of PrintPageEventArgs
args.Graphics.DrawString(htmlContent, new Font("Arial", 12), Brushes.Black, new PointF(100, 100));
};
// Use a standard print controller for silent printing
printDoc.PrintController = new StandardPrintController();
// Trigger the printing process
printDoc.Print();
// Exit the application once printing is complete
Application.ExitThread();
};
// Load the HTML file into the WebBrowser control
webBrowser.Url = new Uri(tempFilePath);
// Run the application, which processes events like HTML rendering
Application.Run();
}
}
Imports System
Imports System.IO
Imports System.Windows.Forms ' You need to add a reference to System.Windows.Forms
Imports System.Drawing.Printing
Friend Class Program
<STAThread>
Shared Sub Main()
' HTML content to be converted
Dim htmlContent As String = "<html><body><h1>Hello, World!</h1></body></html>"
' Write HTML content to a temporary file
Dim tempFilePath As String = Path.Combine(Path.GetTempPath(), "temp.html")
File.WriteAllText(tempFilePath, htmlContent)
' Initialize a WebBrowser to render HTML
Dim webBrowser As New WebBrowser()
AddHandler webBrowser.DocumentCompleted, Sub(sender, e)
' Create a PrintDocument for the printing task
Dim printDoc As New PrintDocument()
AddHandler printDoc.PrintPage, Sub(s, args)
' Render the HTML content onto the Graphics object of PrintPageEventArgs
args.Graphics.DrawString(htmlContent, New Font("Arial", 12), Brushes.Black, New PointF(100, 100))
End Sub
' Use a standard print controller for silent printing
printDoc.PrintController = New StandardPrintController()
' Trigger the printing process
printDoc.Print()
' Exit the application once printing is complete
Application.ExitThread()
End Sub
' Load the HTML file into the WebBrowser control
webBrowser.Url = New Uri(tempFilePath)
' Run the application, which processes events like HTML rendering
Application.Run()
End Sub
End Class
Wyjaśnienie kodu
- Kontrolka WebBrowser służy do renderowania kodu HTML.
- Klasa PrintDocument służy do definiowania zachowania drukowania.
- Ten przykład nie tworzy bezpośrednio pliku PDF; trzeba by go rozszerzyć, aby zintegrować logikę tworzenia surowych plików PDF, taką jak ręczne rysowanie tekstu i kształtów lub praca ze strumieniami.
To podejście ma swoje ograniczenia i może stać się skomplikowane w przypadku dużych lub sformatowanych dokumentów HTML. Jeśli pozwala na to dany przypadek użycia, korzystanie z biblioteki takiej jak IronPDF jest zazwyczaj znacznie bardziej wydajne i oferuje bogatszy zestaw funkcji.
Zalety i wady korzystania z wbudowanych funkcji .NET
Zalety
- Brak zależności zewnętrznych: Unikanie bibliotek zewnętrznych może zmniejszyć złożoność zarządzania zależnościami stron trzecich w projekcie.
- Bezpłatne: Ponieważ ta metoda wykorzystuje wyłącznie natywne komponenty .NET, nie ma żadnych opłat licencyjnych ani dodatkowych kosztów.
- Precyzyjna kontrola: Masz pełną kontrolę nad sposobem renderowania i drukowania treści, co pozwala na dostosowanie do indywidualnych potrzeb.
Wady
- Ograniczone funkcje: Wbudowane narzędzia .NET nie mają możliwości dokładnego renderowania złożonego kodu HTML, CSS lub JavaScript. Zaawansowane układy, responsywne projekty lub dynamiczna treść mogą nie być obsługiwane.
- Czasochłonne wdrożenie: Konieczne jest napisanie niestandardowego kodu do obsługi renderowania, paginacji i tworzenia plików PDF, co może prowadzić do wyższych kosztów rozwoju.
- Niska skalowalność: W przypadku aplikacji o dużej skali lub wymagających wysokiej wydajności takie podejście może być nieefektywne i podatne na wąskie gardła.
- Brak natywnej obsługi plików PDF: ten proces nie tworzy bezpośrednio plików PDF; trzeba by zaimplementować niestandardową logikę, aby wygenerować plik PDF na podstawie wydruku PRINT.
Wprowadzenie do IronPDF

IronPDF to biblioteka .NET, która pozwala programistom z łatwością konwertować HTML na PDF. Obsługuje szeroki zakres funkcji, w tym CSS, JavaScript, a nawet osadzone obrazy. Dzięki IronPDF możesz tworzyć pliki PDF, które wyglądają dokładnie tak samo jak Twoje strony HTML, zapewniając płynne przejście między formatami. Ta biblioteka jest szczególnie przydatna w aplikacjach internetowych, które muszą generować dynamiczne dokumenty PDF w locie.
IronPDF pozwala programistom na płynną integrację funkcji PDF z aplikacjami .NET bez konieczności ręcznego zarządzania strukturami plików PDF. IronPDF wykorzystuje silnik renderujący oparty na przeglądarce Chrome do konwersji stron HTML (w tym złożonych elementów CSS, JavaScript i obrazów) na dobrze ustrukturyzowane dokumenty PDF. Można go używać do generowania raportów, faktur, e-booków lub dowolnego rodzaju dokumentów, które muszą być przedstawione w formacie PDF.
IronPDF jest wszechstronnym narzędziem, oferującym nie tylko renderowanie plików PDF, ale także szeroki zakres opcji manipulacji plikami PDF, takich jak edycja, obsługa formularzy, szyfrowanie i wiele innych.
Najważniejsze cechy IronPDF
-
Konwersja HTML do PDF
-
Renderowanie HTML: IronPDF może konwertować dokumenty w formacie HTML lub strony internetowe (w tym HTML z CSS, obrazami i JavaScript) bezpośrednio do dokumentu PDF. Może również konwertować przy użyciu szablonu HTML. Jest to idealne rozwiązanie do generowania plików PDF z dynamicznych treści internetowych.
-
Obsługa nowoczesnego HTML/CSS: IronPDF obsługuje nowoczesne HTML5, CSS3 i JavaScript, zapewniając dokładne renderowanie treści internetowych w formacie PDF z zachowaniem układu, czcionek i elementów interaktywnych.
-
Zaawansowane renderowanie: Wykorzystuje silnik renderujący Chrome (poprzez Chromium) do dokładnego generowania plików PDF o wysokiej jakości, dzięki czemu jest bardziej niezawodny niż wiele innych bibliotek do konwersji HTML na PDF.
- Adres URL strony internetowej do pliku PDF: IronPDF może przyjąć jako dane wejściowe ciąg znaków adresu URL strony internetowej i przekonwertować go do formatu PDF.
-
-
Niestandardowe nagłówki i stopki
-
IronPDF pozwala programistom dodawać niestandardowe nagłówki i stopki do dokumentów PDF, które mogą zawierać treści dynamiczne, takie jak numery stron, tytuł dokumentu lub niestandardowy tekst.
- Nagłówki i stopki można dodawać do poszczególnych stron lub jako spójne elementy w całym dokumencie.
-
-
Obsługa JavaScript w plikach PDF
-
IronPDF umożliwia wykonywanie kodu JavaScript w treści HTML przed wygenerowaniem pliku PDF. Umożliwia to dynamiczne renderowanie treści, takie jak obliczenia w formularzach lub interaktywność w generowanych plikach PDF.
- JavaScript jest przydatny podczas tworzenia plików PDF z dynamicznych stron internetowych lub generowania raportów wymagających logiki po stronie klienta.
-
-
Edytuj istniejące pliki PDF
-
IronPDF umożliwia edycję istniejących plików PDF. Możesz modyfikować tekst, obrazy i dodawać adnotacje do istniejących plików PDF. Ta funkcja jest przydatna do umieszczania znaków wodnych w dokumentach, dodawania podpisów lub aktualizowania treści w plikach PDF.
- Wyodrębnianie i modyfikowanie tekstu pozwala na programową manipulację treścią w dokumencie PDF.
-
-
Łączenie i dzielenie plików PDF
- IronPDF pozwala na połączenie wielu plików PDF w jeden dokument lub podzielenie dużego pliku PDF na mniejsze pliki. Jest to idealne rozwiązanie dla procesów, w których dokumenty muszą być łączone lub dzielone na łatwiejsze do zarządzania części.
-
Obsługa formularzy interaktywnych
-
Za pomocą IronPDF można tworzyć, wypełniać i edytować formularze PDF. Zapewnia pełną obsługę interaktywnych formularzy (takich jak pola tekstowe, pola wyboru i przyciski opcji) oraz umożliwia wstępne wypełnianie formularzy danymi.
- IronPDF umożliwia również wyodrębnianie danych z formularzy z istniejących plików PDF, co ułatwia odczyt i przetwarzanie tych danych programowo.
-
-
Manipulacja stronami
-
IronPDF oferuje różne metody manipulowania poszczególnymi stronami w dokumencie PDF, takie jak obracanie stron, usuwanie stron lub zmiana ich kolejności. Pomoże to w dostosowaniu struktury końcowego dokumentu.
- Można również dodawać nowe strony do istniejącego pliku PDF lub usuwać niepotrzebne strony.
-
-
Bezpieczeństwo i szyfrowanie
-
IronPDF umożliwia zastosowanie ochrony hasłem i szyfrowania plików PDF, zapewniając bezpieczeństwo dokumentów. Można ustawić uprawnienia użytkowników, takie jak uniemożliwienie drukowania, kopiowania lub edycji pliku PDF.
- Do plików PDF można również dodawać podpisy cyfrowe w celu weryfikacji autentyczności, zapewniając dodatkową warstwę bezpieczeństwa dla poufnych dokumentów.
-
-
Znak wodny i branding
-
Dodawanie znaków wodnych do dokumentów PDF jest łatwe dzięki IronPDF. Możesz nakładać tekst lub obrazy jako znaki wodne na strony, zapewniając ochronę przed nieautoryzowanym kopiowaniem lub rozpowszechnianiem dokumentów.
- Ta funkcja jest często wykorzystywana w celach brandingowych, gdy logo lub tekst muszą pojawiać się spójnie na wszystkich stronach dokumentu.
-
-
Wyodrębnianie tekstu i obrazów
-
IronPDF umożliwia wyodrębnianie tekstu i obrazów z dokumentów PDF, pozwalając programistom na pozyskiwanie danych do przetwarzania lub ponownego wykorzystania.
- Jest to przydatne w sytuacjach, gdy trzeba przeanalizować zawartość pliku PDF, wyodrębnić informacje z formularzy lub pobrać obrazy do dalszego wykorzystania.
-
-
Obsługa Unicode i wielu języków
-
IronPDF oferuje solidną obsługę Unicode, co oznacza, że może obsługiwać znaki i czcionki międzynarodowe, dzięki czemu idealnie nadaje się do generowania plików PDF w wielu językach.
- Obsługuje takie języki jak chiński, arabski, rosyjski i inne, umożliwiając tworzenie wielojęzycznych dokumentów PDF.
-
-
Zoptymalizowane pod kątem wydajności
- IronPDF jest zoptymalizowany pod kątem wydajności i może obsługiwać duże dokumenty PDF oraz dużą liczbę żądań. Biblioteka zapewnia, że nawet podczas pracy z dużymi zbiorami danych lub obrazami generowanie plików PDF pozostaje szybkie i wydajne.
-
API i narzędzia przyjazne dla programistów
-
IronPDF jest wyposażony w kompleksowy i łatwy w użyciu interfejs API. Programiści mogą szybko rozpocząć pracę, wykorzystując proste wywołania metod do wykonywania złożonych zadań.
- Interfejs API jest dobrze udokumentówany, co ułatwia integrację IronPDF z dowolną aplikacją C# lub .NET.
-
-
Obsługa wielu platform
- IronPDF jest kompatybilny z wieloma platformami, co oznacza, że można go używać zarówno w środowisku Windows, jak i Linux, co pozwala na generowanie i edycję plików PDF w różnych systemach operacyjnych.
Jak przekonwertować HTML na PDF za pomocą IronPDF
using IronPdf;
class Program
{
static void Main()
{
// Specify license key
License.LicenseKey = "Your Key";
// Create a new ChromePdfRenderer object
var Renderer = new ChromePdfRenderer();
// Define the HTML string to be converted
string htmlContent = "<html><body><h1>IronPDF: Easily Convert HTML to PDF</h1></body></html>";
// Convert the HTML string to a PDF document
var document = Renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF document to a file
document.SaveAs("html2Pdf.pdf");
}
}
using IronPdf;
class Program
{
static void Main()
{
// Specify license key
License.LicenseKey = "Your Key";
// Create a new ChromePdfRenderer object
var Renderer = new ChromePdfRenderer();
// Define the HTML string to be converted
string htmlContent = "<html><body><h1>IronPDF: Easily Convert HTML to PDF</h1></body></html>";
// Convert the HTML string to a PDF document
var document = Renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF document to a file
document.SaveAs("html2Pdf.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main()
' Specify license key
License.LicenseKey = "Your Key"
' Create a new ChromePdfRenderer object
Dim Renderer = New ChromePdfRenderer()
' Define the HTML string to be converted
Dim htmlContent As String = "<html><body><h1>IronPDF: Easily Convert HTML to PDF</h1></body></html>"
' Convert the HTML string to a PDF document
Dim document = Renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF document to a file
document.SaveAs("html2Pdf.pdf")
End Sub
End Class
Wyjaśnienie fragmentu kodu
1. Konfiguracja klucza licencyjnego
Program rozpoczyna się od ustawienia klucza licencyjnego IronPDF, który jest wymagany do odblokowania pełnej funkcjonalności biblioteki.
2. Tworzenie renderera
Inicjowana jest instancja ChromePdfRenderer. Ten komponent odpowiada za konwersję treści HTML do dokumentu PDF, pełniąc rolę pomostu między surowym kodem HTML a końcowym wynikiem.
3. Definiowanie treści HTML
Tworzona jest zmienna typu string, htmlContent, w celu przechowywania struktury HTML, która zostanie przekonwertowana na plik PDF. W tym przykładzie znajduje się prosty nagłówek.
4. Konwersja HTML do PDF
Metoda RenderHtmlAsPdf() jest wywoływana na instancji ChromePdfRenderer, przekazując ciąg HTML jako dane wejściowe. Ta funkcja przetwarza treść i przekształca ją w dokument PDF.
5. Zapisywanie pliku PDF
Na koniec wygenerowany plik PDF jest zapisywany jako "html2Pdf.pdf" przy użyciu metody SaveAs() i przechowywany na dysku w celu późniejszego wykorzystania.
Wynik

Informacje o licencji (dostępna wersja próbna)
Aby korzystać z pełnej funkcjonalności IronPDF, wymagany jest ważny klucz licencyjny. Licencję Trial można uzyskać na oficjalnej stronie internetowej. Przed użyciem biblioteki IronPDF należy ustawić klucz licencyjny w następujący sposób:
IronPdf.License.LicenseKey = "your key";
IronPdf.License.LicenseKey = "your key";
IronPdf.License.LicenseKey = "your key"
Gwarantuje to, że biblioteka działa bez ograniczeń.
Wnioski
Chociaż korzystanie z wbudowanych funkcji .NET do konwersji HTML na PDF może być realnym rozwiązaniem w prostych przypadkach, często wymaga to sporego wysiłku i nie oferuje nowoczesnych możliwości. Natomiast biblioteki takie jak IronPDF oferują solidną funkcjonalność, szybsze tworzenie oprogramowania oraz obsługę zaawansowanego renderowania HTML, co sprawia, że są one najczęściej wybierane przez większość programistów. Ostateczna decyzja zależy od wymagań projektu, budżetu i priorytetów programistycznych.
Często Zadawane Pytania
Jakie są zalety korzystania z natywnych funkcji platformy .NET do konwersji HTML na PDF?
Korzystanie z natywnych funkcji .NET pozwala uniknąć zewnętrznych zależności i dodatkowych kosztów, zapewniając wysoki poziom kontroli nad procesami renderowania i drukowania.
Jakie wyzwania mogą napotkać programiści podczas konwersji HTML do PDF w języku C# bez użycia biblioteki?
Wyzwania obejmują ograniczone możliwości wbudowanych metod, złożoność obsługi dokumentów HTML o złożonym formatowaniu lub dużych rozmiarach oraz konieczność zastosowania dodatkowej logiki niestandardowej do tworzenia plików PDF.
W jaki sposób programiści mogą konwertować HTML na PDF przy użyciu .NET bez biblioteki zewnętrznej?
Programiści mogą zapisać treść HTML w pliku tymczasowym, wyrenderować ją za pomocą kontrolki WebBrowser, a następnie użyć klasy PrintDocument do utworzenia zadania drukowania w celu konwersji do formatu PDF.
Jakie cechy sprawiają, że biblioteka .NET jest lepszym wyborem do konwersji HTML na PDF?
Biblioteka .NET, taka jak IronPDF, oferuje szerokie wsparcie dla nowoczesnego HTML, CSS, JavaScript i obrazów, a także funkcje edycji, łączenia i dzielenia plików PDF, obsługi formularzy oraz zabezpieczeń.
Dlaczego IronPDF może być lepszym rozwiązaniem niż korzystanie z natywnych metod .NET?
IronPDF upraszcza proces konwersji dzięki funkcjom takim jak wykonywanie kodu JavaScript, niestandardowe nagłówki oraz wydajna obsługa dynamicznych i złożonych treści internetowych, zapewniając solidne i skalowalne rozwiązanie.
Czy IronPDF obsługuje interaktywne formularze i złożone układy w plikach PDF?
Tak, IronPDF obsługuje interaktywne formularze i może dokładnie renderować złożone układy, dzięki czemu nadaje się do tworzenia profesjonalnej jakości plików PDF na podstawie treści internetowych.
Czy IronPDF jest zoptymalizowany pod kątem generowania dużych ilości plików PDF?
Tak, IronPDF został zaprojektowany do wydajnej obsługi dużych dokumentów PDF i dużej liczby żądań, co czyni go idealnym rozwiązaniem dla aplikacji na dużą skalę.
Czy IronPDF oferuje obsługę wielu platform?
IronPDF jest kompatybilny z wieloma systemami operacyjnymi, w tym Windows i Linux, zapewniając elastyczność w różnych środowiskach programistycznych.
W jaki sposób IronPDF zapewnia bezpieczeństwo dokumentów PDF?
IronPDF oferuje opcje ochrony hasłem, szyfrowania, uprawnień użytkowników oraz podpisów cyfrowych w celu zabezpieczenia dokumentów PDF.
Co jest potrzebne, aby uzyskać dostęp do wszystkich funkcji IronPDF?
Aby odblokować pełną funkcjonalność IronPDF, wymagany jest ważny klucz licencyjny. Programiści mogą uzyskać Licencję Trial na oficjalnej stronie internetowej.
Czy IronPDF obsługuje .NET 10 i czy są jakieś szczególne kwestie, które należy wziąć pod uwagę podczas korzystania z niego w projekcie .NET 10?
Tak, IronPDF jest w pełni kompatybilny z .NET 10 — obsługuje .NET 10 (i wcześniejsze wersje) w trybie natywnym, w tym wszystkie nowoczesne interfejsy API, bez konieczności specjalnej konfiguracji lub stosowania obejść. Można go zainstalować za pośrednictwem NuGet i korzystać z funkcji takich jak renderowanie oparte na przeglądarce Chrome, wykonywanie kodu JS oraz responsywny CSS, tak jak w przypadku wcześniejszych wersji .NET.
Czym różni się wykorzystanie natywnych funkcji .NET do konwersji HTML na PDF w przypadku platformy .NET 10 w porównaniu z wcześniejszymi wersjami .NET?
Wykorzystanie platformy .NET 10 zazwyczaj zapewnia lepszą wydajność, ulepszone interfejsy API oraz bardziej przewidywalne zachowanie — zwłaszcza w kontekście aplikacji desktopowych lub WindowsForms. Nadal jednak obowiązują ograniczenia związane z ręcznym renderowaniem (np. przy użyciu WebBrowser i PrintDocument). W przeciwieństwie do IronPDF, który jest zoptymalizowany pod kątem platformy .NET 10, metody natywne nie obsługują nowoczesnych standardów HTML/CSS/JS i wymagają większego nakładu pracy w celu dostosowania do różnorodnych treści.




