Generowanie PDF w Pythonie

Moja ulubiona biblioteka to pdf-reports

Page content

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.

python na raporcie

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

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ś!

Przydatne linki