Requisito previo: Tkinter , img2pdf
Python ofrece múltiples opciones para desarrollar GUI (interfaz gráfica de usuario). De todos los métodos GUI, Tkinter es el método más utilizado. Es una interfaz estándar de Python para el kit de herramientas Tk GUI que se envía con Python. Python con Tkinter es la forma más rápida y sencilla de crear aplicaciones GUI. En este artículo, aprenderemos cómo convertir varias imágenes en varios PDF o varias imágenes en un solo PDF usando Tkinter en Python. Para la conversión, utilizaremos el Módulo img2pdf .
img2pdf es un paquete Python de código abierto para convertir imágenes a formato pdf. Incluye otro módulo Pillow que también se puede usar para mejorar la imagen (Brillo, contraste y otras cosas)
Para la instalación ejecuta este comando en tu terminal:
pip install img2pdf
Entendamos la implementación paso a paso:
Paso 1: crea una ventana de Tkinter y agrega botones, etiquetas, etc.
Python3
# Import Module from tkinter import * # Create Object root = Tk() # set Geometry root.geometry('400x200') # Add Labels and Buttons Label(root, text = "IMAGE CONVERSION", font = "italic 15 bold").pack(pady = 10) Button(root, text = "Select Images", font = 14).pack(pady = 10) frame = Frame() frame.pack(pady = 20) Button(frame, text = "Image to PDF", relief = "solid", bg = "white", font = 15).pack(side = LEFT,padx = 10) Button(frame, text = "Images to PDF", relief = "solid", bg = "white",font = 15).pack() # Execute Tkinter root.mainloop()
Paso 2: Crearemos tres funciones; seleccionar_archivo() , imagen_a_pdf() , imágenes_a_pdf()
- select_file: Te ayudará a seleccionar el archivo
- image_to_pdf: se utiliza para convertir un archivo de imagen en un archivo pdf
- images_to_pdf: se utiliza para convertir varios archivos de imagen en un archivo pdf
Python3
def select_file(): global file_names file_names = askopenfilenames(initialdir = "/",title = "Select File") # IMAGE TO PDF def image_to_pdf(): for index, file_name in enumerate(file_names): with open(f"file {index}.pdf", "wb") as f: f.write(img2pdf.convert(file_name)) # IMAGES TO PDF def images_to_pdf(): with open(f"file.pdf","wb") as f: f.write(img2pdf.convert(file_names))
A continuación se muestra la implementación:
Python3
# Import Module from tkinter import * from tkinter.filedialog import askopenfilenames import img2pdf # Create Object root = Tk() # set Geometry root.geometry('400x200') def select_file(): global file_names file_names = askopenfilenames(initialdir = "/", title = "Select File") # IMAGE TO PDF def image_to_pdf(): for index, file_name in enumerate(file_names): with open(f"file {index}.pdf", "wb") as f: f.write(img2pdf.convert(file_name)) # IMAGES TO PDF def images_to_pdf(): with open(f"file.pdf", "wb") as f: f.write(img2pdf.convert(file_names)) # Add Labels and Buttons Label(root, text = "IMAGE CONVERSION", font = "italic 15 bold").pack(pady = 10) Button(root, text = "Select Images", command = select_file, font = 14).pack(pady = 10) frame = Frame() frame.pack(pady = 20) Button(frame, text = "Image to PDF", command = image_to_pdf, relief = "solid", bg = "white", font = 15).pack(side = LEFT, padx = 10) Button(frame, text = "Images to PDF", command = images_to_pdf, relief = "solid", bg = "white", font = 15).pack() # Execute Tkinter root.mainloop()
Producción: