Generera PDF i Python

Min favoritbibliotek är pdf-reports

Sidinnehåll

Skapa PDF-rapporter med Python

Python, med sina omfattande bibliotek och moduler, erbjuder kraftfulla verktyg för att skapa professionella PDF-rapporter. Den här guiden undersöker olika sätt att skapa PDF-dokument med Python, och täcker populära bibliotek som ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports och PdfKit. Den är en del av vår Dokumentationsverktyg 2026: Markdown, LaTeX, PDF & Skrivningsflöden hub.

python på rapporten

Varför skapa PDF-rapporter med Python?

  • Automatisering: Python-skript kan automatisera rapportgenereringen, vilket sparar tid och minskar mänskliga fel.
  • Anpassning: Anpassa rapporter till specifika behov genom att lägga till text, bilder, tabeller och diagram.
  • Konsistens: Se till att varumärkeskonsistens hålls över alla rapporter med standardiserade mallar.
  • Flexibilitet: Generera fakturor, affärsrapporter, datasammanfattningar eller vilken annan dokumenttyp som helst.

Populära Python-bibliotek för PDF-generering

ReportLab

ReportLab är ett mångsidigt bibliotek som möjliggör skapande av PDF-dokument programmässigt. Det stöder tillägg av text, bilder, tabeller och grafik, vilket gör det lämpligt för olika typer av rapporter.

Fördelar:

  • Riktigt omfattande funktionssätt
  • Hög nivå API för enkel användning
  • Stöder avancerade funktioner som kommentarer och interaktiva formulär

Nackdelar:

  • Stejring av lärandekurva jämfört med andra bibliotek
  • Mindre intuitivt API för vissa uppgifter

Användning av ReportLab

Installation: Installera ReportLab med pip:

pip install reportlab

Grundläggande inställning:

from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Lägg till text:
python c.drawString(100, 800, "Hello World")
# Spara PDF-filen:
python c.save()

FPDF

FPDF är ett enkelt men kraftfullt PDF-skapande bibliotek skrivet i ren Python. Det är idealiskt för att generera enkla PDF-dokument med minimal kod.

Fördelar:

  • Enkelt att lära sig och använda
  • Lättviktigt och snabbt
  • Stöder Unicode-tecken

Nackdelar:

  • Begränsat funktionssätt jämfört med ReportLab
  • Mindre kontroll över elementens placering på sidan

Användning av FPDF

Installation: Installera FPDF med pip:

pip install fpdf2
Grundläggande inställning:
from fpdf import FPDF pdf = FPDF()

# Lägg till text:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Spara PDF-filen:
python pdf.output('hello.pdf', 'F')

Xhtml2pdf

Xhtml2pdf är en CSS/HTML till PDF-omvandlare som använder ReportLab under baksidan. Det är perfekt för att generera PDF:er från HTML-mallar, vilket gör det till ett utmärkt val för webb-till-PDF-omvandlingar.

Fördelar:

  • Konverterar HTML och CSS till PDF
  • Stöder komplexa layouter och stil
  • Integrerar bra med webbramverk som Django

Nackdelar:

  • Kräver kunskap om HTML och CSS
  • Kan inte vara lämplig för enkla, icke-webb-baserade rapporter

Användning av Xhtml2pdf

Installation: Installera Xhtml2pdf med pip:

pip install xhtml2pdf

Generera en PDF från 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 är ett mångsidigt Python-bibliotek som möjliggör att utvecklare konverterar HTML och CSS till PDF-dokument med högkvalitativ rendering. Det är särskilt användbart för att generera rapporter, fakturor eller någon annan dokumenttyp som kräver noggrann formatering. Här följer flera exempel som visar hur du kan använda WeasyPrint i olika scenarier.

Funktioner

  • Konverterar HTML och CSS till PDF-dokument.
  • Hanterar dynamisk rendering av data med hjälp av mallmotorer som Jinja2.

Installation:

pip install weasyprint

Här är ett enkelt exempel på hur du genererar en PDF från en HTML-sträng:

from weasyprint import HTML

html_string = """
<html>
<head><title>Sample PDF</title></head>
<body>
<h1>Hello, WeasyPrint!</h1>
<p>This is a sample PDF generated using WeasyPrint.</p>
</body>
</html>
"""

HTML(string=html_string).write_pdf("sample.pdf")

I detta exempel används HTML-klassen från WeasyPrint för att konvertera en HTML-sträng till en PDF-fil som heter “sample.pdf”.

Ladda HTML från filer

Du kan också ladda HTML-innehåll direkt från filer:

from weasyprint import HTML

# Ladda HTML från en fil
HTML('sample.html').write_pdf('output.pdf')

Detta sätt är användbart när du har ditt HTML-innehåll lagrat i en extern fil. Använda CSS-stilar

WeasyPrint stöder användningen av CSS-stilar för att styla dina PDF-dokument. Här är hur du kan tillämpa en CSS-fil:

from weasyprint import HTML

# Ladda HTML och CSS från filer
HTML('sample.html').write_pdf('output.pdf', stylesheets=['sample.css'])

Detta gör det möjligt att skapa mer komplexa stilar, vilket gör det enklare att skapa visuellt tilltalande PDF:er .

Jinja2

Jinja2 är en kraftfull mallmotor för Python som möjliggör generering av dynamiskt innehåll genom att bädda in Python-uttryck, villkor och loopar inom mallar. Den här guiden kommer att visa dig på olika exempel på hur du använder Jinja2 i Python, från grundläggande variabelsubstitution till mer avancerade funktioner som mallar som ärver från andra mallar.

Viktiga funktioner hos Jinja2

  • En mallmotor som kan användas tillsammans med WeasyPrint eller ReportLab för att dynamiskt generera HTML-innehåll.
  • Idealisk för att bädda in data i fördefinierade mallar.
  • Installation:
pip install jinja2

se exempel på officiella jinja2 dokumentationsidan: https://jinja.palletsprojects.com/en/3.0.x/

pdfkit

pdfkit är en kraftfull Python-bibliotek som förenklar processen att konvertera HTML-innehåll till PDF-dokument. Det fungerar som en omsluts för verktyget wkhtmltopdf, som använder WebKit för att rendera HTML-sidor korrekt i PDF-format. Den här guiden kommer att visa dig på olika exempel och användningsscenarier för att generera PDF:er med pdfkit.

Viktiga funktioner

Installation:

# och se till att wkhtmltopdf är installerat.

Grundläggande användning – konvertera HTML-sträng till PDF

Du kan konvertera en enkel HTML-sträng till en PDF-fil med pdfkit.from_string():

import pdfkit

html_sample = """
<html>
<head><title>Sample PDF</title></head>
<body>
<h1>This is a heading</h1>
<p>First line.</p>
<p>Second line.</p>
<p>Third line.</p>
<p>Fourth line.</p>
</body>
</html>
"""

pdfkit.from_string(html_sample, 'output.pdf')

Detta kommer att generera en PDF-fil som heter output.pdf i den aktuella katalogen.

Konvertera lokal HTML-fil till PDF

Om du har en HTML-fil som lagras lokalt, använd pdfkit.from_file():

import pdfkit

pdfkit.from_file('local.html', 'sample.pdf')

PDF-rapportbibliotek (pdf-reports)

Att skapa PDF-rapporter med pdf-reports-biblioteket i Python kan vara ett kraftfullt sätt att generera professionellt utseende dokument från HTML- eller Pug-mallar. Detta bibliotek använder moderna komponenter via Semantic UI-ramverket och tillhandahåller rutiner för att bädda in tabeller, diagram och andra element i dina PDF:er.

pdf-reports-biblioteket är utformat för att skapa visuellt tilltalande PDF-rapporter från HTML- eller Pug-mallar. Det stöder officiellt Python 3.x men kan också köras på Python 2.x med den lämpliga versionen av weasyprint. Detta gör det till ett mångsidigt verktyg för att generera dynamiska och välstrukturerade dokument programmerat.

Viktiga funktioner

  • Moderna komponenter: Använder Semantic UI-ramverket för moderna utseende.
  • Bädda in element: Möjliggör bädda in tabeller, diagram och andra element i PDF:erna.
  • Mallstöd: Stöder HTML- och Pug-mallar för flexibel rapportdesign.

Exempel på användning av pdf-reports

Installation:

pip install pdf-reports

Här är ett grundläggande exempel på hur du använder pdf-reports-biblioteket:

from pdf_reports import PDFReport

# Definiera din mallfil (template.pug)
template = """
doctype html
html
  head
    title= title
  body
    h1= title
    p This is a sample report.
"""

# Skapa en PDF-rapportinstans
report = PDFReport(template)

# Ställ in kontexten för mallen
context = {
    'title': 'Sample Report'
}

# Generera PDF-filen
pdf = report.generate(context, output='sample_report.pdf')

Start på PDF-generering i Python

Python erbjuder ett antal kraftfulla bibliotek för att skapa PDF-rapporter. Oavsett om du skapar fakturor, affärsrapporter eller datasammanfattningar, gör dessa verktyg att automatisera processen, anpassa dina dokument och säkerställa varumärkeskonsistens. Välj det bibliotek som bäst passar dina behov och börja skapa professionella PDF:er idag!

Några användbara länkar