Konwertowanie HTML do PDF w Pythonie
IronPDF daje programistom Pythona bezpośrednią ścieżkę od znacznika HTML do gotowych do produkcji plików PDF — bez pośrednich narzędzi do projektowania, bez własnych silników układu, bez oddzielnej linii renderowania. Klasa ChromePdfRenderer biblioteki wykorzystuje podmaskowy silnik Chromium, więc każde HTML, które wyświetla się poprawnie w Chrome, zostanie dokładnie przekształcone w 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
Jak przekonwertować HTML na PDF w języku Python

- Zainstaluj IronPDF dla Pythona za pomocą pip
- Zaimportuj bibliotekę przy użyciu
from ironpdf import * - Zainicjuj
ChromePdfRenderer - Wywołaj
RenderHtmlAsPdf,RenderUrlAsPdflubRenderHtmlFileAsPdf - Zapisz wynik za pomocą
pdf.SaveAs("output.pdf")
Spis treści
- Jak zainstalować IronPDF dla Pythona?
- Jak skonfigurować IronPDF przed konwersją?
- Jak konwertować ciąg HTML do PDF?
- Jak konwertować URL do PDF?
- Jak konwertować plik HTML do PDF?
- Jak kontrolować opcje renderowania PDF?
- Jak dodać niestandardowe nagłówki i stopki?
- Jakie są następne kroki?
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ę:
pip install ironpdf
Aby przypiąć konkretną wersję — przydatne w pipeline'ach CI lub środowiskach kontenerowych — dodaj numer wersji:
pip install ironpdf==2024.x.x
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.pyfrom ironpdf import *
Wszystkie klasy IronPDF — ChromePdfRenderer, PdfDocument, License, Logger i reszta — stają się dostępne przez ten wildcard import.
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.pyfrom ironpdf import *
# Set the license key before any PDF operations
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Rozpocznij darmowy okres próbny aby otrzymać tymczasowy klucz lub kup licencję dla nieograniczonego użytku produkcyjnego.
Konfiguracja wyjścia dziennika
IronPDF zapisuje diagnostyczne dane wyjściowe do pliku o nazwie Default.log w katalogu roboczym skryptu. Aby przekierować logowanie na inną ścieżkę lub uchwycić 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.pyfrom ironpdf import *
# Configure logging before running any conversions
Logger.EnableDebugging = True
Logger.LogFilePath = "ironpdf-debug.log"
Logger.LoggingMode = Logger.LoggingModes.All
Logger.LogFilePath musi być ustawione przed pierwszym wywołaniem konwersji 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
Zainicjalizuj ChromePdfRenderer, przekaż ciąg HTML do RenderHtmlAsPdf i wywołaj SaveAs dla zwróconego PdfDocument:
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-basic.pyfrom 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")
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, obrazków, skryptów — przekaż ś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.pyfrom 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")
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.
IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
Jak przekonwertować adres URL na plik PDF?
Metoda RenderUrlAsPdf pobiera bieżący URL, czeka na pełne załadowanie strony — w tym wszelkie treści sterowane JavaScriptem — i konwertuje wyrenderowany wynik na 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.pyfrom 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")
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. Dla stron z dużym obciążeniem JavaScriptem lub opóźnieniami w zapytaniach sieciowych, rozważ dostosowanie właściwości WaitFor na 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.pyfrom 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")
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 etykiety <link>, <script> i <img> względem lokalizacji pliku HTML, więc podłączone arkusze stylów, osadzone czcionki i obrazy w PDF wyglądają dokładnie tak, jak w przeglądarce. Proces odzwierciedla sposób, w jaki RenderHtmlAsPdf obsługuje osadzone zasoby, z różnicą, że nie trzeba dostarczać jawnej ścieżki bazowej.
Jak kontrolować opcje renderowania PDF?
ChromePdfRenderOptions jest obiektem konfiguracji przekazywanym do ChromePdfRenderer (lub bezpośrednio do którejkolwiek z metod renderowania), aby kontrolować układ strony, marginesy, rozmiar papieru i inne cechy wyjściowe. 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.pyfrom 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")
Marginesy wyrażone są w milimetrach. PdfPaperSize obsługuje wszystkie standardowe rozmiary ISO — od A0 do A10, Lettera, Legalu, Tabletu — jak również 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.pyfrom 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")
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.pyfrom 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")
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 za pomocą obiektów HtmlHeaderFooter lub TextHeaderFooter podłączonych do RenderingOptions renderera. HtmlHeaderFooter daje pełną kontrolę HTML i CSS — idealne dla markowych papierów firmowych z logo. TextHeaderFooter jest prostszy i obejmuje większość wymagań tekstowych, 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.pyfrom 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")
Podczas renderowania {page} i {total-pages} są zastępowane odpowiednimi wartościami. Inne dostępne zamienniki to {date}, {time} i {url}.
HTML-owy nagłówek z logo
Gdy wymagany jest markowy nagłówek — logo firmy, pasmo kolorowemotion nl, lub sformatowany blok adresowy — użyj zamiast tego HtmlHeaderFooter.
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers-html.pyfrom 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")
BaseUrl na HtmlHeaderFooter na tę samą bazową ścieżkę używaną 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.pyfrom 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")
Dla dokumentów o krytycznym układzie, połącz regulacje marginesów z ustawieniami PaperSize, aby dopasować wyjście dokładnie do specyfikacji druku. Dodatkowe kontrole układu — takie jak IronSoftwareSystemDrawingColor tła wypełniające i reguły CSS @page są szczegółowo omówione w przykładzie 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:
- Ustawienia Generacji PDF — Głębokie nurkowanie w
ChromePdfRenderOptions: DPI, renderowanie tła, typ mediów CSS, strategie oczekiwania JavaScript, i tryb druku vs. ekran. - Nagłówki i stopki HTML - Szablony nagłówków i stopek z logotypami, numerami stron, datami oraz układem wielokolumnowym.
- Niestandardowe marginesy i rozmiary papieru - Dostosowanie geometrii strony do wyników gotowych do drukowania i niestandardowych formatów.
- Dodawanie znaków wodnych do PDF - Stemplowanie znaków wodnych z tekstem lub obrazem na istniejących lub nowo wygenerowanych PDF.
- Ekstrakcja tekstu z PDF - Odczytanie treści tekstowej z wygenerowanych lub istniejących PDF programowo.
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 <img>. 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.










