एक काला बॉक्स (black box) पर्याप्त क्यों नहीं है
अधिकांश PDF टूल्स उपयोगकर्ताओं को संवेदनशील टेक्स्ट के ऊपर एक काला आयत (rectangle) बनाकर "redact" करने की अनुमति देते हैं। यह आयत स्क्रीन पर शब्दों को छिपा देता है, लेकिन मूल अक्षर फ़ाइल के कंटेंट स्ट्रीम में बने रहते हैं। कोई भी छिपे हुए टेक्स्ट को चुन सकता है, उसे कॉपी कर सकता है, या उसे निकालने के लिए एक साधारण स्क्रिप्ट चला सकता है। दूसरे शब्दों में, डेटा अभी भी वहीं है; काला बॉक्स केवल एक दृश्य आवरण (visual cover) है।
डेवलपर के सामने आई समस्या
लेखक को एक ऐसे PDF एडिटर की आवश्यकता थी जो सर्वर पर फ़ाइलें अपलोड किए बिना पूरी तरह से ब्राउज़र में चले। इस सीमा के कारण टेक्स्ट को हटाने के लिए बैक-एंड सर्विस पर निर्भर रहना असंभव हो जाता है। मौजूदा क्लाइंट-साइड समाधान केवल कंटेंट के ऊपर एक आकार (shape) जोड़ देते हैं, जिससे मूल टेक्स्ट सुरक्षित रहता है। चुनौती टेक्स्ट को स्थायी रूप से हटाने की थी, साथ ही ऑपरेशन को तेज़ और दस्तावेज़ को उपयोगी बनाए रखने की भी थी।
चयनात्मक पेज रास्टराइज़ेशन (Selective page rasterisation): मुख्य विचार
पूरे PDF को इमेज में बदलने के बजाय—एक ऐसा कदम जो फ़ाइल के आकार को बढ़ा देगा और सर्च करने की क्षमता को खत्म कर देगा—यह समाधान केवल उन पेजों को रास्टराइज़ (rasterise) करता है जिनमें redactions शामिल हैं। वे पेज बिटमैप (bitmaps) बन जाते हैं; बाकी सभी पेज वेक्टर PDF बने रहते हैं, जिससे टेक्स्ट सिलेक्शन, सर्च और छोटा फ़ाइल साइज़ सुरक्षित रहता है।
यह दृष्टिकोण एक ऐसा दस्तावेज़ तैयार करता है जो सामान्य लगता है: 19 पेज स्पष्ट और सर्च करने योग्य रहते हैं, जबकि वह एक संवेदनशील पेज केवल एक पिक्सेल-आधारित इमेज बन जाता है जहाँ छिपी हुई जानकारी अब मौजूद नहीं होती।
विश्वसनीय रूपांतरण के लिए तीन व्यावहारिक नियम
- तीन गुना स्केल पर रेंडर करें – बिटमैप को पेज के सामान्य रिज़ॉल्यूशन के तीन गुना पर जनरेट किया जाता है। कम रिज़ॉल्यूशन वाला रेंडर आसपास के वेक्टर पेजों के बगल में धुंधला दिखता है, जिससे संदेह पैदा हो सकता है या यह अनप्रोफेशनल लग सकता है।
- सभी विजुअल एलिमेंट्स को बिटमैप में मर्ज करें – पेज को रास्टराइज़ करने से पहले एनोटेशन (annotations), हस्ताक्षर, वॉटरमार्क और रेडैक्शन आयत को एक साथ कंपोजिट किया जाता है। एक ही पेज पर वेक्टर एनोटेशन को रास्टर इमेज के साथ मिलाने से PDF रीडर भ्रमित हो सकते हैं, जिससे डिस्प्ले एरर आ सकते हैं।
- पिक्सेल के बजाय व्यूपोर्ट (viewport) से एंकर करें – एनोटेशन पेज के व्यूपोर्ट कोऑर्डिनेट्स से जुड़े होते हैं। जब कोई उपयोगकर्ता ज़ूम करता है, तो तत्व (elements) इधर-उधर जाने या असंगत रूप से स्केल होने के बजाय संरेखित (aligned) रहते हैं, अन्यथा इससे मूल टेक्स्ट उजागर हो सकता है।
रेस कंडीशंस (race conditions) से बचाव
प्रत्येक पेज को रेंडर करना एक एसिंक्रोनस (asynchronous) कार्य है। यदि कोई उपयोगकर्ता ब्राउज़र विंडो को तेज़ी से रीसाइज करता है, तो कई रेंडर जॉब्स एक-दूसरे के ऊपर आ सकते हैं, जिससे कैनवास पर टूटे हुए या ओवरलैपिंग फ्रेम बन सकते हैं। कार्यान्वयन (implementation) में प्रति-पेज रेंडर टोकन पेश किया गया है: प्रत्येक नया रेंडर अनुरोध पिछले टोकन को अमान्य कर देता है, जिससे पुराना कार्य स्वयं रद्द हो जाता है। इसका परिणाम तेज़ UI परिवर्तनों के दौरान भी एक सहज और ग्लिच-मुक्त अनुभव होता है।
ट्रेड-ऑफ (trade-offs) कैसे दिखते हैं
किसी पेज को बिटमैप में बदलने से कोई भी छिपा हुआ टेक्स्ट हट जाता है, लेकिन यह उस पेज की सामग्री को खोजने या कॉपी करने की क्षमता को भी समाप्त कर देता है।
यह आगे कहाँ जा सकता है
निष्कर्ष (Takeaway)
एक साधारण काला बॉक्स डेटा को डिलीट नहीं करता; यह केवल उसे छिपाता है। केवल उन पेजों को उच्च-रिज़ॉल्यूशन बिटमैप में बदलकर जिन्हें रेडैक्शन की आवश्यकता है, और बाकी PDF को वेक्टर-आधारित रखकर, एक ब्राउज़र-ओनली एडिटर दस्तावेज़ को तेज़, सर्च करने योग्य और निजी रखते हुए संवेदनशील टेक्स्ट को स्थायी रूप से मिटा सकता है। यह तरीका सुरक्षा और उपयोगिता के बीच संतुलन बनाता है, लेकिन उपयोगकर्ताओं को कई पेजों को रेडैक्ट करते समय फ़ाइल के आकार और सर्च करने की क्षमता पर पड़ने वाले संचयी प्रभाव (cumulative impact) का ध्यान रखना चाहिए।
