Atur gambar Anda ke dalam PDF dan pelajari cara menggunakan Tkinter untuk membuat utilitas praktis ini.

Dari laporan bisnis hingga portofolio fotografi, Anda akan sering menemukan kebutuhan untuk menggunakan gambar dalam PDF. Konverter gambar-ke-PDF dapat membantu merampingkan proses. Meskipun ada banyak alat gratis yang tersedia secara online, kebutuhan mereka untuk mengunggah gambar mungkin merupakan masalah privasi atau keamanan.

Sebagai gantinya, Anda dapat membuat pengonversi gambar-ke-PDF offline menggunakan Python. Pilih beberapa gambar dalam format JPG atau PNG, dapatkan pratinjau, dan ubah menjadi PDF dengan tetap mempertahankan ukuran gambar aslinya.

Modul Tkinter, Pillow, dan ReportLab

Tkinter adalah pustaka GUI standar untuk Python. Ini menawarkan berbagai widget seperti tombol, label, dan kotak teks yang memudahkan pengembangan aplikasi seperti pemutar musik atau alat konversi berat. Untuk menginstal Tkinter di sistem Anda, buka terminal, dan ketik:

pip install tkinter

Modul Bantal adalah perpustakaan pencitraan Python yang kuat yang memudahkan untuk melakukan operasi pada gambar seperti mengubah ukuran, memotong, dan memfilter. Mengintegrasikan ini dengan

instagram viewer
OpenAI API dan DALL·E 2, Anda dapat membuat gambar menggunakan perintah teks.

Untuk menginstal Bantal, jalankan perintah ini:

pip install Pillow

ReportLab adalah pustaka Python sumber terbuka untuk menghasilkan PDF dan grafik. Ini memiliki berbagai alat yang dapat Anda gunakan untuk menghasilkan dokumen dengan gambar, teks, dan tabel yang berguna untuk menghasilkan laporan melalui pemrograman. Dengan ini, Anda juga dapat membuat laporan bisnis, faktur, dan sertifikat menambahkan tanda air teks. Untuk menginstal ReportLab:

pip install reportlab

Tentukan Struktur Pengonversi Gambar-ke-PDF

Anda dapat menemukan seluruh kode sumber untuk membuat konverter gambar-ke-PDF menggunakan Python di sini repositori GitHub.

Impor modul yang diperlukan dan buat kelas bernama ImageToPDFCConverter. Tentukan metode konstruktor yang menginisialisasi kelas dan menggunakan objek jendela root Tkinter sebagai argumen. Menginisialisasi daftar kosong untuk menyimpan jalur gambar yang dipilih pengguna. Tetapkan judul dan dimensi aplikasi. Buat dua tombol bernama Pilih Gambar Dan Konversikan ke PDF.

Lewati jendela tempat Anda ingin menempatkan tombol, teks yang harus ditampilkan, perintah yang harus dijalankan saat diklik, dan format font yang harus diterapkan. Atur tombol menggunakan mengemas() metode dan beri mereka padding 10 dalam arah vertikal.

import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image, ImageTk
from reportlab.lib.pagesizes import landscape
from reportlab.pdfgen import canvas

classImageToPDFConverter:
def__init__(self, root):
self.root = root
self.image_paths = []
self.root.title("Image to PDF Converter")
self.root.geometry("750x600")
self.select_images_button = tk.Button(self.root, text="Select Images", command=self.select_images, font=("Helvetica", 12),)
self.select_images_button.pack(pady=10)
self.convert_to_pdf_button = tk.Button(self.root, text="Convert to PDF", command=self.convert_to_pdf, font=("Helvetica", 12),)
self.convert_to_pdf_button.pack(pady=10)

Tentukan label dengan meneruskan jendela induk untuk menempatkannya, teks yang harus ditampilkan, format font yang harus digunakan, dan padding vertikal 10 (piksel).

Demikian pula, tentukan bingkai untuk mempratinjau gambar yang dipilih dan mengatur jendela, lebar, dan tinggi induknya. Atur dengan padding 10.

 self.select_images_label = tk.Label(self.root, text="Select Images", font=("Helvetica", 14))
self.select_images_label.pack(pady=10)
self.preview_frame = tk.Frame(self.root, width=380, height=200)
self.preview_frame.pack(pady=10)

Memilih Gambar dan Membuat Pratinjau

Tentukan metode, pilih_gambar(). Gunakan Tkinter filedialog kelas untuk membuka kotak dialog untuk memilih beberapa gambar dan menyimpannya di images_path daftar. Lewati direktori awal yang harus dibuka kotak dialog, judul yang harus ditampilkan, dan jenis file yang memungkinkan untuk dipilih.

Tentukan loop yang mengulang semua jalur gambar yang dipilih pengguna. Gunakan Bantal membuka() metode untuk membuka file gambar dan meneruskan dimensi maksimum yang seharusnya dimiliki ke metode pengubahan ukuran. Ubah gambar PIL ini menjadi Gambar Foto yang kompatibel dengan Tkinter. Buat label yang berada di bingkai pratinjau yang Anda buat sebelumnya dan tampilkan gambarnya. Menggunakan kisi manajer untuk mengatur gambar dalam tata letak kotak dengan tiga kolom.

defselect_images(self):
self.image_paths = filedialog.askopenfilenames(initialdir="/", title="Select Images", filetypes=(("Image Files", "*.jpg *.png"),))

for i, image_path in enumerate(self.image_paths):
image = Image.open(image_path)
image = self.resize_image(image, width=150, height=150)
photo = ImageTk.PhotoImage(image)
label = tk.Label(self.preview_frame, image=photo)
label.image = photo
label.grid(row=i // 3, column=i % 3, padx=10, pady=10)

Tentukan metode, Ubah ukuran gambar() yang mengubah ukuran gambar dengan mempertimbangkan dimensi gambar dan dimensi maksimum yang Anda tentukan sebelumnya. Hitung rasio aspek dan gunakan untuk mengatur lebar dan tinggi baru. Gunakan metode pengubahan ukuran PIL untuk mengubah ukuran gambar dengan menjaga rasio aspek tetap utuh. Gunakan interpolasi bilinear sebagai resampling untuk hasil yang lebih halus.

defresize_image(self, image, width, height):
aspect_ratio = min(width / float(image.size[0]), height / float(image.size[1]))
new_width = int(aspect_ratio * image.size[0])
new_height = int(aspect_ratio * image.size[1])
resized_image = image.resize((new_width, new_height), resample=Image.Resampling.BILINEAR)
return resized_image

Mengubah Gambar Menjadi PDF

Tentukan fungsi, konversi_ke_pdf(). Gunakan filedialog untuk menanyakan jalur tujuan untuk PDF. Tetapkan ekstensi default dan jenis file sebagai .pdf. Gunakan modul kanvas ReportLab untuk menggambar halaman lanskap. Ulangi jalur gambar, buka, atur dimensi halaman PDF sama dengan gambar, dan gambar gambar dari sudut kiri atas dengan dimensi yang ditentukan.

Itu showPage() metode memungkinkan PDF untuk pindah ke halaman berikutnya. Setelah program menyelesaikan proses ini, simpan PDF dan tampilkan kotak pesan beserta jalurnya.

defconvert_to_pdf(self):
pdf_path = filedialog.asksaveasfilename(defaultextension=".pdf", filetypes=(("PDF Files", "*.pdf"),))
c = canvas.Canvas(pdf_path, pagesize=landscape)
for image_path in self.image_paths:
image = Image.open(image_path)
width, height = image.size
c.setPageSize((width, height))
c.drawImage(image_path, 0, 0, width=width, height=height)
c.showPage()
c.save()
messagebox.showinfo("Conversion Successful", f"PDF saved at {pdf_path}")

Buat jendela root Tkinter dan berikan ke instance kelas. Itu mainloop() fungsi memberi tahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara sampai Anda menutup jendela.

if __name__ == "__main__":
root = tk.Tk()
app = ImageToPDFConverter(root)
root.mainloop()

Gabungkan semua kode dan Konverter gambar-ke-PDF siap digunakan.

Contoh Hasil Konversi Gambar Menjadi PDF Menggunakan Python

Saat menjalankan aplikasi, Anda akan melihat jendela dengan dua tombol dan ruang kosong yang menginstruksikan Anda untuk memilih gambar.

Saat mengklik Pilih Gambar tombol, sebuah jendela akan muncul meminta Anda untuk memilih gambar. Anda dapat memilih sejumlah gambar dalam kombinasi apa pun.

Setelah memilih gambar yang diinginkan, Anda akan melihat pratinjaunya:

Saat mengklik tombol Konversi ke PDF, Anda dapat memilih nama dan jalur tempat Anda ingin menyimpan file PDF. Setelah program menyelesaikan konversi, ini akan menampilkan kotak pesan yang mengatakan telah menyimpan PDF diikuti dengan nama jalur. Saat membuka PDF, Anda akan menemukan bahwa program telah mengonversi gambar tanpa mengubah dimensinya.

Pengoperasian PDF yang Dapat Anda Terapkan untuk Meningkatkan Aplikasi Anda

Anda dapat membuat aplikasi PDF lengkap yang melakukan operasi seperti menggabungkan, mengompresi, melindungi, dan membuka kunci PDF. Anda dapat membuat fitur untuk membagi PDF menjadi beberapa halaman, memutarnya, menghapus halaman tertentu, mengurutkannya, dan menambahkan halaman angka.

Anda juga dapat bereksperimen dengan format file lain untuk mengonversi dokumen atau presentasi menjadi PDF. Beberapa modul, seperti PyPDF2, PDFMiner, fpdf, dan pdfrw, dapat membantu Anda mencapainya dengan lebih mudah.