
Jak wyodrębnić dane z pliku PDF w języku C#
IronPDF umożliwia programistom C# konwersję HTML do formatu PDF w zaledwie 5 krokach za pomocą prostej aplikacji Windows Forms, wymagającej jedynie instalacji pakietu NuGet i kilku wierszy kodu, aby renderować HTML jako profesjonalne dokumenty PDF.
Programiści C# mogą używać IronPDF do generowania plików PDF z HTML. W tym artykułe proces ten zostanie zilustrowany na przykładzie aplikacji C# Windows Forms utworzonej przy użyciu .NET Framework.
Aby utworzyć projekt w programie Visual Studio 2019, wykonaj poniższe czynności.
Jak utworzyć projekt Visual Studio do generowania plików PDF?
Najpierw otwórz program Visual Studio 2019.

Kliknij "Utwórz nowy projekt".
Teraz wybierz "Aplikacja Windows Forms" z listy szablonów i naciśnij "Dalej". Pojawi się następujące okno:

Wpisz nazwę projektu "Tworzenie plików PDF za pomocą IronPDF".

Kliknij przycisk "Utwórz". Projekt zostanie utworzony zgodnie z poniższym opisem.

Dlaczego w tym samouczku warto używać Windows Forms?
Windows Forms zapewnia proste środowisko wizualne dla początkujących, którzy uczą się generowania plików PDF w języku C#. Oferuje kreator typu "przeciągnij i upuść", który ułatwia tworzenie interfejsów użytkownika bez konieczności posiadania rozległej wiedzy z zakresu HTML lub tworzenia stron internetowych. Model programowania sterowanego zdarzeniami w Windows Forms dobrze wpisuje się w sposób, w jaki młodsi programiści postrzegają przebieg aplikacji, co czyni go idealnym do demonstracji podstawowych możliwości IronPDF w zakresie konwersji HTML do PDF.
W przypadku aplikacji produkcyjnych warto rozważyć wykorzystanie .NET Core do generowania plików PDF w sieci WWW lub aplikacji konsolowych do przetwarzania wsadowego. Jednak Windows Forms pozostaje doskonałym wyborem dla narzędzi wewnętrznych, programów użytkowych na komputery stacjonarne oraz środowisk edukacyjnych, w których podczas tworzenia oprogramowania potrzebna jest szybka informacja zwrotna w formie wizualnej.
Która wersja Visual Studio działa najlepiej?
Visual Studio 2019 lub nowsze zapewnia najlepsze wrażenia podczas tworzenia oprogramowania z wykorzystaniem IronPDF. Te wersje zawierają ulepszone zarządzanie pakietami NuGet, lepsze wsparcie IntelliSense dla nowoczesnych funkcji C# oraz ulepszone możliwości debugowania, które pomagają podczas rozwiązywania problemów z generowaniem PDF.
Chociaż Visual Studio 2022 oferuje najnowsze funkcje i ulepszenia wydajności, Visual Studio 2019 pozostaje szeroko stosowane i w pełni obsługiwane. Obie wersje działają płynnie z pakietami NuGet firmy IronPDF. Programiści korzystający z Visual Studio Code nadal mogą pracować z IronPDF, choć będą musieli używać interfejsu wiersza poleceń do zarządzania pakietami i zrezygnować z niektórych funkcji projektowania wizualnego przedstawionych w tym samouczku.
Czy mogę używać .NET Core zamiast .NET Framework?
Oczywiście! IronPDF w pełni obsługuje .NET Core, .NET 5, .NET 6 i .NET 7+. W rzeczywistości korzystanie z .NET Core lub nowszych wersji oferuje kilka zalet, w tym kompatybilność międzyplatformową, lepszą wydajność oraz dostęp do najnowszych funkcji języka C#.
Aby korzystać z .NET Core, wystarczy wybrać odpowiednią platformę docelową podczas tworzenia projektu. Przykłady kodu w tym samouczku działają identycznie we wszystkich obsługiwanych frameworkach. Aby zapewnić elastyczność wdrożenia, aplikacje .NET Core mogą działać nie tylko w systemie Windows, ale także w systemach Linux i macOS, co czyni je idealnymi do wdrożeń w chmurze i środowiskach kontenerowych.
Jak zainstalować IronPDF za pomocą menedżera pakietów NuGet?
- Najpierw kliknij przycisk "Narzędzia" na pasku menu.
- Otworzy się menu. Teraz kliknij opcję NuGet Package Manager.
- Otworzy się kolejne podmenu. Teraz kliknij opcję o nazwie Package Manager Console.

Zostaniesz przeniesiony do nowego ekranu z wiersza poleceń. W nim wpisz polecenie do zainstalowania pakietu IronPDF.

Naciśnij klawisz Enter po wpisaniu polecenia. Upewnij się, że Twój komputer/laptop jest podłączony do Internetu. Pakiet IronPDF zostanie automatycznie dodany do istniejącego projektu.

Powyższy ekran pokazuje pakiet pomyślnie dodany do projektu.
Jakie są alternatywne sposoby instalacji IronPDF?
Oprócz konsoli menedżera pakietów masz kilka opcji instalacji IronPDF:
-
Interfejs użytkownika menedżera pakietów NuGet: Kliknij prawym przyciskiem myszy na swój projekt, wybierz "Zarządzaj pakietami NuGet", wyszukaj "IronPDF" i kliknij "Zainstaluj". Świetne rozwiązanie dla początkujących, którzy preferują interfejsy graficzne.
-
PackageReferencew .csproj: W przypadku nowoczesnych projektów .NET, można dodać IronPDF bezpośrednio do pliku projektu:
<PackageReference Include="IronPdf" Version="*" />
- .NET CLI: Dla deweloperów, którzy preferują narzędzia wiersza poleceń lub używają Visual Studio Code:
- Pobieranie ręczne: Można pobrać bibliotekę DLL bezpośrednio ze strony internetowej IronPDF i dodać ją jako odwołanie, choć takie podejście utrudnia aktualizacje.
Dlaczego podczas instalacji potrzebne jest połączenie z Internetem?
NuGet wymaga połączenia z Internetem, aby pobrać IronPDF i jego zależności z repozytorium NuGet.org. Pakiet zawiera podstawową bibliotekę IronPDF oraz pliki binarne silnika renderującego Chrome niezbędne do konwersji HTML na PDF.
W przypadku instalacji offline można:
- Utwórz lokalną pamięć podręczną pakietów NuGet
- Użyj instalatora IronPDF dla systemu Windows
- Pobierz pakiety na podłączony komputer i przenieś je ręcznie
Należy pamiętać, że silnik renderujący IronPDF wymaga dodatkowych komponentów uruchomieniowych, które mogą zostać pobrane przy pierwszym użyciu, dlatego podczas początkowego generowania plików PDF zalecane jest połączenie z Internetem.
Jak mogę sprawdzić, czy instalacja przebiegła pomyślnie?
Po instalacji sprawdź, czy IronPDF działa poprawnie, zwracając uwagę na następujące wskaźniki:
-
Węzeł Referencje: W Eksploratorze rozwiązań rozwiń węzeł Referencje. Powinieneś zobaczyć "IronPDF" wymienione wśród odwołań do projektu.
-
Wsparcie
IntelliSense: Wpiszusing IronPdf;na górze pliku C#.IntelliSensepowinno rozpoznać przestrzeń nazw bez błędów. -
Prosty kod testowy: Dodaj ten podstawowy test, aby zweryfikować funkcjonalność:
using IronPdf;
// Quick verification test
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Test</h1>");
// If no exceptions occur, IronPDF is installed correctlyImports IronPdf
' Quick verification test
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Test</h1>")
' If no exceptions occur, IronPDF is installed correctly- Menedżer pakietów: Uruchom
Get-Package IronPdfw Konsoli Menedżera Pakietów, aby zobaczyć informacje o wersji.
W razie problemów zapoznaj się z przewodnikiem dotyczącym rozwiązywania problemów lub sprawdź, czy Twój system spełnia wymagania.
Jak zaprojektować interfejs użytkownika do generowania plików PDF?
Teraz dodaj etykietę i ustaw tekst na "Utwórz plik PDF z HTML za pomocą IronPDF".

Następnie dodaj pole tekstowe Rich Text Box i przycisk z panelu narzędzi. Ustaw tekst przycisku na "Konwertuj".

Dlaczego używać RichTextBox zamiast zwykłego TextBox?
RichTextBox oferuje kilka zalet dla danych wejściowych HTML w scenariuszach generowania PDF:
-
Wsparcie dla wielu linii: HTML zazwyczaj obejmuje wiele linii, a
RichTextBoxobsługuje to naturalnie, podczas gdyTextBoxwymaga ustawienia Multiline = true. -
Zachowanie formatowania: Podczas gdy wprowadzamy zwykły HTML,
RichTextBoxzachowuje formatowanie, takie jak wcięcia i znaki nowej linii, co sprawia, że HTML jest bardziej czytelny podczas tworzenia. -
Większa pojemność:
RichTextBoxmoże obsługiwać większe ilości tekstu, co jest przydatne przy pracy z pełnymi dokumentami HTML zamiast fragmentami. -
Potencjalne podświetlanie składni: Chociaż nie jest to zaimplementowane w tym prostym przykładzie,
RichTextBoxmożna rozszerzyć o podświetlanie składni dla HTML, poprawiając doświadczenie dewelopera.
W przypadku aplikacji produkcyjnych warto rozważyć użycie dedykowanego kontrolki edytora HTML lub integrację z zewnętrznymi edytorami, aby zapewnić użytkownikom lepsze wrażenia.
Jakie inne elementy sterujące mogłyby ulepszyć interfejs użytkownika?
Aby stworzyć bardziej niezawodną aplikację do generowania plików PDF, rozważ dodanie następujących elementów sterujących:
-
WebBrowserKontrola: Wyświetlaj podgląd HTML przed konwersją, pomagając użytkownikom zobaczyć, jak będzie wyglądał ich PDF. To naśladuje silnik renderowania Chrome IronPDF. -
ProgressBar: Pokazuj postęp konwersji dla dużych dokumentów lub operacji zbiorczych. -
ComboBoxdla szablonów: Dostarczaj wstępnie zdefiniowane szablony HTML dla typowych dokumentów, takich jak faktury czy raporty. -
PropertyGrid: Pozwól użytkownikom modyfikować ustawienia renderowania PDF, takie jak rozmiar strony, marginesy i orientacja. -
TabControl: Podziel dane wejściowe HTML, podgląd i ustawienia PDF na zorganizowane zakładki.
Przykład dodania paska stanu do informacji zwrotnej:
// Add to your form
StatusStrip statusStrip = new StatusStrip();
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("Ready");
statusStrip.Items.Add(statusLabel);
this.Controls.Add(statusStrip);' Add to your form
Dim statusStrip As New StatusStrip()
Dim statusLabel As New ToolStripStatusLabel("Ready")
statusStrip.Items.Add(statusLabel)
Me.Controls.Add(statusStrip)Jak nazwać moje kontrolki zgodnie z najlepszymi praktykami?
Stosowanie spójnych konwencji nazewniczych poprawia czytelność kodu i ułatwia jego utrzymanie. Oto zalecane praktyki dotyczące formularza generowania plików PDF:
-
Użyj opisowych prefiksów:
txtHtmldla danych wejściowych HTMLRichTextBoxbtnConvertdla przycisku KonwertujlblTitledla etykiety tytułowej
-
Bądź konsekwentny: Wybierz either camelCase lub
PascalCasei trzymaj się tego w całym projekcie. -
Unikaj domyślnych nazw: Zastąp
richTextBox1znaczącymi nazwami, takimi jakrtbHtmlInput. -
Grupowanie powiązanych elementów sterujących: W przypadku złożonych formularzy należy stosować prefiksy grupujące funkcje:
pdfPageSize,pdfOrientationdla ustawień specyficznych dla PDFhtmlTemplate,htmlPreviewdla kontrolowanych związanych z HTML
-
Rozważ dostępność: Ustaw właściwość
Namedla czytników ekranowych iAccessibleNamedla lepszej użyteczności.
Dobre nazewnictwo sprawia, że kod jest samodokumentujący się i pomaga przy wdrażaniu funkcji takich jak ekstrakcja danych z formularzy.
Jak napisać kod do konwersji HTML na PDF?
Kliknij dwukrotnie przycisk "Konwertuj". Otworzy się okno kodu z przyciskiem konwersji.

Dodaj kod importowania biblioteki IronPDF na górze pliku .cs.
Najpierw dodaj poniższy kod, aby korzystać z metod biblioteki IronPDF.
using IronPdf;Imports IronPdfPoniżej znajduje się początkowy kod do zdarzenia btnConvert_Click, który jest obecnie pusty:
private void btnConvert_Click(object sender, EventArgs e)
{
}Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)
End SubTeraz napisz następujący kod w zdarzeniu kliknięcia przycisku:
private void btnConvert_Click(object sender, EventArgs e)
{
// Declare an HtmlToPdf object
var HtmlLine = new HtmlToPdf();
// Get HTML text from the user
string strHtml = txtHtml.Text;
// Create SaveFileDialog to choose the save path for the PDF file
SaveFileDialog saveFileDialog = new SaveFileDialog
{
InitialDirectory = @"D:\",
Title = "Save PDF",
CheckPathExists = true,
DefaultExt = "pdf",
Filter = "pdf files (*.pdf)|*.pdf",
FilterIndex = 2,
RestoreDirectory = true
};
// If the user presses Save
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
// Get the file path from the user
string filePath = saveFileDialog.FileName;
// Convert HTML to PDF and save at the specified path
using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
PDF.SaveAs(filePath);
// Clear the TextBox and show a message confirming the successful creation
txtHtml.Text = "";
MessageBox.Show("File created successfully.");
}
}Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
' Declare an HtmlToPdf object
Dim HtmlLine = New HtmlToPdf()
' Get HTML text from the user
Dim strHtml As String = txtHtml.Text
' Create SaveFileDialog to choose the save path for the PDF file
Dim saveFileDialog As New SaveFileDialog() With {
.InitialDirectory = "D:\",
.Title = "Save PDF",
.CheckPathExists = True,
.DefaultExt = "pdf",
.Filter = "pdf files (*.pdf)|*.pdf",
.FilterIndex = 2,
.RestoreDirectory = True
}
' If the user presses Save
If saveFileDialog.ShowDialog() = DialogResult.OK Then
' Get the file path from the user
Dim filePath As String = saveFileDialog.FileName
' Convert HTML to PDF and save at the specified path
Using PDF = HtmlLine.RenderHtmlAsPdf(strHtml)
PDF.SaveAs(filePath)
End Using
' Clear the TextBox and show a message confirming the successful creation
txtHtml.Text = ""
MessageBox.Show("File created successfully.")
End If
End SubWyjaśnienie:
- Obiekt
HtmlToPdfjest tworzony do wykorzystania możliwości konwersji IronPDF. - Dane wejściowe HTML są pobierane z pola tekstowego.
SaveFileDialogjest używany do monitowania użytkownika o określenie, gdzie ma być zapisany wynikowy plik PDF.- Jeśli użytkownik wybierze lokalizację pliku i naciśnie przycisk Zapisz, ścieżka zostanie pobrana.
- Dane wejściowe HTML są następnie renderowane do PDF przy użyciu
RenderHtmlAsPdfi zapisywane na wybranej ścieżce. - Po zapisaniu pole tekstowe jest czyszczone, a na ekranie pojawia się okno z komunikatem potwierdzającym utworzenie pliku PDF.
Jakie obsługa błędów powinienem dodać do tego kodu?
Solidna obsługa błędów ma kluczowe znaczenie dla aplikacji do generowania plików PDF w środowisku produkcyjnym. Oto ulepszona wersja z kompleksową obsługą błędów:
private void btnConvert_Click(object sender, EventArgs e)
{
try
{
// Validate input
if (string.IsNullOrWhiteSpace(txtHtml.Text))
{
MessageBox.Show("Please enter HTML content.", "Validation Error",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var renderer = new ChromePdfRenderer();
string strHtml = txtHtml.Text;
SaveFileDialog saveFileDialog = new SaveFileDialog
{
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
Title = "Save PDF",
CheckPathExists = true,
DefaultExt = "pdf",
Filter = "pdf files (*.pdf)|*.pdf",
FilterIndex = 1,
RestoreDirectory = true
};
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
// Show progress cursor
Cursor.Current = Cursors.WaitCursor;
using var pdf = renderer.RenderHtmlAsPdf(strHtml);
pdf.SaveAs(saveFileDialog.FileName);
txtHtml.Text = "";
MessageBox.Show("PDF created successfully!", "Success",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (IronPdf.Exceptions.IronPdfProductException ex)
{
// Handle licensing issues
MessageBox.Show($"Licensing error: {ex.Message}", "License Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
}
catch (Exception ex)
{
MessageBox.Show($"An error occurred: {ex.Message}", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
// Log the full exception for debugging
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
Try
' Validate input
If String.IsNullOrWhiteSpace(txtHtml.Text) Then
MessageBox.Show("Please enter HTML content.", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return
End If
Dim renderer As New ChromePdfRenderer()
Dim strHtml As String = txtHtml.Text
Dim saveFileDialog As New SaveFileDialog With {
.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
.Title = "Save PDF",
.CheckPathExists = True,
.DefaultExt = "pdf",
.Filter = "pdf files (*.pdf)|*.pdf",
.FilterIndex = 1,
.RestoreDirectory = True
}
If saveFileDialog.ShowDialog() = DialogResult.OK Then
Try
' Show progress cursor
Cursor.Current = Cursors.WaitCursor
Using pdf = renderer.RenderHtmlAsPdf(strHtml)
pdf.SaveAs(saveFileDialog.FileName)
End Using
txtHtml.Text = ""
MessageBox.Show("PDF created successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As IronPdf.Exceptions.IronPdfProductException
' Handle licensing issues
MessageBox.Show($"Licensing error: {ex.Message}", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Cursor.Current = Cursors.Default
End Try
End If
Catch ex As Exception
MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
' Log the full exception for debugging
System.Diagnostics.Debug.WriteLine(ex.ToString())
End Try
End SubKluczowe ulepszenia w zakresie obsługi błędów:
- Sprawdzanie poprawności danych wejściowych przed przetworzeniem
- Specjalne postępowanie w przypadku wyjątków dotyczących licencji IronPDF
- Wskazanie postępu poprzez zmiany kursora
- Prawidłowe rejestrowanie wyjątków na potrzeby debugowania
- Przyjazne dla użytkownika komunikaty o błędach
Jak mogę dostosować ustawienia pliku PDF, takie jak rozmiar strony?
IronPDF zapewnia szerokie możliwości dostosowywania poprzez klasę ChromePdfRenderOptions. Oto jak wdrożyć typowe dostosowania:
private void ConvertWithCustomSettings()
{
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions = new ChromePdfRenderOptions
{
// Page setup
PaperSize = PdfPaperSize.A4,
PaperOrientation = PdfPaperOrientation.Portrait,
MarginTop = 25, // millimeters
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Rendering behavior
EnableJavaScript = true,
RenderDelay = 500, // milliseconds
CreatePdfFormsFromHtml = true,
// Headers and footers
TextHeader = new TextHeaderFooter
{
CenterText = "My Document",
FontSize = 12,
DrawDividerLine = true
},
TextFooter = new TextHeaderFooter
{
RightText = "Page {page} of {total-pages}",
FontSize = 10
}
};
// Apply custom CSS for print
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Generate PDF with custom settings
var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
pdf.SaveAs("custom-output.pdf");
}Private Sub ConvertWithCustomSettings()
Dim renderer As New ChromePdfRenderer()
' Configure rendering options
renderer.RenderingOptions = New ChromePdfRenderOptions With {
' Page setup
.PaperSize = PdfPaperSize.A4,
.PaperOrientation = PdfPaperOrientation.Portrait,
.MarginTop = 25, ' millimeters
.MarginBottom = 25,
.MarginLeft = 20,
.MarginRight = 20,
' Rendering behavior
.EnableJavaScript = True,
.RenderDelay = 500, ' milliseconds
.CreatePdfFormsFromHtml = True,
' Headers and footers
.TextHeader = New TextHeaderFooter With {
.CenterText = "My Document",
.FontSize = 12,
.DrawDividerLine = True
},
.TextFooter = New TextHeaderFooter With {
.RightText = "Page {page} of {total-pages}",
.FontSize = 10
}
}
' Apply custom CSS for print
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Generate PDF with custom settings
Dim pdf = renderer.RenderHtmlAsPdf(txtHtml.Text)
pdf.SaveAs("custom-output.pdf")
End SubAby uzyskać bardziej zaawansowane opcje dostosowywania, zapoznaj się z niestandardowymi rozmiarami papieru, niestandardowymi marginesami i ustawieniami okna wyświetlania.
Dlaczego warto używać instrukcji Using do generowania plików PDF?
Instrukcja using jest niezbędna dla właściwego zarządzania zasobami podczas generowania PDF:
-
Automatyczne usuwanie: Dokumenty PDF mogą zajmować dużo pamięci, zwłaszcza jeśli zawierają obrazy lub duże ilości treści. Instrukcja
usingzapewnia prawidłowe usunięcie obiektu PDF po użyciu. -
Zwolnienie uchwytu pliku: Bez odpowiedniego zwolnienia uchwyty plików mogą pozostać zablokowane, uniemożliwiając dalsze operacje na pliku PDF.
-
Zarządzanie pamięcią: silnik renderujący IronPDF wykorzystuje zasoby natywne, które muszą zostać zwolnione, aby zapobiec wyciekom pamięci w długo działających aplikacjach.
Oto porównanie wzorców:
// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
} // Resources automatically released here
// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
finally
{
pdf?.Dispose();
}' Recommended approach with Using
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Using ' Resources automatically released here
' Alternative with Try-Finally (more verbose)
Dim pdf As PdfDocument = Nothing
Try
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Finally
If pdf IsNot Nothing Then
pdf.Dispose()
End If
End TryDla operacji asynchronicznych, użyj await using w C# 8.0+:
await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);Await Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)Jakie popularne tagi HTML sprawdzają się najlepiej?
Silnik renderujący IronPDF dla przeglądarki Chrome obsługuje wszystkie nowoczesne tagi HTML5, ale niektóre z nich sprawdzają się szczególnie dobrze przy generowaniu plików PDF:
Struktura dokumentu:
<html>
<head>
<meta charset="UTF-8">
<style>
@media print { /* PDF-specific styles */ }
body { font-family: Arial, sans-serif; }
.page-break { page-break-after: always; }
</style>
</head>
<body>
<h1>Document Title</h1>
<div class="page-break"></div>
<h2>New Page Content</h2>
</body>
</html>
Najskuteczniejsze tagi dla plików PDF:
<h1>do<h6>: Tworzy jasną hierarchię dokumentów<table>: Doskonały dla danych strukturalnych i faktur<img>: Obsługuje osadzone obrazy i dane base64<div>z CSS: Precyzyjna kontrola układu<p>i<span>: Standardowe formatowanie tekstu<ul>i<ol>: Czyste formatowanie list
Szczególne uwagi:
- Użyj podziałów stron CSS w przypadku elementów wielostronicowych
- Osadzaj czcionki za pomocą @font-face w celu zachowania spójności
- Należy oszczędnie stosować pozycjonowanie bezwzględne
- Dokładnie przetestuj treści wygenerowane przez JavaScript
Jak przetestować aplikację do generowania plików PDF?
Po uruchomieniu projektu zobaczysz następujący ekran:

Wprowadź kod HTML w RichTextBox, na przykład:
<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
Kliknij "Konwertuj". Pojawi się okno dialogowe zapisu pliku.

Po kliknięciu przycisku "Zapisz" plik zostanie zapisany w określonej ścieżce z podaną nazwą i lokalizacją.
Które elementy HTML należy przetestować w pierwszej kolejności?
Zacznij od tych przykładów HTML o rosnącym stopniu złożoności, aby zrozumieć możliwości renderowania IronPDF:
Podstawowe formatowanie tekstu:
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.highlight { background-color: yellow; }
.important { color: red; font-weight: bold; }
</style>
</head>
<body>
<h1>Test Document</h1>
<p>This is <strong>bold</strong> and <em>italic</em> text.</p>
<p class="highlight">Highlighted text example.</p>
<p class="important">Important notice!</p>
</body>
</html>
Tabela ze stylizacją:
<table style="border-collapse: collapse; width: 100%;">
<tr style="background-color: #f2f2f2;">
<th style="border: 1px solid #ddd; padding: 8px;">Product</th>
<th style="border: 1px solid #ddd; padding: 8px;">Price</th>
</tr>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
<td style="border: 1px solid #ddd; padding: 8px;">$999</td>
</tr>
</table>
Funkcje zaawansowane:
<!-- Images -->
<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">
<!-- Page breaks -->
<div style="page-break-after: always;"></div>
<!-- Lists -->
<ul>
<li>First item</li>
<li>Second item</li>
</ul>
Przetestuj te elementy, aby upewnić się, że konwersja HTML do PDF działa zgodnie z oczekiwaniami.
Jak mogę debugować, jeśli plik PDF nie jest generowany?
W przypadku niepowodzenia generowania pliku PDF należy postępować zgodnie z poniższą systematyczną procedurą debugowania:
- Włącz rejestrowanie:
IronPdf.Logging.Logger.EnableDebugging = true;
IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;IronPdf.Logging.Logger.EnableDebugging = True
IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt"
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All- Sprawdź poprawność kodu HTML:
// Validate HTML before conversion
private bool IsValidHtml(string html)
{
try
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
return doc.ParseErrors.Count() == 0;
}
catch
{
return false;
}
}' Validate HTML before conversion
Private Function IsValidHtml(html As String) As Boolean
Try
Dim doc As New HtmlAgilityPack.HtmlDocument()
doc.LoadHtml(html)
Return doc.ParseErrors.Count() = 0
Catch
Return False
End Try
End Function- Use Chrome
DevTools:
- Zapisz kod HTML do pliku i otwórz go w przeglądarce Chrome
- Naciśnij klawisz F12, aby sprawdzić, czy nie ma błędów JavaScript
- Sprawdź konsolę pod kątem problemów
- Użyj podglądu wydruku w przeglądarce Chrome, aby sprawdzić, jak będzie wyglądał wydruk
- Typowe problemy i rozwiązania:
- Pusty plik PDF: Sprawdź, czy JavaScript wymaga dłuższego opóźnienia renderowania
- Brakujące obrazy: Upewnij się, że ścieżki do obrazów są bezwzględne lub użyj base64
- Kwestie związane z czcionkami: Prawidłowe osadzanie czcionek
- Problemy z układem: Sprawdź typy mediów CSS
- Przetestuj minimalny przykład:
// Start with the simplest possible HTML
var testHtml = "<h1>Test</h1>";
var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml);
pdf.SaveAs("test.pdf");' Start with the simplest possible HTML
Dim testHtml = "<h1>Test</h1>"
Dim pdf = New ChromePdfRenderer().RenderHtmlAsPdf(testHtml)
pdf.SaveAs("test.pdf")Jakie są typowe problemy podczas uruchamiania aplikacji?
Oto najczęstsze problemy, z jakimi borykają się początkujący programiści, oraz ich rozwiązania:
-
"IronPdf.Exceptions.
IronPdfDeploymentException"- Rozwiązanie: Upewnij się, że zainstalowano Visual C++ Runtime
- Uruchom Windows Update, aby pobrać najnowsze środowiska uruchomieniowe
-
Błędy "Odmowa dostępu"
- Nie zapisuj w katalogach chronionych (C:, Program Files)
- Użycie
Environment.SpecialFolderdla bezpiecznych ścieżek - Sprawdź uprawnienia IIS dla aplikacji internetowych
-
Duże rozmiary plików
- Zastosuj kompresję pliku PDF:
pdf.CompressImages(90); // 90% qualitypdf.CompressImages(90) ' 90% quality -
Niska wydajność
- Wprowadź renderowanie asynchroniczne, aby uzyskać lepszą responsywność
- Rozważ przetwarzanie równoległe dla wielu plików PDF
- Rozsądnie korzystaj z opóźnień renderowania
-
Brakująca treść
- Zasoby zewnętrzne mogą wymagać podania adresów URL w postaci bezwzględnej
- Treści w języku JavaScript mogą wymagać opóźnień
- Sprawdź poświadczenia sieciowe dla zasobów chronionych
W przypadku utrzymujących się problemów należy zapoznać się z obszernym przewodnikiem dotyczącym rozwiązywania problemów.
Jak wygląda ostateczny plik PDF?
Wynikowy dokument PDF będzie wyglądał następująco:

Jak mogę poprawić jakość pliku PDF?
Popraw jakość swoich plików PDF dzięki tym profesjonalnym technikom:
- Renderowanie w wysokiej rozdzielczości:
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images
renderer.RenderingOptions.DPI = 300; // Print-quality resolutionrenderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.ImageQuality = 95 ' Higher quality for images
renderer.RenderingOptions.DPI = 300 ' Print-quality resolution- Profesjonalny styl:
<style>
@page {
size: A4;
margin: 2cm;
}
body {
font-family: 'Segoe UI', Tahoma, sans-serif;
line-height: 1.6;
color: #333;
}
h1 {
color: #2c3e50;
border-bottom: 2px solid #3498db;
padding-bottom: 10px;
}
</style>
- Dodaj elementy wizualne:
- Optymalizacja pod kątem różnych zastosowań:
- Wyświetlanie na ekranie: niższa rozdzielczość (96–150 DPI), kompresja PDF
- Drukowanie: wyższa rozdzielczość (300+ DPI), kolory CMYK
- Archiwizacja: format PDF/A
Dlaczego wynik może wyglądać inaczej niż oczekiwano?
Kilka czynników może powodować różnice w renderowaniu między podglądem HTML a plikiem PDF:
- Typy mediów CSS: Pliki PDF domyślnie wykorzystują media PRINT. Dodaj style specyficzne dla druku:
@media print {
.no-print { display: none; }
body { font-size: 12pt; }
}
- Dostępność czcionek: Osadź czcionki niestandardowe, aby zapewnić spójność:
@font-face {
font-family: 'MyFont';
src: url('data:font/woff2;base64,...') format('woff2');
}
- Treści dynamiczne: Treści renderowane przez JavaScript potrzebują czasu na załadowanie:
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 secondsrenderer.RenderingOptions.RenderDelay = 2000 ' Wait 2 seconds-
Różnice między przeglądarkami: IronPDF korzysta z silnika Chromium, dlatego w celu uzyskania dokładnego podglądu należy przeprowadzić testy w przeglądarce Chrome. Dowiedz się więcej o rendererze Chrome.
-
Rozdzielczość i skalowanie: DPI monitora różni się od DPI PRINT. Użyj ustawień okna wyświetlania, aby zapewnić spójne renderowanie.
Aby uzyskać renderowanie z dokładnością co do piksela, postępuj zgodnie z przewodnikiem najlepszych praktyk dotyczących konwersji HTML do PDF.
Jakie są kolejne kroki po tym samouczku?
Powyższy samouczek wyjaśnia, jak utworzyć plik PDF z HTML przy użyciu biblioteki IronPDF.
Więcej informacji można znaleźć na oficjalnej stronie IronPDF. Biblioteka oferuje również inne funkcje, które umożliwiają pełną personalizację plików PDF, programowe łączenie i dzielenie plików lub po prostu przeglądanie przykładowych kodów ilustrujących różne funkcje.
Możesz to sprawdzić, korzystając z klucza 30-dniowego okresu próbnego. Obecnie dostępna jest doskonała oferta, w ramach której można otrzymać pięć produktów Iron Software w cenie zaledwie dwóch. Więcej informacji na temat licencji można znaleźć w sekcji Informacje o licencjach IronPDF.
Jakie zaawansowane funkcje powinienem opanować w następnej kolejności?
Po opanowaniu podstaw konwersji HTML do PDF zapoznaj się z tymi zaawansowanymi funkcjami:
- Formularze PDF: Twórz formularze do wypełnienia w celu gromadzenia danych:
// Create interactive form fields
pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));' Create interactive form fields
pdf.Form.Fields.Add(New PdfTextField("name", "Enter your name", 100, 100))-
Podpisy cyfrowe: zwiększ bezpieczeństwo i autentyczność dokumentów
-
- Asynchroniczne renderowanie dla aplikacji internetowych
- Przetwarzanie wsadowe wielu dokumentów
- Strumieniowanie oszczędzające pamięć
Zacznij od funkcji najbardziej istotnych dla wymagań Twojego projektu.
Jak przejść z wersji próbnej do produkcyjnej?
Przejście z wersji próbnej do produkcyjnej obejmuje kilka ważnych kroków:
-
Wybierz odpowiednią licencję:
- Lite: Jeden programista, jeden projekt
- Plus: Jeden programista, wiele projektów
- Professional: Małe zespoły (do 3 programistów)
- Nieograniczona: zespoły korporacyjne
-
Zastosuj swój klucz licencyjny:
// In application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or via configuration
// appsettings.json (for .NET Core)
{
"IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY"
}' In application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
' Or via configuration
' appsettings.json (for .NET Core)
' {
' "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY"
' }-
Usuń znaki wodne wersji próbnej: Wersje licencjonowane automatycznie usuwają znaki wodne wersji próbnej ze wszystkich wygenerowanych plików PDF.
-
Kwestie związane z wydajnością:
- Testowanie na danych w skali produkcyjnej
- Wdrożenie odpowiedniej obsługi błędów
- Skonfiguruj rejestrowanie w celu monitorowania
-
Lista kontrolna wdrożenia:
- Sprawdź wymagania serwera
- Test na docelowej platformie wdrożeniowej
- Skonfiguruj IIS, jeśli to konieczne
- Skonfiguruj ciągłą integrację
Szczegółowe wytyczne dotyczące licencji można znaleźć w sekcji FAQ dotyczącej licencji.
Gdzie mogę znaleźć bardziej złożone przykłady?
Poszerz swoją wiedzę o IronPDF dzięki tym obszernym zasobom:
-
- Kompleksowe opisy klas
- Sygnatury metod i parametry
- Fragmenty kodu dla każdej funkcji
-
Zasoby społeczności:
- Tag IronPDF na Stack Overflow
- Przykłady z serwisu GitHub
- Pomoc techniczna za pośrednictwem centrum pomocy
Zacznij od przykładów najbardziej zbliżonych do Twojego przypadku użycia i stopniowo odkrywaj bardziej zaawansowane funkcje w miarę potrzeb.

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.
Powiązane artykuły


