Организујте своје слике у ПДФ-ове и научите како да користите Ткинтер за прављење овог згодног услужног програма.

Од пословних извештаја до портфолија фотографија, често ћете наићи на потребу да користите слике у ПДФ-овима. Конвертор слике у ПДФ може помоћи да се поједностави процес. Иако постоји много бесплатних алата доступних на мрежи, њихова потреба да отпремате слике може бити проблем приватности или безбедности.

Уместо тога, можете да направите офлајн претварач слике у ПДФ користећи Питхон. Изаберите више слика у ЈПГ или ПНГ формату, добијте преглед и конвертујте их у ПДФ уз задржавање оригиналне величине слике.

Модул Ткинтер, јастук и РепортЛаб

Ткинтер је стандардна ГУИ библиотека за Питхон. Нуди разне виџете попут дугмади, налепница и оквира за текст који олакшавају развој апликација као што је Музички плејер или алат за конверзију тежине. Да бисте инсталирали Ткинтер у свој систем, отворите терминал и откуцајте:

pip install tkinter

Јастучни модул је моћна Питхон библиотека слика која олакшава извођење операција на сликама као што су промена величине, исецање и филтрирање. Интегришући ово са

instagram viewer
ОпенАИ АПИ и ДАЛЛ·Е 2, можете генерисати слике користећи текстуални упит.

Да бисте инсталирали Пиллов, покрените ову команду:

pip install Pillow

РепортЛаб је Питхон библиотека отвореног кода за генерисање ПДФ-ова и графика. Има различите алате које можете користити за генерисање докумената са сликама, текстом и табелама што га чини корисним за генерисање извештаја путем програмирања. Са овим можете истовремено да правите пословне извештаје, фактуре и сертификате додавање текстуалног воденог жига. Да бисте инсталирали РепортЛаб:

pip install reportlab

Дефинишите структуру претварача слике у ПДФ

Овде можете пронаћи цео изворни код за прављење претварача слике у ПДФ користећи Питхон ГитХуб спремиште.

Увезите потребне модуле и креирајте класу под називом ИмагеТоПДФЦонвертер. Дефинишите метод конструктора који иницијализује класу и узима Ткинтеров основни објекат прозора као аргумент. Покрените празну листу да бисте сачували путање слика које корисник одабере. Подесите наслов и димензије апликације. Направите два дугмета са именом Изаберите Слике и Претвори у ПДФ.

Проследите прозор у који желите да поставите дугме, текст који треба да прикаже, команду коју треба да изврши када се кликне и формат фонта који треба да примени. Организујте дугмад помоћу паковање() метод и дајте им паддинг од 10 у вертикалном правцу.

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)

Дефинишите ознаку тако што ћете је проследити родитељском прозору у који ћете је поставити, текст који треба да прикаже, формат фонта који треба да користи и вертикални паддинг од 10 (пиксела).

Слично томе, дефинишите оквир да бисте прегледали изабрану слику и подесите њен надређени прозор, ширину и висину. Организујте га са допуном од 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)

Избор слике и прављење прегледа

Дефинишите метод, селецт_имагес(). Користите Ткинтер филедиалог класе да бисте отворили оквир за дијалог да бисте изабрали више слика и сачували их у имагес_патх листа. Проследите почетни директоријум који дијалошки оквир треба да отвори, наслов који треба да прикаже и типове датотека које дозвољава избор.

Дефинишите петљу која се понавља преко свих путања слика које је корисник изабрао. Користите јастуке опен() метод за отварање датотеке слике и проследити максималну димензију коју треба да поседује методу промене величине. Претворите ову ПИЛ слику у ПхотоИмаге који је компатибилан са Ткинтером. Направите ознаку која се налази у оквиру за преглед који сте раније креирали и прикажите слику. Користити грид менаџер да организује слике у распореду мреже са три колоне.

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)

Дефинишите метод, ресизе_имаге() који мења величину слике узимајући у обзир димензију слике и максималну димензију коју сте раније дефинисали. Израчунајте однос ширине и висине и користите га за подешавање нове ширине и висине. Користите ПИЛ-ов метод промене величине да бисте променили величину слике задржавајући нетакнуту пропорцију. Користите билинеарну интерполацију као поновно узорковање за глаткији резултат.

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

Претварање слика у ПДФ

Дефинишите функцију, претворити_у_пдф(). Користите дијалог за датотеке да бисте затражили одредишну путању за ПДФ. Подесите подразумевану екстензију и тип датотеке као .пдф. Користите модул платна РепортЛаб-а да нацртате хоризонталну страницу. Итерирајте преко путање слика, отворите их, подесите димензије странице ПДФ-а исте као и слике и нацртајте слику из горњег левог угла са наведеним димензијама.

Тхе сховПаге() метода омогућава да се ПДФ премести на следећу страницу. Када програм заврши овај процес, сачувајте ПДФ и прикажите оквир за поруку заједно са путањом.

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

Креирајте Ткинтер роот прозор и проследите га инстанци класе. Тхе маинлооп() функција каже Питхон-у да покрене Ткинтер петљу догађаја и ослушкује догађаје док не затворите прозор.

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

Ставите сав код заједно и претварач слика у ПДФ је спреман за употребу.

Пример излаза за претварање слика у ПДФ користећи Питхон

Када покренете апликацију, видећете прозор са два дугмета и празним простором који вас упућује да изаберете слике.

Кликом на Изаберите Слике дугме, искаче прозор у којем се тражи да изаберете слике. Можете одабрати било који број слика у било којој комбинацији.

Када одаберете жељене слике, видећете њихов преглед:

Када кликнете на дугме Претвори у ПДФ, можете да изаберете име и путању где желите да сачувате ПДФ датотеку. Када програм заврши конверзију, приказује оквир са поруком да је сачувао ПДФ праћен именом путање. Када отворите ПДФ, видећете да је програм конвертовао слике без промене њихових димензија.

ПДФ операције које можете да примените да бисте побољшали своје апликације

Можете да направите пуноправну ПДФ апликацију која обавља операције као што су спајање, компресовање, заштита и откључавање ПДФ-ови. Можете да направите функцију да поделите ПДФ на више страница, да их ротирате, уклоните одређене странице, сортирате и додате страницу бројевима.

Можете експериментисати и са другим форматима датотека за претварање документа или презентације у ПДФ. Неколико модула, као што су ПиПДФ2, ПДФМинер, фпдф и пдфрв, могу вам помоћи да их постигнете на практичнији начин.