সবচেয়ে ছোট সম্ভাব্য বৈধ পিডিএফ কী?


139

সহজ কৌতূহলের বাইরে, ক্ষুদ্রতম জিআইএফটি দেখে , সবচেয়ে ছোট সম্ভাব্য বৈধ পিডিএফ ফাইলটি কী?


আপনি কীভাবে এটি তৈরি করবেন তার উপর নির্ভর করে। সম্ভাবনা হ'ল আপনি কোনও অ্যাপ্লিকেশন কী উত্পন্ন করবে তার চেয়ে আপনি নিজের (একটি সম্পাদকে) আরও একটি ছোট লিখতে সক্ষম হবেন।
devnull

ভূস্ট্রিপ্ট বা পিএস 2 পিডিএফ-তে "শোপেজ" (ডাব্লু / ও কোট) খাওয়ানোর চেষ্টা করুন।
ডিভনুল

উত্তর:


194

এটি একটি আকর্ষণীয় সমস্যা। বইটি হাতে নিয়ে আপনি এটি দিয়ে শুরু করতে পারেন:

%PDF-1.0
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj 2 0 obj<</Type/Pages/Kids[3 0 R]/Count 1>>endobj 3 0 obj<</Type/Page/MediaBox[0 0 3 3]>>endobj
xref
0 4
0000000000 65535 f
0000000010 00000 n
0000000053 00000 n
0000000102 00000 n
trailer<</Size 4/Root 1 0 R>>
startxref
149
%EOF

যা পিডিএফ আনন্দের 291 বাইট। অ্যাক্রোব্যাট এটি খোলে, তবে এটি কিছুটা অভিযোগ করে। এটিতে একটি পৃষ্ঠা রয়েছে এবং এটি 3/72 "বর্গক্ষেত্র, অনুমিত দ্বারা অনুমোদিত সর্বনিম্ন।

যাইহোক, অ্যাক্রোব্যাট এক্স এমনকি ক্রস রেফারেন্স টেবিলটি নিয়ে আর বিরক্ত করে না, তাই আমরা এটিকে নিতে পারি:

%PDF-1.0
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj 2 0 obj<</Type/Pages/Kids[3 0 R]/Count 1>>endobj 3 0 obj<</Type/Page/MediaBox[0 0 3 3]>>endobj
trailer<</Size 4/Root 1 0 R>>

অ্যাক্রোব্যাট অভিযোগ করলেও তা খুলে দেয়। এখন আমরা 178 বাইটে আছি। দেখা যাচ্ছে যে ট্রেলারটিতে আপনার সেই আকার / আকারের দরকার নেই। এখন আমরা 172 এ আছি:

%PDF-1.0
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj 2 0 obj<</Type/Pages/Kids[3 0 R]/Count 1>>endobj 3 0 obj<</Type/Page/MediaBox[0 0 3 3]>>endobj
trailer<</Root 1 0 R>>

দেখা যাচ্ছে যে আপনার অভিধানগুলিতে আপনার সেই সমস্ত বেমানান / টাইপ উপাদানগুলির দরকার নেই:

%PDF-1.0
1 0 obj<</Pages 2 0 R>>endobj 2 0 obj<</Kids[3 0 R]/Count 1>>endobj 3 0 obj<</MediaBox[0 0 3 3]>>endobj
trailer<</Root 1 0 R>>

এখন আমরা 138 বাইটে আছি।

এটি আরও প্রমাণিত হয় যে যখন অনুমানটি "অপ্রত্যক্ষ রেফারেন্স হতে হবে" এবং / গণনার প্রয়োজন হয়, এবং শিরোনামটি "অবশ্যই" পিডিএফ -১.০ হতে হবে, তারা শিথিল পরামর্শ দিচ্ছে। এটি আমি এটিকে তৈরি করতে পারি এবং এটি অ্যাক্রোব্যাট এক্স-তে এটি খোলার উপযুক্ত:

%PDF-1.
trailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>

70 বাইট।

এখন, আমার সম্পাদক উইন্ডোজ নিউলাইন শৃঙ্খলা ব্যবহার করে, তবে অ্যাক্রোব্যাট উইন্ডোজ, ম্যাক বা ইউনিক্স কনভেনশনগুলি গ্রহণ করে, তাই একটি হেক্স সম্পাদক ব্যবহার করে, আমি \ r \ n কে \ আর এর সাথে প্রতিস্থাপন করে এবং শেষের নিউলাইনটি পুরোপুরি সরিয়ে ফেললাম, যা আমাকে 67 বাইট দিয়ে ছেড়েছে

25 50 44 46 2D 31 2E 0D 74 72 61 69 6C 65 72 3C 
3C 2F 52 6F 6F 74 3C 3C 2F 50 61 67 65 73 3C 3C 
2F 4B 69 64 73 5B 3C 3C 2F 4D 65 64 69 61 42 6F 
78 5B 30 20 30 20 33 20 33 5D 3E 3E 5D 3E 3E 3E 
3E 3E 3E 

আমি শেষ প্রান্তের অভিধানটি (>>) কেড়ে নেওয়ার চেষ্টা করেছি, তবে অ্যাক্রোব্যাটটি এটির নেই। গুগল ক্রোমে অন্তর্নির্মিত পিডিএফ পঠন (ফক্সআইটি) এটি খুলবে না।

পোস্টস্ক্রিপ্ট হিসাবে (এইচএ! দেখুন আমি সেখানে কী করেছি?), আপনি যদি অ্যাক্রোব্যাট ফাইলটি "মেরামত" করতে সম্মত হন তবে এটি 3550 বাইট পর্যন্ত বিস্তৃত হয়, এর বেশিরভাগটি alচ্ছিক মেটাডেটা, তবে এটি বেশ কয়েকটি স্পষ্ট স্পেস লঙ্ঘনের পিছনে ছেড়ে যায়।


25
এটি আরও প্রমাণিত হয় যে যখন অনুমানটি "অপ্রত্যক্ষ রেফারেন্স হতে হবে" এবং / গণনার প্রয়োজন হয়, এবং শিরোনামটি "অবশ্যই" পিডিএফ -১.০ হতে হবে, তারা শিথিল পরামর্শ দিচ্ছে। না, সেগুলি আলগা পরামর্শ নয়, সেগুলি বৈধতার জন্য প্রয়োজনীয়তা। এমনকি কিছু পিডিএফ দর্শক তাদের প্রয়োগ না করে, তাদের অনুসরণ না করে অবৈধতা বোঝায় এবং ওপি একটি বৈধ পিডিএফ চেয়েছিল।
এমকেএল

23
গৃহীত হয়েছে কারণ উত্তরটি দিয়ে শুরু হয় minimum allowed by the specএবং তারপরে উপরের ওপারে যায়। দুর্দান্ত উত্তর, ধন্যবাদ! :)
জাল

প্লিট, এটি একটি দুর্দান্ত উত্তর। এখন, "হ্যালো ওয়ার্ল্ড" এর মতো পাঠ্যের একটি লাইন সহ ক্ষুদ্রতম বৈধ পিডিএফ সম্পর্কে কীভাবে তা। আমি ভেবেছিলাম এটি {স্ট্রিম বিটি ("হ্যালো ওয়ার্ল্ড") ইটি শেষ প্রবাহ যোগ করার মতো সহজ হবে} তবে এখনও পর্যন্ত অ্যাক্রোব্যাটকে খুশি করতে পারেনি।
নিওনজিয়ন

1
এটাই জল্পনা। পিডিএফ-তে বস্তুর গ্রাফের চক্র রয়েছে।
প্লিন্থ

1
@towi আপনার বেস 64-এনকোড সংস্করণটি এতে \nএমবেড হয়েছে এবং যখন বেস64-ডিকোড করা সঠিক ফাইলের সামগ্রী দেয় না।
ক্রিস্টোফার শুল্টজ

19

হ্যালো ওয়ার্ল্ডের উদাহরণটি খোলার জন্য আমি পাই না।

পাঠ্য সামগ্রী সহ একটি ছোট-ইশ ফাইলের জন্য:

%PDF-1.2 
9 0 obj
<<
>>
stream
BT/ 9 Tf(Test)' ET
endstream
endobj
4 0 obj
<<
/Type /Page
/Parent 5 0 R
/Contents 9 0 R
>>
endobj
5 0 obj
<<
/Kids [4 0 R ]
/Count 1
/Type /Pages
/MediaBox [ 0 0 99 9 ]
>>
endobj
3 0 obj
<<
/Pages 5 0 R
/Type /Catalog
>>
endobj
trailer
<<
/Root 3 0 R
>>
%%EOF

2
এটি কাজ করবে না, পাঠ্যটি প্রদর্শিত হওয়ার জন্য আপনাকে একটি ফন্টের সংস্থান নির্ধারণ করতে হবে এবং পৃষ্ঠার সামগ্রীর ভিতরে এটি নির্বাচন করতে হবে।
yms

2
এই ফাইলটি ম্যাক ওএস এক্স এল ক্যাপিটানের অধীনে খোলে যেখানে পিডিএফ ১.০ সহ সর্বাধিক রেট দেওয়া উত্তর দেয় নি।
ডেভি

12
এছাড়াও ক্রোম, ডাটা অধীনে প্রর্দশিত: আবেদন / পিডিএফ; করুন Base64-, JVBERi0xLjIgCjkgMCBvYmoKPDwKPj4Kc3RyZWFtCkJULyA5IFRmKFRlc3QpJyBFVAplbmRzdHJlYW0KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCA1IDAgUgovQ29udGVudHMgOSAwIFIKPj4KZW5kb2JqCjUgMCBvYmoKPDwKL0tpZHMgWzQgMCBSIF0KL0NvdW50IDEKL1R5cGUgL1BhZ2VzCi9NZWRpYUJveCBbIDAgMCA5OSA5IF0KPj4KZW5kb2JqCjMgMCBvYmoKPDwKL1BhZ2VzIDUgMCBSCi9UeXBlIC9DYXRhbG9nCj4 + + CmVuZG9iagp0cmFpbGVyCjw8Ci9Sb290IDMgMCBSCj4 + + CiUlRU9G
লুক Rehmann

8

আমি ভেবেছিলাম আমি একটি ক্ষুদ্রতম পিডিএফ তৈরি করব যা "হ্যালো ওয়ার্ল্ড" প্রদর্শন করে। পাঠ্যটি নীচের বাম কোণে রয়েছে। 9-পয়েন্টের ফন্টের জন্য দুঃখিত, যে কোনও বড়র জন্য অতিরিক্ত বাইট লাগবে :)

অ্যাডোব রিডার এক্স এর জন্য 172 বাইট (যদি কেবল লাইনফিড-শুধুমাত্র নতুন লাইনের সাথে সংরক্ষণ করা হয় এবং কোনও পেছনের নিউলাইন বা নাল-বাইট নেই):

%PDF-1.
1 0 obj<</Kids[<</Parent 1 0 R/Resources<<>>/Contents 2 0 R>>]>>endobj 2 0 obj<<>>stream
BT/ 9 Tf(Hello World)' ET
endstream
endobj trailer<</Root<</Pages 1 0 R>>>>

Chrome এর অন্তর্নির্মিত পিডিএফ দর্শকের জন্য 120 বাইট:

%PDF 1 0 obj<</Pages<</Kids[<</Contents<<>>stream
BT 9 Tf(Hello World)' ET endstream>>]>>>>endobj trailer<</Root 1 0 R>>

এটি ক্রোমে সহজেই দেখতে, এই ইউআরআইটিকে অ্যাড্রেস বারে পেস্ট করুন (এসও আমাকে এর সাথে লিঙ্ক করতে দেয় না, এবং এটি অন্যান্য ব্রাউজারগুলিতে মোটেই কাজ করবে না):

data:application/pdf,%25PDF%201%200%20obj%3C%3C%2FPages%3C%3C%2FKids%5B%3C%3C%2FContents%3C%3C%3E%3Estream%0ABT%209%20Tf(Hello%20World)'%20ET%20endstream%3E%3E%5D%3E%3E%3E%3Eendobj%20trailer%3C%3C%2FRoot%201%200%20R%3E%3E

2
খুব ছোটো. ;) বৈধ নয়, যদিও অনুমান অনুসারে।
এমকেএল

8
আমার জন্য ক্রোমের অধীনে খুলবে না।
লুক রেহমান

0

জাভাতে, এটি ব্যবহার করুন:

 private static String samplepdf = "255044462D312E0D747261696C65723C3C2F526F6F743C3C2F50616765733C3C2F4B6964735B3C3C2F4D65646961426F785B302030203320335D3E3E5D3E3E3E3E3E3E";

এবং তারপর

byte[] bytes = hexStringToByteArray(samplepdf);

...

public byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                + Character.digit(s.charAt(i + 1), 16));
    }
    return data;
}

ওপি সর্বনিম্নতম বৈধ পিডিএফ ফাইলের জন্য জিজ্ঞাসা করেছে ; আপনার অনুমান অনুযায়ী বৈধ নয়।
এমকেএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.