दस्तावेज़ · PDF टूलकिट
कैसे एक ब्राउज़र टैब अपलोड किए बिना PDF को पढ़ता और पुनः लिखता है
· यह काम किस प्रकार करता है
PDF गोपनीयता वेब-कार्यकर्ता
'आपके ब्राउज़र में चलता है' एक दावा है जिसे आप समझ और परख सकते हैं। यह पोस्ट वेब वर्कर के माध्यम से फ़ाइल पिकर से मेमोरी में PDF का अनुसरण करता है, और एक डाउनलोड के रूप में वापस आता है, जिसमें बताया गया है कि प्रत्येक चरण क्या करता है और कोई सर्वर क्यों शामिल नहीं है।
फ़ाइल पिकर कोई अपलोड नहीं है - फ़ाइल चुनते समय भ्रम का क्षण इसे भेजने जैसा लगता है
एक फ़ाइल चयनकर्ता एक अपलोड नियंत्रण जैसा होता है क्योंकि कई साइटें चुनी हुई फ़ाइल को तुरंत भेज देती हैं। अकेले चयन के लिए उस स्थानांतरण की आवश्यकता नहीं है। इस टूलकिट में, ब्राउज़र उपयोगकर्ता द्वारा चयनित फ़ाइल ऑब्जेक्ट तक पेज पहुंच प्रदान करता है, और नियंत्रक टैब मेमोरी में PDF बाइट्स को पढ़ने से पहले इसके प्रकार और आकार को मान्य करता है।
सीमा देखने योग्य है: दस्तावेज़ चुनने से स्थानीय इंटरफ़ेस स्थिति बदल जाती है, उसका नाम, आकार और पेज संख्या प्रदर्शित होती है, और ऑपरेशन सक्षम हो जाता है। यह फ़ाइल को एप्लिकेशन एंडपॉइंट पर पोस्ट नहीं करता है। PDF कैप 50 MB है और इमेज कैप 30 MB है, जो महंगी प्रोसेसिंग शुरू होने से पहले लागू होती है।
डिस्क से मेमोरी तक - फ़ाइल API पेज को एक बाइट सरणी कैसे सौंपती है जिसे साइट का अपना JavaScript पढ़ सकता है
PDF के लिए, `arrayBuffer()` बाइट्स की आपूर्ति करता है और `Uint8Array` उन्हें कार्यकर्ता कॉल के लिए रखता है। अनावश्यक दूसरी बार पढ़ने से बचने के लिए छवि बैचों को अलग तरीके से नियंत्रित किया जाता है: कच्ची फ़ाइल ऑब्जेक्ट को ब्राउज़र छवि तैयार होने तक बनाए रखा जाता है। ये वर्तमान ब्राउज़र संदर्भ के अंदर मेमोरी ऑपरेशन हैं, रिमोट स्टोरेज या खाता इतिहास नहीं।
पहले PDF का निरीक्षण कार्यकर्ता में `info` कॉल के माध्यम से किया जाता है ताकि पेज संख्या निर्धारित होने पर एक बड़ा दस्तावेज़ पेंटिंग को अवरुद्ध न करे। टैब अस्थायी रूप से स्रोत बाइट्स, पार्सर स्थिति, तैयार संपत्ति और अंतिम आउटपुट को एक साथ रख सकता है। साफ़ करना या बंद करना मायने रखता है क्योंकि स्थानीय प्रसंस्करण अभी भी वास्तविक डिवाइस संसाधनों का उपभोग करता है।
अधिकांश PDF रूपांतरण टूलकिट वर्कर का उपयोग करते हैं; PDF पार्सिंग और कैनवास एन्कोडिंग का एक अलग विभाजन है
समर्पित मॉड्यूल वर्कर के माध्यम से मर्ज, स्प्लिट, एक्सट्रैक्ट, डिलीट, रीऑर्डर, रोटेट, वॉटरमार्क और फाइनल इमेज-टू-PDF असेंबली कॉल PDF-लिब। प्रगति और रद्दीकरण संदेश उस सीमा को पार कर जाते हैं जबकि कम्प्यूटेशनल कार्य प्राथमिक इंटरफ़ेस थ्रेड से दूर रहता है। फ़ाइलें साफ़ करने से कचरा संग्रहण की प्रतीक्षा करने के बजाय कर्मचारी को नौकरी से हटा दिया जाता है।
PDF-टू-इमेज महत्वपूर्ण अपवाद है। pdf.js पार्सिंग के लिए अपने स्वयं के वर्कर का उपयोग करता है, लेकिन ब्राउज़र कैनवास एन्कोडिंग मुख्य थ्रेड पर बनी रहनी चाहिए। रेंडरर पेजों के बीच उत्पन्न होता है ताकि नियंत्रण और प्रगति दोबारा हो सके। यह कहना कि प्रत्येक परिवर्तन पूरी तरह से एक कार्यकर्ता में चलता है, भेजे गए कार्यान्वयन के विपरीत होगा।
पार्सिंग और लेखन स्थानीय चरण हैं, लेकिन छवि तैयारी और कैनवास एन्कोडिंग मुख्य थ्रेड पर चल सकती है
सामान्य पाइपलाइन को पढ़ा जाता है, व्याख्या की जाती है, रूपांतरित किया जाता है और एनकोड किया जाता है, लेकिन प्रत्येक ऑपरेशन अपनी स्वयं की ठोस मशीनरी चुनता है। पेज-कॉपी ऑपरेशन PDF-लिब को एक नया दस्तावेज़ बनाने के लिए कहते हैं। रोटेशन एडिटिव पेज मेटाडेटा को बदलता है। वॉटरमार्क चित्रों को जोड़ते हैं। PDF-टू-इमेज पेजों को प्रस्तुत करता है, जबकि इमेज-टू-PDF वर्कर असेंबली से पहले ब्राउज़र-डिकोडेड छवियां तैयार करता है।
वे भेद निष्ठा को प्रभावित करते हैं। पेजों की प्रतिलिपि बनाने से चयन योग्य सामग्री बरकरार रहती है; उन्हें PNG या JPEG पर प्रस्तुत करने से पेज पिक्सेल में बदल जाता है और इसकी टेक्स्ट परत खो जाती है। गैर-PNG/JPEG छवियों को PDF असेंबली से पहले PNG के रूप में डिकोड और पुनः एन्कोड किया जा सकता है। "स्थानीय" डेटा संचलन का वर्णन करता है, न कि एक सार्वभौमिक परिवर्तन एल्गोरिथ्म का।
डाउनलोड एक स्थानीय ऑब्जेक्ट है - कैसे एक ब्लॉब और एक ऑब्जेक्ट URL आपको एक फ़ाइल देते हैं जो कभी किसी सर्वर पर मौजूद नहीं थी
प्रत्येक ऑपरेशन बाइट्स या ZIP लौटाता है जिसे इंटरफ़ेस उचित मीडिया प्रकार के साथ ब्लॉब में लपेटता है। परिणाम क्रिया साझा `downloadBlob` सहायक को कॉल करती है, जो सर्वर फ़ाइल पर नेविगेट करने के बजाय ब्राउज़र डाउनलोड बनाता है। उपयोगकर्ता द्वारा इसे सामान्य डिवाइस स्टोरेज में सहेजने से पहले उत्पन्न आर्टिफैक्ट मेमोरी में मौजूद था।
ऑर्गनाइज़र थंबनेल भी ब्लॉब ऑब्जेक्ट URL का उपयोग करते हैं, लेकिन उनका जीवनचक्र स्पष्ट है: पुराने URL नए लोड से पहले निरस्त कर दिए जाते हैं और सभी नष्ट या साफ़ होने पर निरस्त कर दिए जाते हैं। यह अंतर स्थानीय गोपनीयता दावे को मेमोरी लीक को छिपाने से रोकता है। एक बार डाउनलोड होने के बाद, फ़ाइल सामान्य डिवाइस बैकअप और साझाकरण नियमों का पालन करती है।
आपके डिवाइस की मेमोरी की सीमा क्यों है - मूल, पार्स की गई संरचना और दोबारा लिखी गई कॉपी सभी एक साथ RAM में रहते हैं
स्थानीय कार्य RAM और ब्राउज़र नीतियों के साथ-साथ स्पष्ट इनपुट कैप्स से घिरा है। एक PDF स्रोत बाइट्स, एक पार्स किए गए ऑब्जेक्ट मॉडल, स्थानांतरित वर्कर बफ़र्स, पूर्वावलोकन और क्रमबद्ध आउटपुट के रूप में एक साथ मौजूद हो सकता है। रैस्टर पेज बड़े कैनवस जोड़ते हैं, इसलिए रेंडरर एक पिक्सेल बजट मापता है और आवंटन से पहले स्केल को कम कर सकता है।
एक फ़ोन डेस्कटॉप की तुलना में 50 MB से भी नीचे जल्दी संघर्ष कर सकता है क्योंकि संपीड़ित फ़ाइल आकार डिकोडेड पेज इमेजरी के बारे में बहुत कम कहता है। असंबद्ध टैब बंद करें, कम पेजों को संसाधित करें, या नौकरियों की मांग के लिए बड़े टूल का उपयोग करें। हार्ड कैप 50 MB प्रति PDF और 30 MB प्रति छवि बनी रहती है; स्मृति कोई निश्चित सीमा न होने का दावा करने का बहाना नहीं है।
अन्य ToolAcre उत्पाद नेटवर्क का उपयोग कर सकते हैं; सहमति प्राप्त उत्पादन विश्लेषण भी अलग है
रिपॉजिटरी में कहा गया है कि दो अन्य ToolAcre उत्पाद डिज़ाइन द्वारा नेटवर्क से संपर्क करते हैं, इसलिए स्थानीय व्यवहार को साइट पर सामान्यीकृत करने के बजाय प्रति उत्पाद सत्यापित किया जाना चाहिए। PDF ऑपरेशन कोड में दस्तावेजों को ले जाने वाला कोई समापन बिंदु नहीं है, और एक स्वचालित अलगाव परीक्षण प्रसंस्करण के दौरान उस अपरिवर्तनीयता की जांच करता है।
सहमति के बाद साइट-व्यापी विश्लेषण केवल कैनोनिकल प्रोडक्शन होस्ट पर ही चल सकता है। इसकी ToolAcre ईवेंट अनुमति-सूची में फ़ाइल नाम, सामग्री, चिपकाए गए टेक्स्ट, URL और सटीक फ़ाइल आकार शामिल नहीं हैं, जबकि Google स्क्रिप्ट गोपनीयता नीति द्वारा वर्णित तृतीय-पक्ष कोड बनी रहती है। स्टेटिक एसेट या एनालिटिक्स अनुरोध दस्तावेज़ अपलोड से अलग हैं।
टेकअवे - हर कदम आपके डिवाइस पर होता है, और PDF टूलकिट का पेज और नेटवर्क पैनल आपको इसकी पुष्टि करने देता है
पूरा जीवनचक्र दिखाई देता है: एक फ़ाइल चुनें, उसे सत्यापित करें और पढ़ें, उचित कार्यकर्ता या रेंडरिंग पथ के साथ स्थानीय रूप से रूपांतरित करें, आउटपुट को ब्लॉब में लपेटें, इसे डाउनलोड करें, फिर बफ़र्स और ऑब्जेक्ट URL साफ़ करें। उन पेज परिचालनों को निष्पादित करने के लिए किCAप्लिकेशन सर्वर की आवश्यकता नहीं है।
"ब्राउज़र में" को एक नारे के बजाय एक वास्तुकला के रूप में मानें जिसका आप निरीक्षण कर सकते हैं। अनुरोध देखें, ऑपरेशन-विशिष्ट नोट पढ़ें, और समाप्त होने पर क्लियर फ़ाइलें और मुफ्त मेमोरी का उपयोग करें। वह नियंत्रण आयोजक छवियां जारी करता है, संदर्भ छोड़ता है, और कार्यकर्ता को समाप्त करता है, जिससे मेमोरी दबाव और टैब में संवेदनशील दस्तावेज़ सामग्री का जीवनकाल दोनों कम हो जाता है। पहले डाउनलोड करें, सहेजी गई फ़ाइल को सत्यापित करें, और उसके बाद ही साफ़ करें; स्थानीय प्रसंस्करण जानबूझकर बहुत जल्दी खारिज किए गए परिणाम के लिए कोई दूरस्थ फ़ॉलबैक प्रदान नहीं करता है।