Järjestä kuvat PDF-tiedostoiksi ja opi käyttämään Tkinteriä tämän kätevän apuohjelman rakentamiseen.

Liikeraporteista valokuvaportfolioihin joudut usein käyttämään PDF-tiedostoja. Kuva-PDF-muunnin voi auttaa virtaviivaistamaan prosessia. Vaikka verkossa on monia ilmaisia ​​työkaluja, niiden tarve lähettää kuvia voi olla yksityisyyden tai turvallisuuden kannalta huolenaihe.

Sen sijaan voit rakentaa offline-kuvan PDF-muuntimen Pythonilla. Valitse useita kuvia JPG- tai PNG-muodossa, hanki esikatselu ja muunna ne PDF-muotoon säilyttäen samalla alkuperäisen kuvakoon.

Tkinter-, tyyny- ja ReportLab-moduuli

Tkinter on Pythonin standardi GUI-kirjasto. Se tarjoaa erilaisia ​​widgetejä, kuten painikkeita, tarroja ja tekstiruutuja, joiden avulla on helppo kehittää sovelluksia, kuten musiikinsoittaja tai painonmuuntotyökalu. Asenna Tkinter järjestelmääsi avaamalla pääte ja kirjoittamalla:

pip install tkinter

Pillow-moduuli on tehokas Python-kuvakirjasto, jonka avulla kuville on helppo suorittaa toimintoja, kuten koon muuttaminen, rajaaminen ja suodatus. Integroimalla tämän kanssa

instagram viewer
OpenAI API ja DALL·E 2, voit luoda kuvia tekstikehotteen avulla.

Asenna Pillow suorittamalla tämä komento:

pip install Pillow

ReportLab on avoimen lähdekoodin Python-kirjasto PDF-tiedostojen ja grafiikan luomiseen. Siinä on erilaisia ​​työkaluja, joiden avulla voit luoda asiakirjoja, joissa on kuvia, tekstiä ja taulukoita, mikä tekee siitä hyödyllistä luoda raportteja ohjelmoinnin avulla. Tämän avulla voit myös rakentaa liiketoimintaraportteja, laskuja ja todistuksia tekstin vesileiman lisääminen. ReportLabin asentaminen:

pip install reportlab

Määritä Image-to-PDF-muuntimen rakenne

Löydät koko lähdekoodin kuva-PDF-muuntimen rakentamiseen Pythonilla tästä GitHub-arkisto.

Tuo tarvittavat moduulit ja luo luokka nimeltä ImageToPDFConverter. Määritä konstruktorimetodi, joka alustaa luokan ja ottaa argumentiksi Tkinterin juuriikkunaobjektin. Alusta tyhjä luettelo tallentaaksesi käyttäjän valitsemien kuvien polut. Aseta sovelluksen otsikko ja mitat. Luo kaksi painiketta nimeltä Valitse Kuvat ja Muunna PDF-muotoon.

Ohita ikkuna, johon haluat sijoittaa painikkeen, teksti, jonka niiden pitäisi näyttää, komento, joka niiden tulee suorittaa, kun niitä napsautetaan, ja fonttimuoto, jota niitä tulee käyttää. Järjestä painikkeet käyttämällä pakkaus() menetelmällä ja anna niille 10 pehmuste pystysuunnassa.

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)

Määritä tarra välittämällä se pääikkuna, johon se asetetaan, teksti, jonka sen tulee näyttää, käytettävä fonttimuoto ja pystysuora täyttö 10 (pikseliä).

Samoin määritä kehys valitun kuvan esikatselua varten ja aseta sen pääikkuna, leveys ja korkeus. Järjestä se 10:n pehmusteella.

 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)

Kuvan valitseminen ja esikatselun luominen

Määritä menetelmä, select_images(). Käytä Tkinteriä tiedostovalintaikkuna luokka avataksesi valintaikkunan, jossa voit valita useita kuvia ja tallentaa ne images_path lista. Välitä aloitushakemisto, jonka valintaikkunan pitäisi avautua, otsikko, jonka sen pitäisi näyttää, ja tiedostotyypit, jotka se sallii valinnan.

Määritä silmukka, joka toistuu kaikkien käyttäjän valitsemien kuvien poluilla. Käytä tyynyjä avata() tapa avata kuvatiedosto ja siirtää sen suurin mahdollinen koko koonmuutosmenetelmälle. Muunna tämä PIL-kuva muotoon PhotoImage joka on yhteensopiva Tkinterin kanssa. Luo tarra, joka sijaitsee aiemmin luomassasi esikatselukehyksessä, ja näytä kuva. Käytä ruudukko hallintaohjelma järjestää kuvat ruudukkoasetteluksi, jossa on kolme saraketta.

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)

Määritä menetelmä, resize_image() joka muuttaa kuvan kokoa ottaen huomioon kuvan mitat ja aiemmin määrittämäsi enimmäismitan. Laske kuvasuhde ja aseta se uusi leveys ja korkeus. Käytä PIL: n koonmuutosmenetelmää muuttaaksesi kuvan kokoa pitämällä kuvasuhteen ennallaan. Käytä bilineaarista interpolointia uudelleennäytteenottoon tasaisemman tuloksen saamiseksi.

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

Kuvien muuntaminen PDF-muotoon

Määritä funktio, convert_to_pdf(). Käytä tiedostovalintaikkunaa kysyäksesi PDF-tiedoston kohdepolun. Aseta oletustunniste ja tiedostotyyppi muodossa .pdf. Käytä ReportLabin kangasmoduulia vaakasuuntaisen sivun piirtämiseen. Iteroi kuvien polkua, avaa ne, aseta PDF-sivun mitat samaksi kuin kuvan mitat ja piirrä kuva vasemmasta yläkulmasta määritetyillä mitoilla.

The näytäsivu() menetelmä mahdollistaa PDF-tiedoston siirtymisen seuraavalle sivulle. Kun ohjelma on suorittanut tämän prosessin, tallenna PDF ja näytä viestilaatikko polun mukana.

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

Luo Tkinterin juuriikkuna ja välitä se luokan ilmentymälle. The mainloop() -toiminto käskee Pythonia suorittamaan Tkinterin tapahtumasilmukan ja kuuntelemaan tapahtumia, kunnes suljet ikkunan.

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

Yhdistä kaikki koodi ja kuvan PDF-muunnin on valmis käytettäväksi.

Esimerkkituloste kuvien muuntamisesta PDF-muotoon Pythonin avulla

Kun sovellusta käytetään, näet ikkunan, jossa on kaksi painiketta ja tyhjä tila, joka neuvoo sinua valitsemaan kuvat.

Napsauttamalla Valitse Kuvat -painiketta, näyttöön tulee ikkuna, jossa sinua pyydetään valitsemaan kuvat. Voit valita minkä tahansa määrän kuvia missä tahansa yhdistelmässä.

Kun olet valinnut haluamasi kuvat, näet niistä esikatselun:

Napsauttamalla Muunna PDF-tiedostoksi -painiketta voit valita nimen ja polun, johon haluat tallentaa PDF-tiedoston. Kun ohjelma on suorittanut muuntamisen, se näyttää viestiruudun, jossa sanotaan, että se on tallentanut PDF-tiedoston ja sen jälkeen polun nimi. Kun avaat PDF-tiedoston, huomaat, että ohjelma on muuntanut kuvat muuttamatta niiden kokoa.

PDF-toiminnot, joita voit toteuttaa sovellusten parantamiseksi

Voit rakentaa täysimittaisen PDF-sovelluksen, joka suorittaa toimintoja, kuten yhdistämisen, pakkaamisen, suojaamisen ja lukituksen avaamisen PDF-tiedostoja. Voit rakentaa ominaisuuden jakaa PDF-tiedoston useille sivuille, kiertää niitä, poistaa tiettyjä sivuja, lajitella ja lisätä sivun numeroita.

Voit kokeilla myös muita tiedostomuotoja muuntaessasi asiakirjan tai esityksen PDF-muotoon. Useat moduulit, kuten PyPDF2, PDFMiner, fpdf ja pdfrw, voivat auttaa sinua saavuttamaan nämä kätevämmin.