Menjana laporan PDF dengan Python
Perpustakaan Python yang menghasilkan laporan PDF termasuk ReportLab, FPDF dan WeasyPrint, masing -masing sesuai untuk senario yang berbeza; 1. ReportLab menyokong penapisan kompleks, sesuai untuk dokumen berkualiti tinggi; 2. FPDF adalah ringan dan mudah, sesuai untuk menghasilkan PDF dengan cepat dengan struktur mudah; 3. Weasyprint menyokong HTML/CSS ke PDF, sesuai untuk kandungan web yang ada; Apabila menulis data, anda boleh memasukkan baris demi baris melalui perpustakaan atau membuat templat dengan jinja2; Susun atur dan gaya boleh dikendalikan melalui meja, fon, warna dan gambar; Langkah berjaga -jaga termasuk paparan Cina, susun atur halaman, masalah laluan dan pengoptimuman prestasi.
Ia sebenarnya tidak sukar untuk menghasilkan laporan PDF di Python. Selagi anda memilih alat yang betul, keseluruhan proses akan lancar. Terdapat beberapa perpustakaan yang biasa digunakan, seperti ReportLab, FPDF dan WeasyPrint, yang masing -masing mempunyai kelebihan mereka sendiri dan sesuai untuk senario yang berbeza. Berikut adalah beberapa perspektif praktikal untuk bercakap tentang cara menghasilkan laporan PDF di Python.

Bagaimana memilih perpustakaan untuk menjana PDF?
Python mempunyai beberapa perpustakaan generasi PDF yang biasa digunakan, yang bergantung kepada keperluan khusus anda:
- ReportLab : Kuat, menyokong tipografi dan gaya yang kompleks, sesuai untuk senario di mana dokumen berkualiti tinggi diperlukan.
- FPDF : Kos pembelajaran yang ringan dan sederhana, sesuai untuk menghasilkan PDF dengan cepat dengan struktur mudah.
- WeasyPrint : Anda boleh menukar HTML dan CSS ke PDF, yang sesuai untuk pemaju depan atau kandungan web yang sedia ada.
Jika anda sudah mempunyai templat web, WeasyPrint mungkin pilihan yang paling mudah; Jika anda ingin mengawal gaya kandungan dari awal, ReportLab lebih sesuai.

Bagaimana cara menulis data ke pdf?
Tidak kira perpustakaan yang anda gunakan, logik teras adalah untuk mengatur data dan kemudian tuliskannya ke baris dokumen mengikut baris. Mengambil ReportLab sebagai contoh, anda boleh menulis ini:
dari ReportLab.pdfgen Import Canvas c = canvas.canvas ("laporan.pdf") C.SsetFont ("Helvetica", 12) C.Drawstring (50, 750, "Tajuk Laporan") C.Drawstring (50, 730, "Nama: Zhang San") C.Drawstring (50, 710, "Umur: 30") C.Save ()
Ini akan menghasilkan fail PDF yang mengandungi maklumat asas. Jika anda mendapat data dari pangkalan data atau API, anda hanya perlu membaca data dan kemudian menyambungkannya ke dalam rentetan.

Jika anda menggunakan HTML ke PDF, anda boleh membuat HTML dengan template Jinja2 dan kemudian menyerahkannya kepada WeasyPrint untuk output:
dari templat import jinja2 dari import cap cuaca html template = templat (buka ("template.html"). Baca ()) html = template.render (name = "zhang san", umur = 30) Html (string = html) .write_pdf ("report.pdf")
Bagaimana untuk menangani susun atur dan gaya?
Penata PDF tidak fleksibel seperti laman web, tetapi ada cara untuk menjadikan kandungan lebih indah:
- Gunakan Jadual : ReportLab menyediakan kelas
Table
yang boleh digunakan untuk memaparkan jadual data. - Menetapkan fon dan warna : ReportLab menyokong pelbagai fon dan tetapan warna, tetapi berhati -hati bahawa sesetengah fon mungkin tidak datang dengan mereka sendiri dalam PDF dan perlu tertanam.
- Gambar dan carta : Anda boleh menggunakan
drawImage
untuk memasukkan gambar. Jika ia adalah carta yang dihasilkan oleh Matplotlib, simpannya sebagai PNG dan kemudian masukkannya.
Jika anda menggunakan HTML ke PDF, anda boleh menggunakan CSS secara langsung untuk mengawal gaya, yang akan lebih mudah.
Soalan dan nota yang sering ditanya
- Masalah Paparan Cina : Font lalai mungkin tidak menyokong Cina, dan anda perlu menambah fon Cina dengan
addFont
. - Susun atur Page : Perhatikan bahawa asal sistem koordinat berada di sudut kiri bawah dan paksi y ke atas, jadi pastikan untuk menempah jarak yang baik ketika menaip.
- Masalah Laluan Fail : Terutama apabila memberikan gambar tempatan dengan WeasyPrint, jalan mesti ditulis dengan betul.
- Isu Prestasi : Jika jumlah data besar dan terdapat banyak halaman, kelajuan generasi mungkin menjadi lambat. Pemprosesan atau pengoptimuman asynchronous struktur kandungan boleh dipertimbangkan.
Pada dasarnya itu sahaja. Memilih alat, menganjurkan data, memberi perhatian kepada butiran susun atur. Ia tidak rumit untuk menjana laporan PDF di Python, tetapi beberapa butiran memang mudah diabaikan.
Atas ialah kandungan terperinci Menjana laporan PDF dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pasang PYODBC: Gunakan perintah PipinstallPyoDBC untuk memasang perpustakaan; 2. Sambungkan SQLServer: Gunakan rentetan sambungan yang mengandungi pemacu, pelayan, pangkalan data, uid/pwd atau aman 3. Semak pemacu yang dipasang: Jalankan pyodbc.drivers () dan tapis nama pemacu yang mengandungi 'SQLServer' untuk memastikan nama pemacu yang betul digunakan seperti 'ODBCDriver17 untuk SQLServer'; 4. Parameter utama rentetan sambungan

Gunakan httpx.asyncclient untuk memulakan permintaan HTTP asynchronous dengan cekap. 1. Asas mendapatkan permintaan menguruskan pelanggan melalui asyncwith dan gunakan AwaitClient.get untuk memulakan permintaan yang tidak menyekat; 2. Menggabungkan Asyncio.Gather untuk menggabungkan dengan asyncio.Gather dapat meningkatkan prestasi dengan ketara, dan jumlah masa adalah sama dengan permintaan yang paling lambat; 3. Menyokong pengepala adat, pengesahan, tetapan base_url dan masa tamat; 4. Boleh menghantar permintaan pos dan membawa data JSON; 5. Beri perhatian untuk mengelakkan pencampuran kod asynchronous segerak. Sokongan proksi perlu memberi perhatian kepada keserasian back-end, yang sesuai untuk crawler atau agregasi API dan senario lain.

Pythoncanbeoptimizedformemory-boundoperationsbyreducingoverheadthroughgenerators, efisiendataStructures, danManagingObjectlifetimes.first, useGeneratorsInsteadofListStoprocesslargedataSetSoneiteMatime, mengelakkan muat turun muat turun, coose

Artikel ini bertujuan untuk membantu pemula Sqlalchemy menyelesaikan peringatan "RemovedIn20warning" yang ditemui apabila menggunakan create_engine dan kesilapan penutupan "resourceclosederror" berikutnya. Artikel ini akan menerangkan punca amaran ini secara terperinci dan memberikan langkah -langkah tertentu dan contoh kod untuk menghapuskan amaran dan memperbaiki isu sambungan untuk memastikan anda dapat menanyakan dan mengendalikan pangkalan data dengan lancar.

shutil.rmtree () adalah fungsi dalam python yang secara rekursif memadam seluruh pokok direktori. Ia boleh memadam folder yang ditentukan dan semua kandungan. 1. Penggunaan Asas: Gunakan shutil.rmtree (Path) untuk memadam direktori, dan anda perlu mengendalikan fileNotFoundError, PermissionError dan pengecualian lain. 2. Aplikasi Praktikal: Anda boleh membersihkan folder yang mengandungi subdirektori dan fail dalam satu klik, seperti data sementara atau direktori cache. 3. Nota: Operasi penghapusan tidak dipulihkan; FileNotFoundError dilemparkan apabila jalan tidak wujud; Ia mungkin gagal kerana kebenaran atau pekerjaan fail. 4.

Pasang pemacu pangkalan data yang sepadan; 2. Gunakan Connect () untuk menyambung ke pangkalan data; 3. Buat objek kursor; 4. Gunakan melaksanakan () atau executemany () untuk melaksanakan SQL dan menggunakan pertanyaan parameter untuk mengelakkan suntikan; 5. Gunakan Fetchall (), dan sebagainya untuk mendapatkan hasil; 6. komit () diperlukan selepas pengubahsuaian; 7. Akhirnya, tutup sambungan atau gunakan pengurus konteks untuk mengendalikannya secara automatik; Proses lengkap memastikan operasi SQL selamat dan cekap.

Python adalah alat yang cekap untuk melaksanakan proses ETL. 1. Pengekstrakan data: Data boleh diekstrak dari pangkalan data, API, fail dan sumber lain melalui panda, sqlalchemy, permintaan dan perpustakaan lain; 2. Penukaran Data: Gunakan panda untuk pembersihan, penukaran jenis, persatuan, pengagregatan dan operasi lain untuk memastikan kualiti data dan mengoptimumkan prestasi; 3. Pemuatan Data: Gunakan kaedah Pandas 'TO_SQL atau platform awan SDK untuk menulis data ke sistem sasaran, perhatikan kaedah menulis dan pemprosesan batch; 4. Cadangan Alat: Airflow, Dagster, Prefect digunakan untuk penjadualan dan pengurusan proses, menggabungkan penggera log dan persekitaran maya untuk meningkatkan kestabilan dan mengekalkan.

Gunakan psycopg2.pool.simpleConnectionPool untuk menguruskan sambungan pangkalan data dengan berkesan dan mengelakkan overhead prestasi yang disebabkan oleh penciptaan dan kemusnahan sambungan yang kerap. 1. Apabila membuat kolam sambungan, tentukan bilangan minimum dan maksimum sambungan sambungan dan pangkalan data untuk memastikan bahawa kolam sambungan diasaskan dengan jayanya; 2. Dapatkan sambungan melalui getConn (), dan gunakan PutConn () untuk mengembalikan sambungan ke kolam selepas melaksanakan operasi pangkalan data. Sentiasa panggil conn.close () dilarang; 3. SimpleConnectionPool adalah benang selamat dan sesuai untuk persekitaran berbilang threaded; 4. Adalah disyorkan untuk melaksanakan pengurus konteks dalam kombinasi dengan Pengurus Konteks untuk memastikan sambungan dapat dikembalikan dengan betul apabila pengecualian diperhatikan;
