Jak przekonwertować HTML na PDF za pomocą IronPDF for Python

IronPDF zapewnia programistom Pythona bezpośrednią ścieżkę od znaczników HTML do gotowych do produkcji plików PDF — bez pośrednich narzędzi projektowych, bez zastrzeżonych silników układu, bez oddzielnego potoku renderowania. Klasa ChromePdfRenderer biblioteki wykorzystuje silnik oparty na Chromium, więc każdy kod HTML, który wyświetla się poprawnie w przeglądarce Chrome, zostanie dokładnie przekonwertowany do formatu PDF. Niniejszy samouczek przeprowadza przez każdą obsługiwaną metodę konwersji — ciągi HTML, lokalne pliki HTML i aktywne URL — a następnie omawia opcje renderowania pozwalające kontrolować rozmiar strony, marginesy, nagłówki, stopki i inne.

Dostępny jest towarzyszący samouczek dla konwersji HTML do PDF w aplikacjach .NET, jeśli potrzebujesz przepływu pracy C# lub VB.NET.

Szybki start: Konwertuj HTML do PDF w Pythonie


Spis treści


Pierwsze kroki

Jak zainstalować IronPDF dla Python?

IronPDF jest dystrybuowany za pośrednictwem pip, standardowego menedżera pakietów Python. Uruchom następujące polecenie w terminalu, aby zainstalować najnowszą wersję:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/install.sh
pip install ironpdf
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/install.sh
pip install ironpdf
SHELL

Aby przypiąć konkretną wersję — przydatne w pipeline'ach CI lub środowiskach kontenerowych — dodaj numer wersji:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/install-versioned.sh
pip install ironpdf==2024.x.x
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/install-versioned.sh
pip install ironpdf==2024.x.x
SHELL

Zwróć uwagęIronPDF for Python opiera się na bibliotece IronPDF .NET i wymaga .NET 6.0 SDK lub nowszego. Zainstaluj SDK przed uruchomieniem dowolnego kodu Python IronPDF.

Po raz pierwszy, gdy IronPDF się inicjalizuje, pobiera kompatybilny binarny plik Chromium. To pobranie zajmuje chwilę na świeżym komputerze, ale odbywa się tylko raz na środowisko. Kolejne uruchomienia rozpoczynają się znacznie szybciej, ponieważ plik binarny jest pamiętany lokalnie.


Przewodnik krok po kroku i przykłady kodu

Jak skonfigurować IronPDF przed konwersją?

Warto przed pierwszym wywołaniem konwersji wykonać dwa zadania związane z konfiguracją: ustawienie klucza licencyjnego i — opcjonalnie — skonfigurowanie lokalizacji pliku dziennika.

Importowanie pakietu

Każdy plik Python korzystający z IronPDF potrzebuje tej jednej linii importu. Umieść ją na początku pliku:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import.py
from ironpdf import *
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import.py
from ironpdf import *
PYTHON

Wszystkie klasy IronPDF — ChromePdfRenderer, PdfDocument, License, Logger i pozostałe — stają się dostępne dzięki importowi z użyciem symbolu wieloznacznego.

Ustawienie klucza licencyjnego

Bez klucza licencyjnego IronPDF dodaje kafelkowany znak wodny do każdego wygenerowanego PDF. Znak wodny jest odpowiedni do rozwoju i testowania, ale wdrożenia produkcyjne wymagają ważnego klucza.

PDF-y generowane bez klucza licencyjnego zawierają kafelkowany znak wodny. Odwiedź stronę licencyjną, aby uzyskać klucz.

Ustaw klucz przed jakimkolwiek innym wywołaniem IronPDF:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/set-license.py
from ironpdf import *

# Set the license key before any PDF operations
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/set-license.py
from ironpdf import *

# Set the license key before any PDF operations
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
PYTHON

Rozpocznij darmowy okres próbny aby otrzymać tymczasowy klucz lub kup licencję dla nieograniczonego użytku produkcyjnego.

Konfiguracja wyjścia dziennika

IronPDF zapisuje dane diagnostyczne w pliku o nazwie Default.log w katalogu roboczym skryptu. Aby przekierować logowanie do innej ścieżki lub zebrać więcej szczegółów do debugowania, ustaw właściwości Logger przed pierwszą konwersją:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/configure-logging.py
from ironpdf import *

# Configure logging before running any conversions
Logger.EnableDebugging = True
Logger.LogFilePath = "ironpdf-debug.log"
Logger.LoggingMode = Logger.LoggingModes.All
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/configure-logging.py
from ironpdf import *

# Configure logging before running any conversions
Logger.EnableDebugging = True
Logger.LogFilePath = "ironpdf-debug.log"
Logger.LoggingMode = Logger.LoggingModes.All
PYTHON

Zwróć uwagęLogger.LogFilePath musi być ustawione przed pierwszym wywołaniem konwersji do formatu PDF. Zmiany wprowadzone później nie mają wpływu na bieżącą sesję.

Szczegółowe logi są najbardziej przydatne podczas diagnozowania, dlaczego konkretna strona HTML nie renderuje się zgodnie z oczekiwaniami - rejestrują one żądania sieciowe, wydarzenia ładowania CSS i czas wykonywania JavaScript.

Jak przekonwertować ciąg znaków HTML na plik PDF?

Konwersja ciągu HTML w pamięci jest najbardziej bezpośrednim podejściem i dobrze działa, gdy HTML jest generowany programowo - na przykład z szablonu Jinja2 lub raportu opartego na bazie danych.

Podstawowa konwersja ciągu HTML

Utwórz instancję ChromePdfRenderer, przekaż ciąg HTML do RenderHtmlAsPdf i wywołaj SaveAs na zwróconym PdfDocument:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-basic.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Convert an HTML string to a PDF document
pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1><p>Generated in Python.</p>")

pdf.SaveAs("hello.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-basic.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Convert an HTML string to a PDF document
pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1><p>Generated in Python.</p>")

pdf.SaveAs("hello.pdf")
PYTHON
PDF rendered from a simple HTML string showing a heading and paragraph

RenderHtmlAsPdf przetwarza HTML dokładnie tak, jak zrobiłby to Chrome, łącznie z CSS i JavaScript.

ChromePdfRenderer przetwarza HTML, CSS i JavaScript w taki sam sposób, jak robi to nowoczesna przeglądarka. Wszystkie treści, które poprawnie renderują się w Chrome, zostaną przedstawione w dokładnym PDF.

Ciąg HTML z zewnętrznymi zasobami

Gdy ciąg HTML odwołuje się do lokalnych zasobów — arkuszy stylów, obrazów, skryptów — należy przekazać ścieżkę katalogu jako drugi argument do RenderHtmlAsPdf. IronPDF używa tej ścieżki jako bazowego URL przy rozwiązywaniu względnych odwołań:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-assets.py
from ironpdf import *

html_content = """
<html>
  <head>
    <title>Styled Report</title>
    <link rel='stylesheet' href='assets/style.css'>
  </head>
  <body>
    <h1>Monthly Report</h1>
    <img src='assets/logo.png' alt='Company logo'>
    <p>Data as of Q1 2024.</p>
  </body>
</html>
"""

renderer = ChromePdfRenderer()

# The second argument sets the base path for resolving relative asset URLs
pdf = renderer.RenderHtmlAsPdf(html_content, "./")

pdf.SaveAs("styled-report.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-assets.py
from ironpdf import *

html_content = """
<html>
  <head>
    <title>Styled Report</title>
    <link rel='stylesheet' href='assets/style.css'>
  </head>
  <body>
    <h1>Monthly Report</h1>
    <img src='assets/logo.png' alt='Company logo'>
    <p>Data as of Q1 2024.</p>
  </body>
</html>
"""

renderer = ChromePdfRenderer()

# The second argument sets the base path for resolving relative asset URLs
pdf = renderer.RenderHtmlAsPdf(html_content, "./")

pdf.SaveAs("styled-report.pdf")
PYTHON
PDF output from an HTML string that references external CSS and image assets

Zewnętrzne CSS i obrazy ładują się poprawnie, gdy podasz bazową ścieżkę do RenderHtmlAsPdf.

Bazowa ścieżka może prowadzić do dowolnego lokalnego katalogu lub udziału sieciowego. Zasoby w podkatalogach są rozwiązywane względem niej. Więcej wzorców związanych z zaawansowanymi ciągami HTML znajdziesz w przykładzie kodu konwersji ciągu HTML na PDF.

Jak przekonwertować adres URL na plik PDF?

Metoda RenderUrlAsPdf pobiera aktywny adres URL, czeka na pełne załadowanie strony — w tym wszelkich treści opartych na JavaScript — i konwertuje wyrenderowany wynik do formatu PDF. To sprawia, że jest odpowiedni do rejestrowania pulpitów nawigacyjnych, raportów lub jakiejkolwiek strony, gdzie ostateczny stan wizualny zależy od wykonania JavaScript.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Fetch and convert a live web page to PDF
pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")

pdf.SaveAs("wikipedia-pdf.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Fetch and convert a live web page to PDF
pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")

pdf.SaveAs("wikipedia-pdf.pdf")
PYTHON
PDF generated from a Wikipedia article URL using IronPDF's RenderUrlAsPdf method

IronPDF pobiera aktywny URL i renderuje pełną stronę - łącznie z JavaScript - zanim wygeneruje PDF.

PoradyW przypadku stron wymagających uwierzytelnienia należy ustawić pliki cookie lub nagłówki żądań HTTP w instancji ChromePdfRenderer przed wywołaniem RenderUrlAsPdf. Szczegóły znajdziesz w przewodniku po poświadczeniach logowania HTTP.

Gdy docelowa strona ładuje asynchroniczne treści, IronPDF czeka na sygnał z silnika renderującego Chromium, że dokument został w pełni przedstawiony. W przypadku stron z dużą ilością kodu JavaScript lub opóźnionymi żądaniami sieciowymi warto rozważyć dostosowanie właściwości WaitFor w ChromePdfRenderOptions (omówione w sekcji opcji renderowania poniżej). Przykład kodu konwersji URL na PDF pokazuje dodatkowe wzorce konfiguracji.

Jak skompresić plik HTML do PDF?

RenderHtmlFileAsPdf akceptuje ścieżkę do lokalnego pliku HTML i konwertuje go bezpośrednio. Względne ścieżki wewnątrz HTML - do plików CSS, obrazów czy JavaScript - są automatycznie rozwiązywane względem własnego katalogu pliku HTML, więc nie jest wymagana argument bazowa ścieżka.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Convert a local HTML file (and its linked CSS/JS) to PDF
pdf = renderer.RenderHtmlFileAsPdf("invoices/TestInvoice1.html")

pdf.SaveAs("invoice.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Convert a local HTML file (and its linked CSS/JS) to PDF
pdf = renderer.RenderHtmlFileAsPdf("invoices/TestInvoice1.html")

pdf.SaveAs("invoice.pdf")
PYTHON

Ta metoda jest szczególnie użyteczna w przypadku generacji dokumentów po stronie serwera, gdzie szablon HTML został już zapisany na dysku - to częsty wzorzec podczas używania Django lub Flask do renderowania szablonów Jinja2 do plików przed konwersją ich do PDF w celu pobrania.

IronPDF rozwiązuje wszystkie tagi <link>, <script> i <img> w odniesieniu do lokalizacji pliku HTML, dzięki czemu połączone arkusze stylów, osadzone czcionki i obrazy pojawiają się w pliku PDF dokładnie tak, jak w przeglądarce. Proces ten odzwierciedla sposób, w jaki RenderHtmlAsPdf obsługuje zasoby wbudowane, z tą różnicą, że nie trzeba podawać wyraźnej ścieżki bazowej.

Jak kontrolować opcje renderowania PDF?

ChromePdfRenderOptions to obiekt konfiguracyjny przekazywany do ChromePdfRenderer (lub bezpośrednio do dowolnej metody renderowania) w celu kontrolowania układu strony, marginesów, rozmiaru papieru i innych cech wydruku. Ustawianie opcji przed konwersją to standardowy sposób dostosowywania wynikowego PDF.

Rozmiar i orientacja papieru

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options-paper.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Configure page layout before rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15

pdf = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Content here.</p>")
pdf.SaveAs("landscape-a4.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options-paper.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Configure page layout before rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15

pdf = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Content here.</p>")
pdf.SaveAs("landscape-a4.pdf")
PYTHON

Marginesy wyrażone są w milimetrach. PdfPaperSize obsługuje wszystkie standardowe rozmiary ISO — od A0 do A10, Letter, Legal, Tabloid — a także Custom dla dowolnych wymiarów zdefiniowanych przez CustomPaperWidth i CustomPaperHeight.

Własne wymiary papieru

Gdy standardowe rozmiary papieru nie odpowiadają wymaganiom wyjściowym - na przykład format drukarki paragonowej lub drukarki etykiet - określ szerokość i wysokość jasno:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options-custom-size.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Set a custom paper size (in millimetres)
renderer.RenderingOptions.PaperSize = PdfPaperSize.Custom
renderer.RenderingOptions.CustomPaperWidth = 80   # 80 mm receipt roll width
renderer.RenderingOptions.CustomPaperHeight = 200

pdf = renderer.RenderHtmlAsPdf("<h2>Receipt</h2><p>Total: $12.50</p>")
pdf.SaveAs("receipt.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options-custom-size.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Set a custom paper size (in millimetres)
renderer.RenderingOptions.PaperSize = PdfPaperSize.Custom
renderer.RenderingOptions.CustomPaperWidth = 80   # 80 mm receipt roll width
renderer.RenderingOptions.CustomPaperHeight = 200

pdf = renderer.RenderHtmlAsPdf("<h2>Receipt</h2><p>Total: $12.50</p>")
pdf.SaveAs("receipt.pdf")
PYTHON

WażneWłasne rozmiary papieru są szczególnie przydatne dla termicznych drukarek paragonowych i formatów etykiet, takich jak etykiety przesyłkowe 4×6 cali.

Włączanie wykonywania JavaScript

Domyślnie IronPDF wykonuje JavaScript podczas renderowania. Jeśli strona polega na JavaScript, aby generować widoczną zawartość - wykresy, tabele danych, dynamiczne wartości formularzy - to zachowanie oznacza, że renderowany PDF odzwierciedla końcowy stan DOM. Aby wyłączyć JavaScript dla stron, na których jest on zbędny:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options-javascript.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Disable JavaScript for static HTML pages
renderer.RenderingOptions.EnableJavaScript = False

pdf = renderer.RenderHtmlAsPdf("<p>Static content only.</p>")
pdf.SaveAs("static.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options-javascript.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Disable JavaScript for static HTML pages
renderer.RenderingOptions.EnableJavaScript = False

pdf = renderer.RenderHtmlAsPdf("<p>Static content only.</p>")
pdf.SaveAs("static.pdf")
PYTHON

Wyłączenie JavaScript zmniejsza czas renderowania dla prostych, statycznych dokumentów HTML.

Więcej szczegółów dotyczących konfiguracji renderowania można znaleźć w zasobach PDF generation settings oraz przykładzie niestandardowego rozmiaru papieru.

Jak dodać niestandardowe nagłówki i stopki?

Nagłówki i stopki w IronPDF są stosowane poprzez obiekty HtmlHeaderFooter lub TextHeaderFooter dołączone do RenderingOptions renderera. HtmlHeaderFooter zapewnia pełną kontrolę nad HTML i CSS — idealne rozwiązanie dla firmowych papierów firmowych z logo. TextHeaderFooter jest prostszy i obejmuje większość wymagań dotyczących tekstu, w tym dynamiczne numery stron.

Nagłówki i stopki oparte na tekście

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-text.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Add a text header with the document title
renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Quarterly Report — Q1 2024"
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.FontSize = 10

# Add a footer with page numbers
renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"
renderer.RenderingOptions.TextFooter.FontSize = 9
renderer.RenderingOptions.TextFooter.DrawDividerLine = True

html = "<h1>Executive Summary</h1><p>Revenue increased 12% year-over-year.</p>"
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report-with-footer.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-text.py
from ironpdf import *

renderer = ChromePdfRenderer()

# Add a text header with the document title
renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Quarterly Report — Q1 2024"
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.FontSize = 10

# Add a footer with page numbers
renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"
renderer.RenderingOptions.TextFooter.FontSize = 9
renderer.RenderingOptions.TextFooter.DrawDividerLine = True

html = "<h1>Executive Summary</h1><p>Revenue increased 12% year-over-year.</p>"
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report-with-footer.pdf")
PYTHON

Symbole zastępcze {page} i {total-pages} są zastępowane w momencie renderowania prawidłowymi wartościami. Inne dostępne symbole zastępcze to {date}, {time} oraz {url}.

Gdy wymagany jest nagłówek z elementami identyfikacji wizualnej — logo firmy, pasek koloru lub sformatowany blok adresowy — należy zamiast tego użyć HtmlHeaderFooter:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-html.py
from ironpdf import *

renderer = ChromePdfRenderer()

header_html = """
<div style="font-family: Arial, sans-serif; border-bottom: 2px solid #003366; padding: 8px 0;">
  <img src='assets/logo.png' style='height: 40px; float: left;' alt='Company logo'>
  <span style='float: right; font-size: 11px; color: #666;'>Confidential</span>
  <div style='clear:both;'></div>
</div>
"""

renderer.RenderingOptions.HtmlHeader = HtmlHeaderFooter()
renderer.RenderingOptions.HtmlHeader.HtmlFragment = header_html
renderer.RenderingOptions.HtmlHeader.BaseUrl = "./"

html_body = "<h1>Project Status Update</h1><p>All milestones on track.</p>"
pdf = renderer.RenderHtmlAsPdf(html_body, "./")
pdf.SaveAs("branded-report.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-html.py
from ironpdf import *

renderer = ChromePdfRenderer()

header_html = """
<div style="font-family: Arial, sans-serif; border-bottom: 2px solid #003366; padding: 8px 0;">
  <img src='assets/logo.png' style='height: 40px; float: left;' alt='Company logo'>
  <span style='float: right; font-size: 11px; color: #666;'>Confidential</span>
  <div style='clear:both;'></div>
</div>
"""

renderer.RenderingOptions.HtmlHeader = HtmlHeaderFooter()
renderer.RenderingOptions.HtmlHeader.HtmlFragment = header_html
renderer.RenderingOptions.HtmlHeader.BaseUrl = "./"

html_body = "<h1>Project Status Update</h1><p>All milestones on track.</p>"
pdf = renderer.RenderHtmlAsPdf(html_body, "./")
pdf.SaveAs("branded-report.pdf")
PYTHON

Zwróć uwagęUstaw BaseUrl w HtmlHeaderFooter na tę samą ścieżkę bazową, która jest używana dla treści dokumentu. Dzięki temu obrazy i arkusze stylów odniesione wewnątrz HTML nagłówka zostaną poprawnie rozwiązane.

Nagłówek i stopka pojawiają się na każdej stronie wygenerowanego PDF, łącznie z dokumentami wielostronicowymi. Dla przykładu z metadanymi na poziomie strony w stopce, zobacz przykład kodu nagłówków i stopek HTML.

Dostosowanie marginesów dla nagłówków i stopek

Dodając nagłówek lub stopkę, zwiększ odpowiedni margines, aby treść nie zachodziła na ciało strony:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-margins.py
from ironpdf import *

renderer = ChromePdfRenderer()

renderer.RenderingOptions.MarginTop = 30     # Make room for header
renderer.RenderingOptions.MarginBottom = 20  # Make room for footer

renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Internal Use Only"

renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"

pdf = renderer.RenderHtmlAsPdf("<h1>Internal Document</h1><p>Body content.</p>")
pdf.SaveAs("margined-report.pdf")
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-margins.py
from ironpdf import *

renderer = ChromePdfRenderer()

renderer.RenderingOptions.MarginTop = 30     # Make room for header
renderer.RenderingOptions.MarginBottom = 20  # Make room for footer

renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Internal Use Only"

renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"

pdf = renderer.RenderHtmlAsPdf("<h1>Internal Document</h1><p>Body content.</p>")
pdf.SaveAs("margined-report.pdf")
PYTHON

W przypadku dokumentów, w których układ ma kluczowe znaczenie, należy połączyć dostosowanie marginesów z ustawieniami PaperSize, aby wynik dokładnie odpowiadał specyfikacji wydruku. Dodatkowe elementy sterujące układem — takie jak wypełnienia tła IronSoftwareSystemDrawingColor i reguły CSS @page — zostały szczegółowo opisane w przykładzie dotyczącym niestandardowych marginesów.


Jakie są kolejne kroki?

Ten samouczek obejmował trzy podstawowe metody konwersji HTML do PDF oraz opcje renderowania kontrolujące ich wyniki. Poniższe przewodniki budują na tej podstawie i obejmują bardziej specjalistyczne zadania:

Rozpocznij bezpłatny 30-dniowy okres próbny, aby generować nieograniczoną ilość PDF bez znaków wodnych podczas oceny. Gdy będziesz gotowy do wdrożenia produkcyjnego, zapoznaj się z opcje licencyjne dla zespołów i wdrożeń enterprisowych.

Często Zadawane Pytania

Jak przekonwertować ciąg HTML na PDF w Python?

Instancjuj ChromePdfRenderer, następnie wywołaj renderer.RenderHtmlAsPdf(html_string). Metoda akceptuje dowolny prawidłowy HTML, w tym wewnętrzny CSS i JavaScript. Zapisz zwrócony PdfDocument za pomocą pdf.SaveAs("output.pdf").

Jak zainstalować IronPDF for Python?

Uruchom pip install ironpdf z terminala. IronPDF dla Python wymaga SDK .NET 6.0 lub nowszego, które musi być zainstalowane oddzielnie przed pierwszym użyciem.

Czy IronPDF może przekonwertować URL na żywo na PDF w Python?

Tak. Użyj renderer.RenderUrlAsPdf("https://example.com"). IronPDF pobiera stronę za pomocą silnika Chrome, czeka na zakończenie wykonywania JavaScript, a następnie generuje PDF z w pełni renderowanego DOM.

Jak przekonwertować lokalny plik HTML na PDF?

Wywołaj renderer.RenderHtmlFileAsPdf("path/to/file.html"). IronPDF rozwiązuje wszystkie względne ścieżki zasobów — arkusze stylów, obrazy, skrypty — względem katalogu pliku HTML automatycznie.

Jak usunąć znak wodny z PDF-ów generowanych przez IronPDF?

Ustaw ważny klucz licencyjny za pomocą License.LicenseKey = "YOUR-KEY" przed jakimikolwiek operacjami PDF. Bez klucza IronPDF dodaje kafelkowy znak wodny odpowiedni do celów deweloperskich, ale nie do użycia produkcyjnego.

Jakie opcje renderowania udostępnia IronPDF dla Python?

Właściwości na renderer.RenderingOptions kontrolują rozmiar papieru (PaperSize), orientację (PaperOrientation), marginesy (MarginTop, MarginLeft, itp.), niestandardowe wymiary (CustomPaperWidth, CustomPaperHeight), wykonywanie JavaScript (EnableJavaScript) i wiele więcej.

Jak dodać numery stron do PDF za pomocą IronPDF w Python?

Przypisz TextHeaderFooter do renderer.RenderingOptions.TextFooter i uwzględnij symbol zastępczy {page} lub {total-pages} w jednej z właściwości tekstowych, takich jak RightText lub CenterText.

Czy mogę dodać nagłówek z logotypem marki do każdej strony wygenerowanego PDF?

Tak. Użyj HtmlHeaderFooter z fragmentem HTML zawierającym tag . Przypisz go do renderer.RenderingOptions.HtmlHeader i ustaw BaseUrl, aby ścieżka do obrazu została prawidłowo rozwiązana.

Czy IronPDF obsługuje niestandardowe rozmiary papieru w Python?

Tak. Ustaw renderer.RenderingOptions.PaperSize na PdfPaperSize.Custom, a następnie przypisz CustomPaperWidth i CustomPaperHeight w milimetrach, aby zdefiniować dowolny wymiar strony.

Jakiej wersji .NET wymaga IronPDF dla Python?

IronPDF dla Python wymaga SDK .NET 6.0 lub nowszego. SDK jest dostępne bezpłatnie na stronie pobierania .NET od Microsoft i musi być zainstalowane przed zainstalowaniem pip lub uruchomieniem IronPDF.

Curtis Chau
Autor tekstów technicznych

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

Czytaj więcej
Gotowy, aby rozpocząć?
Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu?
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.