Görüntülerinizi PDF'lerde düzenleyin ve bu kullanışlı yardımcı programı oluşturmak için Tkinter'ı nasıl kullanacağınızı öğrenin.

İş raporlarından fotoğraf portföylerine kadar, sık sık PDF'lerde resim kullanma ihtiyacıyla karşılaşırsınız. Görüntüden PDF'ye dönüştürücü, süreci kolaylaştırmaya yardımcı olabilir. Çevrimiçi olarak kullanılabilen birçok ücretsiz araç olsa da, bunların sizin resim yüklemenize olan ihtiyacı bir gizlilik veya güvenlik endişesi olabilir.

Bunun yerine, Python kullanarak çevrimdışı bir görüntüden PDF'ye dönüştürücü oluşturabilirsiniz. JPG veya PNG formatında birden fazla resim seçin, bir önizleme alın ve orijinal resim boyutunu koruyarak bunları bir PDF'ye dönüştürün.

Tkinter, Yastık ve ReportLab Modülü

Tkinter, Python için standart GUI kitaplığıdır. gibi uygulamaları geliştirmeyi kolaylaştıran düğmeler, etiketler ve metin kutuları gibi çeşitli widget'lar sunar. müzik çalar veya bir ağırlık dönüştürme aracı. Tkinter'ı sisteminize kurmak için bir terminal açın ve şunu yazın:

instagram viewer
pip install tkinter

Yastık modülü, görüntüler üzerinde yeniden boyutlandırma, kırpma ve filtreleme gibi işlemleri gerçekleştirmeyi kolaylaştıran güçlü bir Python görüntüleme kitaplığıdır. Bunu entegre etmek OpenAI API ve DALL·E 2, bir metin istemi kullanarak görüntüler oluşturabilirsiniz.

Pillow'u yüklemek için şu komutu çalıştırın:

pip install Pillow

ReportLab, PDF'ler ve grafikler oluşturmak için açık kaynaklı bir Python kitaplığıdır. Görüntüler, metinler ve tablolar içeren belgeler oluşturmak için kullanabileceğiniz çeşitli araçlara sahiptir, bu da programlama yoluyla raporlar oluşturmayı faydalı kılar. Bununla, aynı zamanda iş raporları, faturalar ve sertifikalar oluşturabilirsiniz. metin filigranı ekleme. ReportLab'ı yüklemek için:

pip install reportlab

Görüntüden PDF'e Dönüştürücünün Yapısını Tanımlayın

Python kullanarak görüntüden PDF'ye dönüştürücü oluşturmak için kaynak kodunun tamamını burada bulabilirsiniz. GitHub deposu.

Gerekli modülleri içe aktarın ve adında bir sınıf oluşturun. ImageToPDF Dönüştürücü. Sınıfı başlatan ve Tkinter'ın kök pencere nesnesini bağımsız değişken olarak alan bir yapıcı yöntemi tanımlayın. Kullanıcının seçtiği görüntülerin yollarını saklamak için boş bir liste başlatın. Uygulamanın başlığını ve boyutlarını ayarlayın. adlı iki düğme oluşturun. Görselleri Seçin Ve PDF'ye Dönüştür.

Düğmeyi yerleştirmek istediğiniz pencereyi, görüntülemeleri gereken metni, tıklandığında yürütmeleri gereken komutu ve uygulayacakları yazı tipi biçimini iletin. kullanarak düğmeleri düzenleyin. ambalaj() yöntemi ve onlara dikey yönde 10'luk bir dolgu verin.

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)

Bir etiketi yerleştirmek için ana pencereden, göstermesi gereken metni, kullanması gereken yazı tipi biçimini ve 10'luk (piksel) dikey dolguyu geçirerek tanımlayın.

Benzer şekilde, seçilen görüntüyü önizlemek ve üst penceresini, genişliğini ve yüksekliğini ayarlamak için bir çerçeve tanımlayın. 10'luk bir dolgu ile düzenleyin.

 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)

Görüntünün Seçilmesi ve Önizleme Oluşturulması

Bir yöntem tanımlayın, resimleri seç(). Tkinter'ı kullan dosya diyalogu birden çok görüntüyü seçmek ve bunları depolamak için bir iletişim kutusu açmak için sınıf resimler_yolu liste. İletişim kutusunun açması gereken ilk dizini, görüntülemesi gereken başlığı ve seçime izin verdiği dosya türlerini iletin.

Kullanıcının seçtiği resimlerin tüm yolları üzerinde yinelenen bir döngü tanımlayın. Yastık kullan açık() görüntü dosyasını açma ve sahip olması gereken maksimum boyutu yeniden boyutlandırma yöntemine geçirme yöntemi. Bu PIL görüntüsünü şuna dönüştür: Fotoğraf Görüntüsü bu Tkinter ile uyumludur. Daha önce oluşturduğunuz önizleme çerçevesinde bulunan bir etiket oluşturun ve görüntüyü görüntüleyin. Kullan Kafes görüntüleri üç sütunlu bir ızgara düzeninde düzenlemek için yönetici.

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)

Bir yöntem tanımlayın, görüntüyü yeniden boyutlandırmak() görüntünün boyutunu ve daha önce tanımladığınız maksimum boyutu dikkate alarak görüntüyü yeniden boyutlandırır. En boy oranını hesaplayın ve bunu yeni genişlik ve yüksekliği ayarlamak için kullanın. En boy oranını bozmadan görüntüyü yeniden boyutlandırmak için PIL'in yeniden boyutlandırma yöntemini kullanın. Daha düzgün bir sonuç için yeniden örnekleme olarak çift doğrusal enterpolasyonu kullanın.

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

Görüntüleri PDF'e Dönüştürme

Bir işlev tanımlayın, convert_to_pdf(). PDF için hedef yolu istemek için dosya iletişim kutusunu kullanın. Varsayılan uzantıyı ve dosya türünü şu şekilde ayarlayın: .pdf. Bir manzara sayfası çizmek için ReportLab'ın tuval modülünü kullanın. Görüntülerin yolunu yineleyin, açın, PDF sayfasının boyutlarını görüntününkiyle aynı olacak şekilde ayarlayın ve görüntüyü sol üst köşeden belirtilen boyutlarda çizin.

bu sayfa göster() yöntemi, PDF'nin bir sonraki sayfaya geçmesini sağlar. Program bu işlemi tamamladıktan sonra, PDF'yi kaydedin ve yolla birlikte bir mesaj kutusu gösterin.

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

Tkinter kök penceresini oluşturun ve onu sınıf örneğine iletin. bu Ana döngü() işlevi, Python'a Tkinter olay döngüsünü çalıştırmasını ve siz pencereyi kapatana kadar olayları dinlemesini söyler.

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

Tüm kodu bir araya getirin ve görüntüden PDF'ye Dönüştürücü kullanıma hazırdır.

Python Kullanarak Görüntüleri PDF'ye Dönüştürmenin Örnek Çıktısı

Uygulamayı çalıştırırken, iki düğmeli bir pencere ve görüntüleri seçmenizi söyleyen bir boşluk göreceksiniz.

tıklayınca Görselleri Seçin düğmesine bastığınızda, görüntüleri seçmenizi isteyen bir pencere açılır. Herhangi bir kombinasyonda istediğiniz sayıda görüntüyü seçebilirsiniz.

İstediğiniz resimleri seçtikten sonra, bunların bir ön izlemesini göreceksiniz:

PDF'ye Dönüştür düğmesine tıkladığınızda, PDF dosyasını depolamak istediğiniz adı ve yolu seçebilirsiniz. Program dönüştürmeyi bitirdiğinde, yol adının ardından PDF'yi kaydettiğini söyleyen bir mesaj kutusu görüntüler. PDF'yi açtığınızda, programın görüntüleri boyutlarını değiştirmeden dönüştürdüğünü göreceksiniz.

Uygulamalarınızı Geliştirmek İçin Uygulayabileceğiniz PDF İşlemleri

Birleştirme, sıkıştırma, koruma ve kilit açma gibi işlemleri gerçekleştiren tam teşekküllü bir PDF uygulaması oluşturabilirsiniz. PDF'ler. PDF'yi birden çok sayfaya bölmek, döndürmek, belirli sayfaları kaldırmak, sıralamak ve sayfa eklemek için bir özellik oluşturabilirsiniz. sayılar.

Bir belgeyi veya sunuyu PDF'ye dönüştürmek için diğer dosya biçimlerini de deneyebilirsiniz. PyPDF2, PDFMiner, fpdf ve pdfrw gibi çeşitli modüller bunları daha rahat elde etmenize yardımcı olabilir.