Menghasilkan PDF dalam Python

Perpustakaan favorit saya adalah pdf-reports

Konten Halaman

Membuat Laporan PDF Menggunakan Python

Python, dengan perpustakaan dan modulnya yang luas, menawarkan alat yang kuat untuk membuat laporan PDF yang profesional.

Panduan ini menjelaskan berbagai metode untuk membuat dokumen PDF menggunakan Python, mencakup perpustakaan populer seperti ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports, dan PdfKit.

python pada laporan

Mengapa Membuat Laporan PDF dengan Python?

  • Otomatisasi: Skrip Python dapat mengotomatisasi pembuatan laporan, menghemat waktu dan mengurangi kesalahan manusia.
  • Personalisasi: Sesuaikan laporan sesuai kebutuhan dengan menambahkan teks, gambar, tabel, dan grafik.
  • Konsistensi: Pastikan konsistensi branding di seluruh laporan dengan template standar.
  • Kelengkapan: Membuat faktur, laporan bisnis, ringkasan data, atau jenis dokumen lainnya.

Perpustakaan Python Populer untuk Pembuatan PDF

ReportLab

ReportLab adalah perpustakaan yang sangat fleksibel yang memungkinkan Anda membuat dokumen PDF secara programmatic. Perpustakaan ini mendukung penambahan teks, gambar, tabel, dan grafik, menjadikannya cocok untuk berbagai jenis laporan.

Kelebihan:

  • Fitur yang kaya
  • API tingkat tinggi untuk penggunaan yang mudah
  • Mendukung fitur lanjutan seperti anotasi dan formulir interaktif

Kekurangan:

  • Kurva belajar yang lebih curam dibandingkan perpustakaan lain
  • API yang kurang intuitif untuk beberapa tugas

Menggunakan ReportLab

Instalasi: Instal ReportLab menggunakan pip:

pip install reportlab

Pengaturan Dasar:

from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Menambahkan Teks:
python c.drawString(100, 800, "Hello World")
# Menyimpan PDF:
python c.save()

FPDF

FPDF adalah perpustakaan pembuatan PDF yang sederhana namun kuat yang ditulis dalam Python murni. Ini ideal untuk membuat dokumen PDF dasar dengan kode minimal.

Kelebihan:

  • Mudah dipelajari dan digunakan
  • Ringan dan cepat
  • Mendukung karakter Unicode

Kekurangan:

  • Fitur yang terbatas dibandingkan ReportLab
  • Kontrol yang lebih sedikit terhadap penempatan elemen di halaman

Menggunakan FPDF

Instalasi: Instal FPDF menggunakan pip:

pip install fpdf2
Pengaturan Dasar:
from fpdf import FPDF pdf = FPDF()

# Menambahkan Teks:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Menyimpan PDF:
python pdf.output('hello.pdf', 'F')

Xhtml2pdf

Xhtml2pdf adalah konverter CSS/HTML ke PDF yang menggunakan ReportLab di bawah hood. Ini sempurna untuk membuat PDF dari template HTML, menjadikannya pilihan yang sangat baik untuk konversi web ke PDF.

Kelebihan:

  • Mengonversi HTML dan CSS ke PDF
  • Mendukung tata letak dan styling yang kompleks
  • Terintegrasi dengan baik dengan framework web seperti Django

Kekurangan:

  • Membutuhkan pengetahuan tentang HTML dan CSS
  • Mungkin tidak cocok untuk laporan sederhana yang tidak berbasis web

Menggunakan Xhtml2pdf

Instalasi: Instal Xhtml2pdf menggunakan pip:

pip install xhtml2pdf

Membuat PDF dari 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 adalah perpustakaan Python yang sangat fleksibel yang memungkinkan pengembang mengonversi HTML dan CSS menjadi dokumen PDF dengan rendering berkualitas tinggi. Ini sangat berguna untuk membuat laporan, faktur, atau dokumen lain yang memerlukan pemformatan yang tepat. Berikut beberapa contoh yang menunjukkan bagaimana menggunakan WeasyPrint dalam berbagai skenario.

Fitur

  • Mengonversi HTML dan CSS ke dokumen PDF.
  • Menangani rendering data dinamis dengan bantuan mesin templating seperti Jinja2.

Instalasi:

pip install weasyprint

Berikut adalah contoh sederhana menghasilkan PDF dari string HTML:

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")

Dalam contoh ini, kelas HTML dari WeasyPrint digunakan untuk mengonversi string HTML menjadi file PDF yang disebut “sample.pdf”.

Memuat HTML dari File

Anda juga dapat memuat konten HTML langsung dari file:

from weasyprint import HTML

# Memuat HTML dari file
HTML('sample.html').write_pdf('output.pdf')

Metode ini berguna ketika Anda menyimpan konten HTML Anda dalam file eksternal. Menggunakan Lembar Gaya CSS

WeasyPrint mendukung penggunaan lembar gaya CSS untuk memperindah dokumen PDF Anda. Berikut cara mengaplikasikan file CSS:

from weasyprint import HTML

# Memuat HTML dan CSS dari file
HTML('sample.html').write_pdf('output.pdf', stylesheets=['sample.css'])

Ini memungkinkan styling yang lebih kompleks, membuatnya lebih mudah untuk membuat PDF yang menarik secara visual .

Jinja2

Jinja2 adalah mesin templating yang kuat untuk Python yang memungkinkan Anda menghasilkan konten dinamis dengan menyisipkan ekspresi Python, kondisi, dan loop dalam template. Panduan ini akan membawa Anda melalui berbagai contoh penggunaan Jinja2 dalam Python, dari substitusi variabel dasar hingga fitur lanjutan seperti pewarisan template.

Fitur utama Jinja2

  • Mesin templating yang dapat digunakan bersama WeasyPrint atau ReportLab untuk menghasilkan konten HTML secara dinamis.
  • Ideal untuk menyisipkan data ke dalam template yang telah ditentukan sebelumnya.
  • Instalasi:
pip install jinja2

lihat contoh di halaman dokumentasi resmi jinja2: https://jinja.palletsprojects.com/en/3.0.x/

pdfkit

pdfkit adalah perpustakaan Python yang kuat yang menyederhanakan proses mengonversi konten HTML menjadi dokumen PDF. Ini bertindak sebagai wrapper untuk utilitas wkhtmltopdf, memanfaatkan WebKit untuk merender halaman HTML secara akurat dalam format PDF. Panduan ini akan membawa Anda melalui berbagai contoh dan kasus penggunaan menghasilkan PDF menggunakan pdfkit.

Fitur utama

Instalasi:

# dan pastikan wkhtmltopdf terinstal.

Penggunaan Dasar - Mengonversi String HTML ke PDF

Anda dapat mengonversi string HTML sederhana menjadi file PDF menggunakan 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')

Ini akan menghasilkan file PDF yang disebut output.pdf di direktori saat ini.

Mengonversi File HTML Lokal ke PDF

Jika Anda memiliki file HTML yang disimpan secara lokal, gunakan pdfkit.from_file():

import pdfkit

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

Perpustakaan Laporan PDF (pdf-reports)

Membuat laporan PDF menggunakan perpustakaan pdf-reports dalam Python dapat menjadi cara yang kuat untuk menghasilkan dokumen yang tampak profesional dari template HTML atau Pug. Perpustakaan ini memanfaatkan komponen modern melalui framework Semantic UI dan menyediakan rutinitas untuk menyisipkan tabel, grafik, dan elemen lainnya ke dalam PDF Anda.

Perpustakaan pdf-reports dirancang untuk membuat laporan PDF yang menarik secara visual dari template HTML atau Pug. Perpustakaan ini secara resmi mendukung Python 3.x tetapi juga dapat berjalan pada Python 2.x dengan versi yang sesuai dari weasyprint. Ini membuatnya menjadi alat yang sangat fleksibel untuk menghasilkan dokumen yang dinamis dan terstruktur secara programatis.

Fitur Utama

  • Komponen Modern: Menggunakan framework Semantic UI untuk komponen yang tampak modern.
  • Penyisipan Elemen: Memungkinkan penyisipan tabel, grafik, dan elemen lainnya ke dalam PDF.
  • Dukungan Template: Mendukung template HTML dan Pug untuk desain laporan yang fleksibel.

Contoh Penggunaan pdf-reports

Instalasi:

pip install pdf-reports

Berikut adalah contoh dasar penggunaan perpustakaan pdf-reports:

from pdf_reports import PDFReport

# Definisikan file template Anda (template.pug)
template = """
doctype html
html
  head
    title= title
  body
    h1= title
    p This is a sample report.
"""

# Buat instance laporan PDF
report = PDFReport(template)

# Tetapkan konteks untuk template
context = {
    'title': 'Sample Report'
}

# Hasilkan PDF
pdf = report.generate(context, output='sample_report.pdf')

Pengembangan Laporan PDF dalam Python

Python menawarkan berbagai perpustakaan kuat untuk menghasilkan laporan PDF. Baik Anda membuat faktur, laporan bisnis, atau ringkasan data, alat-alat ini memungkinkan Anda mengotomatisasi proses, mempersonalisasi dokumen Anda, dan memastikan konsistensi branding. Pilih perpustakaan yang paling sesuai dengan kebutuhan Anda dan mulailah membuat PDF profesional hari ini!

Tautan yang Berguna