सबसे छोटे संभव जीआईएफ की तरह , सबसे छोटे संभव रिक्त-पृष्ठ पीडीएफ को हाथ से काम करने की आवश्यकता है, क्योंकि यह इतना छोटा है कि मेटाडेटा के अनावश्यक-लेकिन-हानिरहित बिट्स फ़ाइल आकार का एक महत्वपूर्ण हिस्सा बन जाते हैं, और संपीड़न वास्तव में चीजों को बड़ा बनाते हैं । यह भी पीडीएफ विनिर्देश में नियमों पर ध्यान देने की आवश्यकता है कि फ़ाइल संरचना के बिट्स क्या हैं और इसकी आवश्यकता नहीं है। (क्या आप जानते हैं कि पेज ऑब्जेक्ट में एक /Resources
शब्दकोश होना चाहिए , भले ही वह खाली हो, लेकिन एक स्ट्रीम को शामिल करने की आवश्यकता नहीं/Contents
है?)
यदि आप पीडीएफ 1.5 ऑब्जेक्ट और क्रॉस-रेफरेंस स्ट्रीम का उपयोग नहीं करते हैं (जिसका यह फायदा है कि फ़ाइल पूरी तरह से प्रिंट करने योग्य ASCII हो सकती है) मेरा मानना है कि सबसे अच्छा आप कर सकते हैं 317 बाइट्स। यदि कॉपी और पेस्ट किया जाता है, तो ध्यान दें कि क्रॉस-रेफरेंस टेबल एंट्रीज (बीच की रेखाएं ) 0 4
और इन चारों पर ट्रेलिंग स्पेस होने की जरूरत है trailer<<...
, और इसके बाद कोई फाइनल न्यूलाइन नहीं होनी चाहिए %%EOF
।
%PDF-1.4
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
3 0 obj<</Type/Page/MediaBox[0 0 612 792]/Parent 2 0 R/Resources<<>>>>endobj
xref
0 4
0000000000 65535 f
0000000009 00000 n
0000000052 00000 n
0000000101 00000 n
trailer<</Size 4/Root 1 0 R>>
startxref
178
%%EOF
मैन्युअल रूप से तैयार की गई v1.5 क्रॉस-रेफरेंस स्ट्रीम के साथ क्रॉस-रेफरेंस टेबल को बदलना फ़ाइल को थोड़ा छोटा बनाता है, इसकी कीमत अब प्रिंट करने योग्य ASCII: 294 बाइट्स नहीं है। (पठनीयता के लिए, इसका उल्लेख करने में सक्षम होने के लिए बिल्कुल भी नहीं, नीचे xref स्ट्रीम को हेक्सडंप किया गया है, लेकिन यह इसके स्ट्रीम डिक्शनरी में परिलक्षित नहीं है । एक वैध पीडीएफ को पुनर्प्राप्त करने के लिए आपको या तो हेक्सपंप को बदलना होगा। इसी तरह के बाइनरी बाइट्स, या 328 बाइट्स वाली फ़ाइल /Length 15
को बदलने /Length 30/Filter/ASCIIHexDecode
और स्वीकार करने के लिए ।)
%PDF-1.5
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
3 0 obj<</Type/Page/MediaBox[0 0 612 792]/Parent 2 0 R/Resources<<>>>>endobj
4 0 obj<</Type/XRef/Size 5/W[1 1 1]/Root 1 0 R/Length 15>>stream
0000ff01090001340001650001b200endstream endobj
startxref
178
%%EOF
मैंने एक ऑब्जेक्ट स्ट्रीम में 3 के माध्यम से 1 वस्तुओं को लपेटने के साथ भी प्रयोग किया, लेकिन इससे अधिक ओवरहेड वापस हो जाता है, जबकि स्ट्रीम संकुचित हो जाती है।
Xref स्ट्रीम का एक संभावित वैकल्पिक सूत्रीकरण है
4 0 obj<</Type/XRef/Size 4/W[0 1 0]/Index[1 4]/Root 1 0 R/Length 4>>stream
091365b2endstream endobj
अफसोस की बात है कि वास्तविक स्ट्रीम डेटा की लंबाई में पर्याप्त बचत के बावजूद, अतिरिक्त /Index[1 4]
बचत के सभी बाइट को खा जाता है। इसके अलावा, यह मेरे लिए अस्पष्ट है कि क्या आपको फ़ाइल से पूरी तरह से ऑब्जेक्ट 0 छोड़ने की अनुमति है। (यह भी मेरे लिए स्पष्ट नहीं है कि क्या वस्तु 0 पीढ़ी संख्या होनी चाहिए -1। तो है कि है की आवश्यकता नहीं, आप वास्तव में के साथ और अधिक बाइट्स बचाने
4 0 obj<</Type/XRef/Size 5/W[1 1 0]/Root 1 0 R/Length 10>>stream
000001090134016501b2endstream endobj
।)
पेपर का आकार बदलने 612 792
के लिए, पोस्टस्क्रिप्ट अंक (72 पोस्टस्क्रिप्ट अंक = 1 यूएस इंच या 25.4 मिलीमीटर) में व्यक्त की गई उपयुक्त चौड़ाई और ऊंचाई के साथ बदलें । उदाहरण के लिए, 595 842
ए 4 के लिए। आप इसे शेल स्क्रिप्ट में एम्बेड कर सकते हैं, जो कुछ भी कागज़ के आकार की रिक्त पीडीएफ को खाली करता है; केवल मुश्किल हिस्सा यह सुनिश्चित कर रहा होगा कि startxref
ऑब्जेक्ट 3 का आकार बदल जाने पर भी ऑफसेट सटीक रहे।