ארגן את התמונות שלך לקובצי PDF ולמד כיצד להשתמש ב-Tkinter כדי לבנות את כלי השירות השימושי הזה.
מדוחות עסקיים ועד תיקי צילום, לעתים קרובות תתקל בצורך להשתמש בתמונות בקובצי PDF. ממיר תמונה ל-PDF יכול לעזור לייעל את התהליך. אמנם ישנם כלים חינמיים רבים זמינים באינטרנט, אך הצורך שלהם בהעלאת תמונות עשוי להוות דאגה לפרטיות או אבטחה.
במקום זאת, אתה יכול לבנות ממיר תמונה ל-PDF לא מקוון באמצעות Python. בחר מספר תמונות בפורמט JPG או PNG, קבל תצוגה מקדימה והמר אותן ל-PDF תוך שמירה על גודל התמונה המקורי.
מודול Tkinter, Pillow ו- ReportLab
Tkinter היא ספריית ה-GUI הסטנדרטית עבור Python. הוא מציע מגוון של ווידג'טים כמו לחצנים, תוויות ותיבות טקסט שמקלים על פיתוח אפליקציות כמו נגן מוזיקה או כלי להמרת משקל. כדי להתקין את Tkinter במערכת שלך, פתח מסוף והקלד:
pip install tkinter
מודול הכרית הוא ספריית הדמיה רבת עוצמה של Python המקלה על ביצוע פעולות בתמונות כגון שינוי גודל, חיתוך וסינון. משלבים את זה עם OpenAI API ו-DALL·E 2, אתה יכול ליצור תמונות באמצעות בקשת טקסט.
כדי להתקין כרית, הפעל את הפקודה הזו:
pip install Pillow
ReportLab היא ספריית Python בקוד פתוח להפקת קובצי PDF וגרפיקה. יש לו כלים שונים שבהם אתה יכול להשתמש כדי ליצור מסמכים עם תמונות, טקסט וטבלאות, מה שהופך אותו לשימושי להפקת דוחות באמצעות תכנות. בעזרת זה, אתה יכול לבנות דוחות עסקיים, חשבוניות ואישורים תוך כדי הוספת סימן מים טקסט. כדי להתקין ReportLab:
pip install reportlab
הגדר את המבנה של ממיר תמונה ל-PDF
אתה יכול למצוא את כל קוד המקור לבניית ממיר תמונה ל-PDF באמצעות Python כאן מאגר GitHub.
ייבא את המודולים הדרושים וצור מחלקה בשם ImageToPDFConverter. הגדר שיטת בנאי המאתחלת את המחלקה ולוקחת את אובייקט החלון של Tkinter כארגומנט. אתחול רשימה ריקה כדי לאחסן את הנתיבים של התמונות שהמשתמש בוחר. הגדר את הכותרת והממדים של היישום. צור שני כפתורים בשם בחר תמונות ו המר ל-PDF.
העבירו את החלון שבו ברצונכם למקם את הכפתור, את הטקסט שהם צריכים להציג, את הפקודה שהם צריכים לבצע בלחיצה, ואת פורמט הגופן שהם צריכים להחיל. ארגן את הכפתורים באמצעות ה חבילה() שיטה ולתת להם ריפוד של 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)
בחירת התמונה ויצירת תצוגה מקדימה
הגדירו שיטה, select_images(). השתמש ב-Tkinter's קובץ שיח class כדי לפתוח תיבת דו-שיח כדי לבחור תמונות מרובות ולאחסן אותן ב- נתיב_תמונות רשימה. העבר את הספרייה הראשונית שתיבת הדו-שיח אמורה להיפתח, את הכותרת שהיא אמורה להציג ואת סוגי הקבצים שהיא מאפשרת בחירה.
הגדר לולאה החוזרת על כל הנתיבים של התמונות שהמשתמש בחר. השתמש בכרית לִפְתוֹחַ() שיטה לפתוח את קובץ התמונה ולהעביר את הממד המקסימלי שהוא צריך להחזיק לשיטת שינוי הגודל. המר תמונת PIL זו ל PhotoImage זה תואם ל-Tkinter. צור תווית שנמצאת במסגרת התצוגה המקדימה שיצרת קודם לכן והצג את התמונה. להשתמש ב רֶשֶׁת מנהל לארגן את התמונות בפריסת רשת עם שלוש עמודות.
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)
הגדירו שיטה, resize_image() שמשנה את גודל התמונה תוך התחשבות במימד התמונה ובמימד המקסימלי שהגדרת קודם לכן. חשב את יחס הרוחב-גובה והשתמש בו כדי להגדיר את הרוחב והגובה החדשים. השתמש בשיטת שינוי הגודל של PIL כדי לשנות את גודל התמונה תוך שמירה על יחס הגובה-רוחב ללא פגע. השתמש באינטרפולציה בילינארית כדגימה מחדש לתוצאה חלקה יותר.
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
המרת התמונות ל-PDF
הגדר פונקציה, convert_to_pdf(). השתמש ב-filedialog כדי לבקש את נתיב היעד של ה-PDF. הגדר את סיומת ברירת המחדל וסוג הקובץ כ .pdf. השתמש במודול הקנבס של ReportLab כדי לצייר דף לרוחב. עברו על הנתיב של התמונות, פתחו אותן, קבעו את המידות של דף ה-PDF זהות לאלו של התמונה, וציירו את התמונה מהפינה השמאלית העליונה עם המידות שצוינו.
ה showPage() השיטה מאפשרת ל-PDF לעבור לעמוד הבא. לאחר שהתוכנית תסיים תהליך זה, שמור את ה-PDF והצג תיבת הודעה יחד עם הנתיב.
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 והעביר אותו למופע המחלקה. ה mainloop() הפונקציה אומרת לפייתון להפעיל את לולאת האירועים של Tkinter ולהקשיב לאירועים עד שתסגור את החלון.
if __name__ == "__main__":
root = tk.Tk()
app = ImageToPDFConverter(root)
root.mainloop()
חבר את כל הקוד וממיר תמונה ל-PDF מוכן לשימוש.
פלט דוגמה של המרת תמונות ל-PDF באמצעות Python
בהפעלת האפליקציה, תראה חלון עם שני לחצנים ורווח ריק המורה לך לבחור את התמונות.
בלחיצה על בחר תמונות כפתור, קופץ חלון המבקש ממך לבחור את התמונות. אתה יכול לבחור כל מספר של תמונות בכל שילוב.
לאחר שתבחר את התמונות הרצויות, תראה תצוגה מקדימה שלהן:
בלחיצה על כפתור המר ל-PDF, תוכל לבחור את השם והנתיב שבו ברצונך לאחסן את קובץ ה-PDF. לאחר שהתוכנית מסיימת את ההמרה, היא מציגה תיבת הודעה האומרת שהיא שמרה את ה-PDF ואחריו שם הנתיב. בפתיחת ה-PDF תגלו שהתוכנה המירה את התמונות מבלי לשנות את מידותיהן.
פעולות PDF שאתה יכול ליישם כדי לשפר את היישומים שלך
אתה יכול לבנות יישום PDF מלא המבצע פעולות כמו מיזוג, דחיסה, הגנה וביטול נעילה קובצי PDF. אתה יכול לבנות תכונה כדי לפצל את ה-PDF למספר עמודים, לסובב אותם, להסיר עמודים מסוימים, למיין אותו ולהוסיף עמוד מספרים.
אתה יכול להתנסות גם בפורמטים אחרים של קבצים להמרת מסמך או מצגת ל-PDF. מספר מודולים, כמו PyPDF2, PDFMiner, fpdf ו-pdfrw, יכולים לעזור לך להשיג אותם בצורה נוחה יותר.