Generowanie PDF w Pythonie
Moja ulubiona biblioteka to pdf-reports
Generowanie raportów PDF za pomocą Pythona
Python, dzięki swoim rozszerzonym bibliotekom i modułom, oferuje potężne narzędzia do tworzenia profesjonalnych raportów PDF.
Ten przewodnik omawia różne metody tworzenia dokumentów PDF za pomocą Pythona, obejmując popularne biblioteki takie jak ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports i PdfKit.
Dlaczego generować raporty PDF za pomocą Pythona?
- Automatyzacja: Skrypty Pythona mogą automatyzować generowanie raportów, oszczędzając czas i zmniejszając błędy ludzkie.
- Personalizacja: Dopasuj raporty do konkretnych potrzeb, dodając tekst, obrazy, tabele i wykresy.
- Spójność: Zapewnij spójność marki w raportach za pomocą standardowych szablonów.
- Wersatylność: Generuj faktury, raporty biznesowe, podsumowania danych lub dowolny inny typ dokumentu.
Popularne biblioteki Pythona do generowania PDF
ReportLab
ReportLab to uniwersalna biblioteka, która umożliwia tworzenie dokumentów PDF programowo. Obsługuje dodawanie tekstu, obrazów, tabel i grafik, co czyni ją odpowiednią do różnych typów raportów.
Zalety:
- Bogaty zestaw funkcji
- Wysokiej poziomu API do łatwego użytku
- Obsługuje zaawansowane funkcje, takie jak adnotacje i interaktywne formularze
Wady:
- Trudniejszy do nauki w porównaniu do innych bibliotek
- Mniej intuicyjny API dla niektórych zadań
Użycie ReportLab
Instalacja: Zainstaluj ReportLab za pomocą pip:
pip install reportlab
Podstawowa konfiguracja:
from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Dodawanie tekstu:
python c.drawString(100, 800, "Hello World")
# Zapisywanie PDF:
python c.save()
FPDF
FPDF to prosta, ale potężna biblioteka do tworzenia dokumentów PDF napisana w czystym Pythonie. Idealna do generowania podstawowych dokumentów PDF z minimalnym kodem.
Zalety:
- Łatwe do nauki i użycia
- Lekka i szybka
- Obsługuje znaki Unicode
Wady:
- Ograniczony zestaw funkcji w porównaniu do ReportLab
- Mniej kontroli nad pozycjonowaniem elementów na stronie
Użycie FPDF
Instalacja: Zainstaluj FPDF za pomocą pip:
pip install fpdf2
Podstawowa konfiguracja:
from fpdf import FPDF pdf = FPDF()
# Dodawanie tekstu:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Zapisywanie PDF:
python pdf.output('hello.pdf', 'F')
Xhtml2pdf
Xhtml2pdf to konwerter CSS/HTML na PDF, który korzysta z ReportLab w tle. Idealny do generowania PDF z szablonów HTML, co czyni go świetnym wyborem do konwersji z sieci do PDF.
Zalety:
- Konwertuje HTML i CSS na PDF
- Obsługuje złożone układu i stylizacji
- Integruje się dobrze z frameworkami sieciowymi takimi jak Django
Wady:
- Wymaga znajomości HTML i CSS
- Może nie być odpowiedni do prostych, niebazowych raportów
Użycie Xhtml2pdf
Instalacja: Zainstaluj Xhtml2pdf za pomocą pip:
pip install xhtml2pdf
Generowanie PDF z HTML: python
from xhtml2pdf import pisa
html = "<h1>Hello World</h1>"
with open('hello.pdf', 'wb') as output_file:
pisa_status = pisa.CreatePDF(html, dest=output_file)
WeasyPrint
WeasyPrint to uniwersalna biblioteka Pythona, która umożliwia programistom konwertowanie HTML i CSS na dokumenty PDF z wysokiej jakości renderowaniem. Jest szczególnie przydatna do generowania raportów, faktur lub innych dokumentów wymagających precyzyjnego formatowania. Poniżej znajdują się kilka przykładów pokazujących, jak używać WeasyPrint w różnych scenariuszach.
Funkcje
- Konwertuje HTML i CSS na dokumenty PDF.
- Obsługuje dynamiczne renderowanie danych z pomocą silników szablonów takich jak Jinja2.
Instalacja:
pip install weasyprint
Oto prosty przykład generowania PDF z ciągu HTML:
from weasyprint import HTML
html_string = """
<html>
<head><title>Przykładowy PDF</title></head>
<body>
<h1>Cześć, WeasyPrint!</h1>
<p>To jest przykładowy PDF wygenerowany za pomocą WeasyPrint.</p>
</body>
</html>
"""
HTML(string=html_string).write_pdf("sample.pdf")
W tym przykładzie klasa HTML z WeasyPrint jest używana do konwersji ciągu HTML na plik PDF o nazwie “sample.pdf”.
Ładowanie HTML z plików
Możesz również ładować zawartość HTML bezpośrednio z plików:
from weasyprint import HTML
# Ładowanie HTML z pliku
HTML('sample.html').write_pdf('output.pdf')
Ta metoda jest przydatna, gdy masz zawartość HTML przechowywaną w zewnętrznym pliku. Użycie arkuszy stylów CSS
WeasyPrint obsługuje użycie arkuszy stylów CSS do stylizowania dokumentów PDF. Oto jak możesz zastosować arkusz stylów:
from weasyprint import HTML
# Ładowanie HTML i CSS z plików
HTML('sample.html').write_pdf('output.pdf', stylesheets=['sample.css'])
To umożliwia bardziej złożoną stylizację, ułatwiając tworzenie wizualnie przyjemnych PDF.
Jinja2
Jinja2 to potężny silnik szablonów dla Pythona, który umożliwia generowanie dynamicznego treści poprzez osadzanie wyrażeń Pythona, warunków i pętli w szablonach. Ten przewodnik pokaże Ci różne przykłady użycia Jinja2 w Pythonie, od podstawowej podstawienia zmiennych po zaawansowane funkcje takie jak dziedziczenie szablonów.
Kluczowe funkcje Jinja2
- Silnik szablonów, który może być używany w połączeniu z WeasyPrint lub ReportLab do dynamicznego generowania treści HTML.
- Idealny do osadzania danych w zdefiniowanych szablonach.
- Instalacja:
pip install jinja2
patrz przykłady na stronie dokumentacji oficjalnej jinja2: https://jinja.palletsprojects.com/en/3.0.x/
pdfkit
pdfkit to potężna biblioteka Pythona, która upraszcza proces konwersji treści HTML w dokumenty PDF. Działa jako obudowa dla narzędzia wkhtmltopdf, wykorzystując WebKit do dokładnego renderowania stron HTML w formacie PDF. Ten przewodnik pokaże Ci różne przykłady i przypadki użycia generowania PDF za pomocą pdfkit.
Kluczowe funkcje
- Obudowa Pythona dla wkhtmltopdf, która konwertuje HTML na PDF.
- Wymaga instalacji wkhtmltopdf na całym systemie. https://wkhtmltopdf.org/downloads.html
Instalacja:
# i upewnij się, że wkhtmltopdf jest zainstalowany.
Podstawowe użycie - konwertowanie ciągu HTML na PDF
Możesz przekonwertować prosty ciąg HTML na plik PDF za pomocą pdfkit.from_string():
import pdfkit
html_sample = """
<html>
<head><title>Przykładowy PDF</title></head>
<body>
<h1>To jest nagłówek</h1>
<p>Pierwszy wiersz.</p>
<p>Drugi wiersz.</p>
<p>Trzeci wiersz.</p>
<p>Czwarty wiersz.</p>
</body>
</html>
"""
pdfkit.from_string(html_sample, 'output.pdf')
To wygeneruje plik PDF o nazwie output.pdf w bieżącym katalogu.
Konwertowanie lokalnego pliku HTML na PDF
Jeśli masz lokalny plik HTML, użyj pdfkit.from_file():
import pdfkit
pdfkit.from_file('local.html', 'sample.pdf')
Biblioteka do raportów PDF (pdf-reports)
Tworzenie raportów PDF za pomocą biblioteki pdf-reports w Pythonie może być potężnym sposobem na generowanie profesjonalnie wyglądających dokumentów z szablonów HTML lub Pug. Ta biblioteka korzysta z nowoczesnych komponentów za pośrednictwem frameworku Semantic UI i oferuje procedury do osadzania tabel, wykresów i innych elementów w Twoich PDF.
Biblioteka pdf-reports została zaprojektowana do tworzenia wizualnie przyjemnych raportów PDF z szablonów HTML lub Pug. Oficjalnie obsługuje Python 3.x, ale może również działać na Pythonie 2.x z odpowiednią wersją weasyprint. To czyni ją uniwersalnym narzędziem do generowania dynamicznych i dobrze strukturyzowanych dokumentów programistycznie.
Kluczowe funkcje
- Nowoczesne komponenty: korzysta z frameworku Semantic UI do nowoczesnych komponentów.
- Osadzanie elementów: umożliwia osadzanie tabel, wykresów i innych elementów w PDF.
- Obsługa szablonów: obsługuje szablony HTML i Pug dla elastycznego projektowania raportów.
Przykład użycia pdf-reports
Instalacja:
pip install pdf-reports
Oto podstawowy przykład użycia biblioteki pdf-reports:
from pdf_reports import PDFReport
# Zdefiniuj plik szablonu (template.pug)
template = """
doctype html
html
head
title= title
body
h1= title
p To jest przykładowy raport.
"""
# Utwórz instancję raportu PDF
report = PDFReport(template)
# Ustaw kontekst dla szablonu
context = {
'title': 'Przykładowy raport'
}
# Wygeneruj PDF
pdf = report.generate(context, output='sample_report.pdf')
Przełom w generowaniu PDF w Pythonie
Python oferuje szereg potężnych bibliotek do generowania raportów PDF. Niezależnie od tego, czy tworzysz faktury, raporty biznesowe czy podsumowania danych, te narzędzia pozwalają automatyzować proces, personalizować dokumenty i zapewniać spójność marki. Wybierz bibliotekę, która najlepiej odpowiada Twoim potrzebom i zacznij tworzyć profesjonalne PDF już dziś!