दस्तावेज़ · PDF टूलकिट
PDF फ़ाइल के अंदर: हेडर, ऑब्जेक्ट, Xref तालिका और ट्रेलर की व्याख्या
· पेजभूमि
PDF फ़ाइल-संरचना PDF-lib
टेक्स्ट एडिटर में PDF खोलें और आपको एक हेडर, क्रमांकित ऑब्जेक्ट, एक क्रॉस-रेफरेंस टेबल और एक ट्रेलर दिखाई देगा। यह पोस्ट बताती है कि प्रत्येक भाग क्या करता है, वृद्धिशील अद्यतन और एन्क्रिप्शन कैसे फिट होते हैं, और यह संरचना स्थानीय पुनर्लेखन को संभव क्यों बनाती है।
बाइनरी-दिखने वाले PDF बाइट्स को पुस्तकालयों द्वारा पार्स किया जाता है; एक निश्चित हेडर उदाहरण का दावा नहीं किया गया है
एक मनमाना PDF को पाठ के रूप में खोलने से संपीड़ित या बाइनरी डेटा के साथ मिश्रित पठनीय टुकड़े सामने आ सकते हैं, लेकिन टूलकिट किसी पाठ एडिटर के माध्यम से फ़ाइलों का निरीक्षण नहीं करता है। यह चयनित बाइट्स को PDF-लिब या pdf.js में भेजता है, विकृत और एन्क्रिप्टेड-दस्तावेज़ त्रुटियों को पकड़ता है, और उन पुस्तकालयों द्वारा उजागर किए गए पार्स किए गए दस्तावेज़ इंटरफ़ेस के साथ काम करता है।
रूपरेखा एक `%PDF-1.7` उदाहरण को ठीक करती है, फिर भी स्वीकृत फ़ाइलें अन्य मान्य फॉर्म ले सकती हैं और स्रोत एक संस्करण हेडर का वादा नहीं करता है। उपयोगी तथ्य व्यवहारात्मक है: हस्ताक्षर जांच और पार्सर्स एक PDF की पहचान करते हैं, फिर संचालन पूरे बाइट अनुक्रम को संयोजित पाठ के रूप में मानने के बजाय पेजों के बारे में तर्क देता है।
वस्तुएँ और संदर्भ - शब्दकोश, धाराएँ, सरणियाँ और अप्रत्यक्ष संदर्भ जो उन्हें एक ग्राफ़ में जोड़ते हैं
कार्यान्वयन अपने APआई के माध्यम से जुड़ी हुई संरचना को प्रदर्शित करता है। एक दस्तावेज़ पेजों को उजागर करता है; पेज आयाम और घुमाव को उजागर करते हैं; किसी पेज की प्रतिलिपि बनाने में उसकी दृश्य सामग्री के लिए आवश्यक संसाधन मौजूद होते हैं। इमेज असेंबली पेज बनाती है और इमेज ऑब्जेक्ट को एक बार एम्बेड करती है, जबकि वॉटरमार्किंग गणना की गई स्थिति में पुन: प्रयोज्य संसाधनों को खींचती है।
यह एप्लिकेशन कोड में प्रत्येक शब्दकोश, स्ट्रीम, सरणी या अप्रत्यक्ष संदर्भ को मैन्युअल रूप से नहीं चलाता है। PDF-लिब उस निचले स्तर की व्याख्या का मालिक है। ऑब्जेक्ट ग्राफ़ के रूप में प्रारूप का वर्णन करना पेज-कॉपी व्यवहार के अनुरूप है, लेकिन यह आलेख टूलकिट को सामान्य ऑब्जेक्ट इंस्पेक्टर लागू करने या उपयोगकर्ताओं के लिए कच्चे संदर्भों को उजागर करने का दिखावा करने से बचता है।
क्रॉस-रेफरेंस कार्यान्वयन विवरण PDF-लिब और pdf.js को सौंपे गए हैं
इस परियोजना में क्रॉस-रेफरेंस टेबल, स्ट्रीम और ट्रेलर लाइब्रेरी संबंधी चिंताएं हैं। एप्लिकेशन स्रोत `PDFDocument.load` को कॉल करता है, दस्तावेज़ बनाता है, पेजों की प्रतिलिपि बनाता है, और बाइट्स सहेजता है। यह दस्तावेज़ नहीं करता है कि क्या प्रत्येक इनपुट एक क्लासिक तालिका या किसी अन्य प्रतिनिधित्व का उपयोग करता है, न ही यह पाठकों पर भरोसा करने के लिए बाइट-ऑफ़सेट एल्गोरिदम प्रकाशित करता है।
वह अमूर्तन मूल्यवान है. ऑपरेशन, एप्लिकेशन कोड को ऑब्जेक्ट को मैन्युअल रूप से पुनः क्रमांकित किए बिना वैध इनपुट को मर्ज कर सकता है। आउटपुट वह है जो लाइब्रेरी द्वारा उत्पादित सही क्रमबद्धता है। सटीक ऑफसेट या ट्रेलर श्रृंखला के बारे में फोरेंसिक प्रश्नों के लिए, उच्च-स्तरीय पेज टूल से विवरण का अनुमान लगाने के बजाय एक समर्पित पार्सर और प्रासंगिक विनिर्देश का उपयोग करें।
पेज ट्री और सामग्री स्ट्रीम - दस्तावेज़ कैटलॉग से लेकर एक ही पेज पर ड्राइंग निर्देशों तक
पेज-स्तरीय संचालन कैटलॉग-टू-पेज अवधारणा को उसके पूर्ण व्याकरण को उजागर किए बिना प्रकट करता है। मर्ज प्रत्येक स्रोत पेज अनुक्रमणिका प्राप्त करता है और उन पेजों को एक नए दस्तावेज़ में कॉपी करता है। चयनित समूहों की प्रतियों को विभाजित करें। रीऑर्डर एक स्पष्ट ऑर्डर सरणी की आपूर्ति करता है। रोटेट एक पेज को पुनः प्राप्त करता है और उसके सामान्यीकृत कोण को अद्यतन करता है। वॉटरमार्क चयनित पेज सतहों पर आ जाता है।
उन संरचनात्मक परिचालनों के दौरान दृश्यमान सामग्री धाराओं को व्यवस्थित नहीं किया जाता है, जो चयन योग्य पाठ और वेक्टर गुणवत्ता को संरक्षित करता है। PDF-टू-इमेज जानबूझकर अलग है: pdf.js पेज को कैनवास पिक्सल में प्रस्तुत करता है, जिसके बाद टेक्स्ट टेक्स्ट नहीं रह जाता है। यह समझना कि कौन सा पथ चला, PDF आंतरिक के सामान्यीकृत आरेख को याद रखने से अधिक मायने रखता है।
यह टूलकिट वृद्धिशील अपडेट का वादा करने के बजाय ताज़ा आउटपुट बचाता है
रूपरेखा वृद्धिशील अद्यतनों पर चर्चा करती है, लेकिन ToolAcre के समर्थित संपादन ताज़ा आउटपुट फ़ाइलों को सहेजते हैं। स्रोत किसी ऐसे मोड की पेशकश नहीं करता है जो पूर्व बाइट संशोधनों को संरक्षित करते हुए एक अद्यतन जोड़ता है, न ही यह वृद्धिशील-इतिहास प्रबंधन के माध्यम से पहले से संग्रहीत सामग्री को सुरक्षित रूप से हटाने का दावा करता है।
यह गोपनीयता और हस्ताक्षर के लिए मायने रखता है। एक ताज़ा पेज-कॉपी आउटपुट कई दस्तावेज़-स्तरीय संरचनाओं को गिरा देता है और डिजिटल हस्ताक्षरों को अमान्य कर देता है, लेकिन इसे समर्पित साक्ष्य के बिना फोरेंसिक सैनिटाइज़र के रूप में विज्ञापित नहीं किया जाना चाहिए। स्रोत और आउटपुट भूमिकाएँ स्पष्ट रखें, और जब पूर्व संशोधनों या हटाई गई सामग्री का मूल्यांकन किया जाना हो तो विशेषज्ञ टूलों का उपयोग करें।
एन्क्रिप्टेड फ़ाइलें - पासवर्ड और अनुमति फ़्लैग कैसे बदलते हैं कि कोई टूल क्या खोल सकता है, और वे पेज संचालन से एक अलग समस्या क्यों हैं
एन्क्रिप्टेड या पासवर्ड-संरक्षित इनपुट सामान्य पेज संपादन से एक अलग सीमा हैं। नियंत्रक एक संरक्षित-दस्तावेज़ त्रुटि की रिपोर्ट करता है और रुक जाता है; टूलकिट पासवर्ड नहीं मांगता, अनुमतियों को बायपास नहीं करता, या एक्सेस नियंत्रण नहीं हटाता। उपयोगकर्ताओं को इन परिचालनों का उपयोग करने से पहले कहीं और एक अधिकृत असुरक्षित प्रतिलिपि प्रस्तुत करनी होगी।
इनकार भ्रामक आंशिक परिणाम को भी रोकता है। जब कोई उपयोगकर्ता पूर्ण अनुबंध की अपेक्षा करता है तो खाली या विकृत आउटपुट खतरनाक होगा। कार्यान्वयन एन्क्रिप्शन को स्पष्ट रूप से पकड़ता है, जबकि कॉन्फ़िगरेशन सीमा को दोहराता है। यह PDF क्रिप्टोग्राफी या अनुमति शब्दार्थ पर सामान्य ट्यूटोरियल पेश किए बिना उत्पाद व्यवहार का वर्णन करने के लिए पर्याप्त है।
संपीड़न, फ़ॉन्ट और रंग इस कार्यान्वयन-स्तरीय स्पष्टीकरण से बाहर रहते हैं
संपीड़न फ़िल्टर, फ़ॉन्ट एन्कोडिंग और रंग स्थान PDF निष्ठा के लिए महत्वपूर्ण रहते हैं, लेकिन एप्लिकेशन कोड उन्हें पुस्तकालयों और स्रोत दस्तावेज़ों को सौंप देता है। यह व्याख्याता फ़िल्टर एल्गोरिदम या मानक-फ़ॉन्ट इतिहास की गणना नहीं करता है। इसके बजाय यह परीक्षण और कॉन्फ़िगरेशन द्वारा सत्यापित दृश्यमान परिणामों को रिकॉर्ड करता है।
पेज कॉपी करने से पेज का स्वरूप और चयन योग्य टेक्स्ट बरकरार रहता है, जबकि रैस्टर आउटपुट टेक्स्ट परत खो देता है। टेक्स्ट वॉटरमार्किंग अंतर्निहित लैटिन एन्कोडिंग तक सीमित है। छवि तैयारी असमर्थित ब्राउज़र छवि प्रारूपों को PNG के रूप में पुनः एन्कोड कर सकती है। ये ठोस सीमाएँ उप-प्रणालियों के व्यापक दौरे की तुलना में अधिक व्यावहारिक हैं जिन्हें टूलकिट न तो उजागर करता है और न ही मान्य करता है।
टेकअवे - पेज-स्तरीय संचालन इस संरचना में संपादन हैं, और PDF टूलकिट उन्हें आपके ब्राउज़र में पार्सिंग और पुनः लिखकर निष्पादित करता है
ToolAcre लाइब्रेरी APआई के माध्यम से पार्स किए गए दस्तावेज़ संरचनाओं को संपादित करता है और ताज़ा फ़ाइलों को क्रमबद्ध करता है। मर्ज, स्प्लिट, रीऑर्डर, रोटेट और वॉटरमार्क इसलिए ऑपरेशन-विशिष्ट संरक्षण नियमों के साथ संरचनात्मक संचालन हैं, बाइट संयोजन नहीं। PDF-टू-इमेज एक रेंडरिंग ऑपरेशन है और इसका एक अलग निष्ठा परिणाम है।
काम स्थानीय स्तर पर होता है, ज्यादातर एक समर्पित कार्यकर्ता में, ब्लॉब डाउनलोड उपयोगकर्ता को लौटा दिया जाता है। व्यवहार की भविष्यवाणी करने के लिए इस मॉडल का उपयोग करें: कॉपी किए गए पेज उपस्थिति बनाए रखते हैं, नए दस्तावेज़ असमर्थित दस्तावेज़-स्तरीय सुविधाएँ और हस्ताक्षर खो देते हैं, एन्क्रिप्टेड स्रोत बंद हो जाते हैं, और रेखापुंज पेज चित्र बन जाते हैं। गहरे प्रारूप के दावों के लिए विशिष्टताओं या समर्पित निरीक्षण टूलों की आवश्यकता होती है। किसी अप्रत्याशित परिणाम को डीबग करते समय, पहले ऑपरेशन को प्रतिलिपि बनाने, मेटाडेटा समायोजन, ड्राइंग, या रैस्टराइज़ेशन के रूप में वर्गीकृत करें; यह संभावित हानि तंत्र को तुरंत सीमित कर देता है। फिर इसे सबसे छोटी गैर-संवेदनशील फ़ाइल के साथ पुन: पेश करें जो अभी भी समस्या दिखाती है, यदि आवश्यक हो तो बाइट-स्तरीय जांच के लिए इनपुट और आउटपुट दोनों को संरक्षित करती है।