ایک کالا ڈبہ (black box) کافی کیوں نہیں ہے
زیادہ تر PDF ٹولز صارفین کو حساس متن پر کالا مستطیل (rectangle) بنا کر اسے "redact" کرنے کی اجازت دیتے ہیں۔ یہ مستطیل اسکرین پر الفاظ کو چھپا دیتا ہے، لیکن اصل حروف فائل کے مواد (content stream) میں موجود رہتے ہیں۔ کوئی بھی چھپے ہوئے متن کو منتخب کر سکتا ہے، اسے کاپی کر سکتا ہے، یا اسے نکالنے کے لیے ایک سادہ اسکرپٹ چلا سکتا ہے۔ دوسرے لفظوں میں، ڈیٹا اب بھی وہیں موجود ہے؛ کالا ڈبہ صرف ایک بصری پردہ ہے۔
وہ مسئلہ جس کا ڈویلپر کو سامنا تھا
مصنف کو ایک ایسے PDF ایڈیٹر کی ضرورت تھی جو فائلوں کو سرور پر اپ لوڈ کیے بغیر مکمل طور پر براؤزر میں چلے۔ یہ پابندی متن کو ختم کرنے کے لیے بیک اینڈ (back-end) سروس پر انحصار کرنا ناممکن بنا دیتی ہے۔ موجودہ کلائنٹ سائیڈ (client-side) حل صرف مواد کے اوپر ایک شکل (shape) شامل کر دیتے ہیں، جس سے اصل متن برقرار رہتا ہے۔ چیلنج یہ تھا کہ عمل کو تیز اور دستاویز کو قابل استعمال رکھتے ہوئے متن کو مستقل طور پر ختم کیا جائے۔
منتخب پیج راسٹرائزیشن (rasterisation): بنیادی تصور
پوری PDF کو تصویر میں تبدیل کرنے کے بجائے—جو کہ فائل کے سائز کو بڑھا دے گا اور سرچ کرنے کی صلاحیت کو ختم کر دے گا—یہ حل صرف ان صفحات کو راسٹرائز (rasterise) کرتا ہے جن میں redactions موجود ہیں۔ وہ صفحات بٹ میپس (bitmaps) بن جاتے ہیں؛ باقی تمام صفحات ویکٹر PDF رہتے ہیں، جس سے متن کا انتخاب، سرچ اور فائل کا چھوٹا سائز برقرار رہتا ہے۔
یہ طریقہ کار ایک ایسی دستاویز تیار کرتا ہے جو بالکل عام محسوس ہوتی ہے: 19 صفحات واضح اور قابلِ سرچ رہتے ہیں، جبکہ وہ ایک حساس صفحہ صرف پکسلز پر مشتمل تصویر بن جاتا ہے جہاں چھپی ہوئی معلومات اب موجود نہیں رہتیں۔
قابلِ اعتماد تبدیلی کے لیے تین عملی اصول
- تین گنا اسکیل پر رینڈر کریں – بٹ میپ کو صفحے کے عام ریزولوشن سے تین گنا زیادہ پر تیار کیا جاتا ہے۔ کم ریزولوشن والا رینڈر ارد گرد کے ویکٹر صفحات کے مقابلے میں دھندلا نظر آتا ہے، جس سے شک پیدا ہو سکتا ہے یا یہ غیر پیشہ ورانہ لگ سکتا ہے۔
- تمام بصری عناصر کو بٹ میپ میں ضم کریں – صفحے کو راسٹرائز کرنے سے پہلے اینوٹیشنز (annotations)، دستخط، واٹر مارکس اور ریڈیکشن مستطیل کو ایک ساتھ جوڑ دیا جاتا ہے۔ ایک ہی صفحے پر ویکٹر اینوٹیشنز کو راسٹر امیج کے ساتھ ملانے سے PDF ریڈرز الجھ سکتے ہیں، جس کے نتیجے میں ڈسپلے کی غلطیاں ہو سکتی ہیں۔
- ویو پورٹ (viewport) سے منسلک کریں، پکسلز سے نہیں – اینوٹیشنز صفحے کے ویو پورٹ کوآرڈینیٹس سے منسلک ہوتی ہیں۔ جب صارف زوم کرتا ہے، تو عناصر اپنی جگہ پر رہتے ہیں بجائے اس کے کہ وہ اپنی جگہ سے ہٹ جائیں یا غیر مستقل طور پر اسکیل ہوں، ورنہ اس سے نیچے موجود متن ظاہر ہو سکتا ہے۔
ریس کنڈیشنز (race conditions) سے بچاؤ
ہر صفحے کو رینڈر کرنا ایک غیر ہم آہنگ (asynchronous) کام ہے۔ اگر کوئی صارف براؤزر کی ونڈو کو تیزی سے ری سائز کرتا ہے، تو رینڈرنگ کے متعدد کام ایک دوسرے کے اوپر آ سکتے ہیں، جس سے کینوس پر ٹوٹے ہوئے یا ایک دوسرے کے اوپر چڑھے ہوئے فریمز پیدا ہو سکتے ہیں۔ اس کے حل کے لیے ہر صفحے کے لیے ایک رینڈر ٹوکن متعارف کرایا گیا ہے: ہر نئی رینڈر درخواست پچھلے ٹوکن کو کالعدم قرار دے دیتی ہے، جس سے پرانا کام خود بخود منسوخ ہو جاتا ہے۔ اس کا نتیجہ ایک ہموار اور بغیر کسی خرابی (glitch-free) کے تجربہ ہے، چاہے UI میں تیزی سے تبدیلیاں ہی کیوں نہ ہوں۔
توازن (trade-offs) کیسا نظر آتا ہے
کسی صفحے کو بٹ میپ میں تبدیل کرنے سے تمام چھپا ہوا متن ختم ہو جاتا ہے، لیکن اس سے اس صفحے کے مواد کو تلاش کرنے یا کاپی کرنے کی صلاحیت بھی ختم ہو جاتی ہے۔
یہ آگے کہاں جا سکتا ہے
خلاصہ
ایک سادہ کالا ڈبہ ڈیٹا کو حذف نہیں کرتا؛ یہ صرف اسے چھپاتا ہے۔ صرف ان صفحات کو ہائی ریزولوشن بٹ میپس میں تبدیل کر کے جنہیں ریڈیکشن کی ضرورت ہے، اور باقی PDF کو ویکٹر پر مبنی رکھ کر، ایک براؤزر پر مبنی ایڈیٹر حساس متن کو مستقل طور پر مٹا سکتا ہے جبکہ دستاویز کو تیز، قابلِ سرچ اور نجی رکھ سکتا ہے۔ یہ طریقہ کار سیکیورٹی اور استعمال کے درمیان توازن برقرار رکھتا ہے، لیکن صارفین کو بہت سے صفحات کو ریڈیکٹ کرتے وقت فائل کے سائز اور سرچ کرنے کی صلاحیت پر پڑنے والے مجموعی اثرات کا خیال رکھنا چاہیے۔
