फ़ोन की फ़ोटो से PDF: फ़ाइल इतनी बड़ी क्यों बनती है और एक पृष्ठ आड़ा क्यों हो जाता है
छवि से PDF हर फ़ोटो को उसके पूरे पिक्सेल आकार में अलग पृष्ठ पर रखता है, इसलिए फ़ोन के आकार वाली तीन 3.2 MB की JPEG से 41.5 MB की PDF बनी, और एक पोर्ट्रेट फ़ोटो लैंडस्केप पृष्ठ पर आई। रूपांतरण से पहले फ़ोटो छोटी करें, और आड़े पृष्ठ को बाद में घुमाएँ।
छवि से PDF JPEG, PNG, GIF या BMP फ़ाइलों को एक PDF में बदलता है, हर पृष्ठ पर एक छवि, अपलोड के क्रम में। यह कुछ भी छोटा नहीं करता, और फ़ोन पोर्ट्रेट फ़ोटो में जो घुमाव का फ़्लैग लिखते हैं उसे अनदेखा करता है। एक परीक्षण में तीन 3.2 MB की JPEG से 41.5 MB की PDF बनी, और पोर्ट्रेट के रूप में फ़्लैग की गई एक फ़ोटो लैंडस्केप पृष्ठ पर आई। अपलोड से पहले फ़ोटो छोटी करें, और आड़े पृष्ठ को बाद में PDF घुमाएँ से ठीक करें।
पूरा उदाहरण
इनपुट 4032 × 3024 पिक्सेल की तीन JPEG थीं, हर एक लगभग 3.2 MB (कुल 9.7 MB), जो फ़ोन कैमरे के एक सामान्य फ़्रेम का पिक्सेल आकार है। वे बारीक शोर वाली कृत्रिम छवियाँ थीं, इसलिए वे ज़्यादातर असली फ़ोटो से कम संपीड़ित होती हैं; नीचे का हर आकार 2026-10-04 को वर्तमान स्रोत से बने स्थानीय सर्वर के विरुद्ध एक बार चलाने का नतीजा है, कोई वादा नहीं। अनुरोध:
curl -s -o IMG_0001.pdf \
-F fileInput=@IMG_0001.jpg -F fileInput=@IMG_0002.jpg -F fileInput=@IMG_0003.jpg \
https://pdf123.xyz/api/v1/convert/img/pdf
| चरण | नतीजा |
|---|---|
| 3 JPEG, 4032 × 3024 px | कुल 9.7 MB |
| छवि से PDF | 3 पृष्ठ, 41.5 MB, हर पृष्ठ 4032 × 3024 pt |
| उस PDF पर PDF संपीड़ित करें | 39.9 MB, लगभग 4% छोटी |
| वही 3 फ़ोटो पहले लंबे किनारे पर 1600 px तक छोटी की गईं | कुल 1.7 MB |
| छोटी की गई फ़ोटो पर छवि से PDF | 3 पृष्ठ, 6.2 MB, हर पृष्ठ 1600 × 1200 pt |
| उस PDF पर PDF संपीड़ित करें | 6.2 MB, और छोटी नहीं |
आउटपुट का नाम पहली फ़ाइल के नाम पर होता है, इसलिए ऊपर का डाउनलोड IMG_0001.pdf है।
10 MB की फ़ोटो 41 MB क्यों बन जाती हैं
JPEG फ़ोटो को हानिकारक संपीड़ित ब्लॉकों के रूप में रखती है। छवि से PDF वे बाइट PDF में नहीं कॉपी करता। वह हर छवि को डिकोड करता है, उसे 8-बिट RGB में बदलता है, और कच्चे पिक्सेल को हानिरहित Flate संपीड़न के साथ रखता है। 4032 × 3024 का एक फ़्रेम 3.66 करोड़ बाइट का RGB है (4032 × 3024 × 3)। Flate ने उसे यहाँ प्रति पृष्ठ लगभग 13.8 MB तक उतारा, जो उस JPEG से अब भी चार गुना से ज़्यादा है जिससे वह आया। उन्हीं तीन फ़ोटो की नौ प्रतियों से 124.6 MB की PDF बनी।
इससे संपीड़न की पंक्तियाँ भी समझ आती हैं। संपीड़ित करें स्ट्रीम को दोबारा संपीड़ित करता है और ऑब्जेक्ट पैक करता है; वह छवियों का आकार नहीं घटाता और न उन्हें दोबारा एन्कोड करता है। पिक्सेल पहले ही Flate से संपीड़ित हैं, इसलिए हटाने को कम ही बचता है (कारण)। छोटी फ़ाइल का रास्ता है PDF बनने से पहले कम पिक्सेल।
एक दूसरी क़ीमत भी है। हर पृष्ठ अपनी छवि का आकार लेता है, एक पिक्सेल बराबर एक पॉइंट, इसलिए 4032 पिक्सेल की फ़ोटो 56 इंच चौड़ा पृष्ठ बनाती है। व्यूअर उसे विंडो में फ़िट करते हैं और प्रिंटर काग़ज़ के हिसाब से स्केल करते हैं, पर पृष्ठ बॉक्स A4 या Letter नहीं होते। फ़ॉर्म में काग़ज़ का आकार, फ़िट, रंग प्रकार या अपने आप घुमाने का कोई विकल्प नहीं है, और सर्वर API फ़ील्ड fitOption, colorType या autoRotate को नहीं पढ़ता।
पहले छोटा करें, फिर बदलें
अपलोड से पहले फ़ोटो का आकार घटाएँ। Mac पर sips -Z 1600 IMG_0001.jpg --out small1.jpg यह कर देता है। किसी भी सिस्टम पर ImageMagick के साथ:
magick IMG_0001.jpg -resize 1600x1600 -quality 85 small1.jpg
दोनों 4032 × 3024 की फ़ोटो को 1600 × 1200 बना देते हैं। इस परीक्षण में तीनों JPEG 9.7 MB से 1.7 MB हो गईं और तीन पृष्ठ की PDF 41.5 MB से 6.2 MB। Letter की शीट पर 11 इंच में 1600 पिक्सेल लगभग 145 dpi है: फ़ोटो खींचे गए फ़ॉर्म के लिए पढ़ने लायक़, छोटे अक्षरों के लिए मोटा। आकार उस सबसे छोटे पाठ से तय करें जिसे आपको पढ़ना है, केवल फ़ाइल-आकार के लक्ष्य से नहीं।
आकार दो बार मायने रखता है क्योंकि बाद के उपकरणों की भी एक ऊपरी सीमा है। एक अनुरोध की बॉडी 100 MiB तक सीमित है। ऊपर की 124.6 MB की PDF संपीड़ित करें को भेजने पर 413 (payload_too_large) के साथ अस्वीकार हुई। इसका उपाय बड़ी PDF अपलोड के अस्वीकार होने पर में है।
आड़ा पृष्ठ
कई फ़ोन पोर्ट्रेट फ़ोटो को लैंडस्केप पिक्सेल के रूप में रखते हैं और एक EXIF ओरिएंटेशन टैग जोड़ देते हैं जो व्यूअर को उसे घुमाने को कहता है। फ़ोटो ऐप आम तौर पर टैग मानते हैं। छवि से PDF उसे नहीं पढ़ता: ओरिएंटेशन 6 (90° दक्षिणावर्त घुमाओ) टैग वाली 1600 × 1200 की JPEG से लैंडस्केप 1600 × 1200 का पृष्ठ बना।
उपाय है PDF घुमाएँ: पृष्ठ संख्या डालें, यहाँ 1, और कोण 90। नतीजे में उस पृष्ठ पर /Rotate 90 सेट था, इसलिए व्यूअर उसे सीधा दिखाता है। दूसरी दिशा में टैग की गई फ़ोटो (ओरिएंटेशन 8) के लिए 270 और उलटी फ़ोटो (ओरिएंटेशन 3) के लिए 180 इस्तेमाल करें; यहाँ केवल ओरिएंटेशन 6 परखा गया। घुमाएँ पृष्ठ पर मौजूदा कोण में जोड़ने के बजाय एक निरपेक्ष कोण सेट करता है, और छवि को दोबारा एन्कोड नहीं करता। अगर पृष्ठ एक-एक करके ठीक नहीं करना चाहते, तो रूपांतरण से पहले फ़ोटो को अपने फ़ोटो ऐप में घुमाकर एक प्रति सहेज लें।
यह उपकरण क्या अस्वीकार करेगा
- HEIC और अन्य फ़ॉर्मेट। पेज
.png,.jpg,.jpeg,.gifऔर.bmpस्वीकार करता है। असली HEIC फ़ाइल पर 400,unsupported_file_typeलौटा; पहले उसे JPEG के रूप में एक्सपोर्ट करें। - जो फ़ाइल छवि नहीं है। इस एंडपॉइंट पर PDF अपलोड करने पर वही 400 लौटा, संदेश "The file is not a supported image." के साथ।
- SVG। SVG फ़ाइल पर भी वही 400 मिला।
- खोजने योग्य पाठ। फ़ोटो खींचे गए पृष्ठ का पाठ पिक्सेल ही रहता है। OCR से Markdown Markdown पाठ लौटाता है; वह इस PDF में पाठ परत नहीं जोड़ता (यह कैसे काम करता है)।
- पारदर्शिता। छवियाँ RGB में बदली जाती हैं और अल्फ़ा चैनल छोड़ दिया जाता है।
भेजने से पहले जाँचें
PDF खोलें और पृष्ठों को फ़ोटो से क्रम में गिनकर मिलाएँ। पृष्ठ का क्रम अपलोड का क्रम है; एक परीक्षण में लैंडस्केप से पहले पोर्ट्रेट PNG अपलोड करने पर पोर्ट्रेट पृष्ठ पहले आया। फिर अटैच करने से पहले फ़ाइल का आकार देखें।