अपनी छवियों को पीडीएफ़ में व्यवस्थित करें और सीखें कि इस उपयोगी उपयोगिता को बनाने के लिए टिंकर का उपयोग कैसे करें।

व्यावसायिक रिपोर्टों से लेकर फ़ोटोग्राफ़ी पोर्टफ़ोलियो तक, आपको अक्सर पीडीएफ़ में छवियों का उपयोग करने की आवश्यकता महसूस होगी। एक इमेज-टू-पीडीएफ कनवर्टर प्रक्रिया को सुव्यवस्थित करने में मदद कर सकता है। हालाँकि ऑनलाइन कई निःशुल्क टूल उपलब्ध हैं, लेकिन आपके लिए छवियाँ अपलोड करने की उनकी आवश्यकता गोपनीयता या सुरक्षा संबंधी चिंता का विषय हो सकती है।

इसके बजाय, आप पायथन का उपयोग करके एक ऑफ़लाइन छवि-से-पीडीएफ कनवर्टर बना सकते हैं। जेपीजी या पीएनजी प्रारूप में एकाधिक छवियों का चयन करें, पूर्वावलोकन प्राप्त करें, और मूल छवि आकार को बनाए रखते हुए उन्हें पीडीएफ में परिवर्तित करें।

टिंकर, पिलो और रिपोर्टलैब मॉड्यूल

टिंकर पायथन के लिए मानक जीयूआई लाइब्रेरी है। यह बटन, लेबल और टेक्स्ट बॉक्स जैसे विभिन्न प्रकार के विजेट प्रदान करता है जिससे ऐप्स विकसित करना आसान हो जाता है संगीत बजाने वाला या वजन रूपांतरण उपकरण। अपने सिस्टम में टिंकर स्थापित करने के लिए, एक टर्मिनल खोलें, और टाइप करें:

pip install tkinter

पिलो मॉड्यूल एक शक्तिशाली पायथन इमेजिंग लाइब्रेरी है जो छवियों पर आकार बदलने, क्रॉप करने और फ़िल्टर करने जैसे ऑपरेशन करना आसान बनाता है। इसे इसके साथ एकीकृत किया जा रहा है OpenAI API और DALL·E 2, आप टेक्स्ट प्रॉम्प्ट का उपयोग करके छवियां उत्पन्न कर सकते हैं.

पिलो स्थापित करने के लिए, यह कमांड चलाएँ:

pip install Pillow

रिपोर्टलैब पीडीएफ और ग्राफिक्स बनाने के लिए एक ओपन-सोर्स पायथन लाइब्रेरी है। इसमें विभिन्न उपकरण हैं जिनका उपयोग आप छवियों, पाठ और तालिकाओं के साथ दस्तावेज़ तैयार करने के लिए कर सकते हैं जो प्रोग्रामिंग के माध्यम से रिपोर्ट तैयार करना उपयोगी बनाता है। इसकी मदद से आप बिजनेस रिपोर्ट, इनवॉइस और सर्टिफिकेट भी बना सकते हैं एक टेक्स्ट वॉटरमार्क जोड़ना. रिपोर्टलैब स्थापित करने के लिए:

pip install reportlab

इमेज-टू-पीडीएफ कनवर्टर की संरचना को परिभाषित करें

आप इसमें पायथन का उपयोग करके इमेज-टू-पीडीएफ कनवर्टर बनाने के लिए संपूर्ण स्रोत कोड पा सकते हैं गिटहब रिपॉजिटरी.

आवश्यक मॉड्यूल आयात करें और नामक एक क्लास बनाएं ImageToPDFConverter. एक कंस्ट्रक्टर विधि को परिभाषित करें जो क्लास को इनिशियलाइज़ करती है और टिंकर के रूट विंडो ऑब्जेक्ट को एक तर्क के रूप में लेती है। उपयोगकर्ता द्वारा चुनी गई छवियों के पथों को संग्रहीत करने के लिए एक खाली सूची प्रारंभ करें। एप्लिकेशन का शीर्षक और आयाम सेट करें. नाम के दो बटन बनाएं छवियाँ चुनें और पीडीएफ में कनवर्ट करें.

वह विंडो पास करें जिसमें आप बटन लगाना चाहते हैं, उन्हें कौन सा टेक्स्ट प्रदर्शित करना चाहिए, वह कमांड जिसे क्लिक करने पर उन्हें निष्पादित करना चाहिए, और फ़ॉन्ट प्रारूप जो उन्हें लागू करना चाहिए। का उपयोग करके बटनों को व्यवस्थित करें सामान बाँधना() विधि और उन्हें ऊर्ध्वाधर दिशा में 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

छवियों को पीडीएफ में परिवर्तित करना

एक फ़ंक्शन परिभाषित करें, Convert_to_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}")

टिंकर रूट विंडो बनाएं और इसे क्लास इंस्टेंस में पास करें। मुख्य घेरा() फ़ंक्शन पायथन को टिंकर ईवेंट लूप चलाने और विंडो बंद करने तक ईवेंट सुनने के लिए कहता है।

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

सभी कोड को एक साथ रखें और इमेज-टू-पीडीएफ कनवर्टर उपयोग के लिए तैयार है।

पायथन का उपयोग करके छवियों को पीडीएफ में परिवर्तित करने का उदाहरण आउटपुट

ऐप चलाने पर, आपको दो बटन और एक रिक्त स्थान वाली एक विंडो दिखाई देगी जो आपको छवियों का चयन करने का निर्देश देगी।

क्लिक करने पर छवियाँ चुनें बटन, एक विंडो पॉप अप होती है जो आपसे छवियां चुनने के लिए कहती है। आप किसी भी संयोजन में किसी भी संख्या में छवियों का चयन कर सकते हैं।

एक बार जब आप अपनी इच्छित छवियां चुन लेंगे, तो आपको उनका पूर्वावलोकन दिखाई देगा:

कन्वर्ट टू पीडीएफ बटन पर क्लिक करने पर, आप उस नाम और पथ का चयन कर सकते हैं जहां आप पीडीएफ फाइल को स्टोर करना चाहते हैं। एक बार जब प्रोग्राम रूपांतरण पूरा कर लेता है, तो यह एक संदेश बॉक्स प्रदर्शित करता है जिसमें कहा जाता है कि उसने पथ नाम के साथ पीडीएफ को सहेज लिया है। पीडीएफ खोलने पर आप पाएंगे कि प्रोग्राम ने छवियों के आयामों को बदले बिना उन्हें परिवर्तित कर दिया है।

पीडीएफ संचालन आप अपने अनुप्रयोगों को बेहतर बनाने के लिए कार्यान्वित कर सकते हैं

आप एक पूर्ण पीडीएफ एप्लिकेशन बना सकते हैं जो मर्जिंग, कंप्रेसिंग, सुरक्षा और अनलॉकिंग जैसे ऑपरेशन करता है पीडीएफ. आप पीडीएफ को कई पृष्ठों में विभाजित करने, उन्हें घुमाने, विशेष पृष्ठों को हटाने, इसे सॉर्ट करने और पेज जोड़ने के लिए एक सुविधा बना सकते हैं नंबर.

आप किसी दस्तावेज़ या प्रेजेंटेशन को पीडीएफ में परिवर्तित करने के लिए अन्य फ़ाइल स्वरूपों के साथ भी प्रयोग कर सकते हैं। कई मॉड्यूल, जैसे PyPDF2, PDFMiner, fpdf, और pdfrw, इन्हें अधिक आसानी से प्राप्त करने में आपकी सहायता कर सकते हैं।