ਇੱਕ ਕਾਲਾ ਡੱਬਾ ਕਿਉਂ ਕਾਫ਼ੀ ਨਹੀਂ ਹੈ
ਜ਼ਿਆਦਾਤਰ PDF ਟੂਲ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਸੰਵੇਦਨਸ਼ੀਲ ਟੈਕਸਟ ਦੇ ਉੱਪਰ ਇੱਕ ਕਾਲਾ ਆਇਤ (rectangle) ਬਣਾ ਕੇ "redact" ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ। ਇਹ ਆਇਤ ਸਕ੍ਰੀਨ 'ਤੇ ਸ਼ਬਦਾਂ ਨੂੰ ਲੁਕਾ ਦਿੰਦੀ ਹੈ, ਪਰ ਅਸਲ ਅੱਖਰ ਫਾਈਲ ਦੇ ਕੰਟੈਂਟ ਸਟ੍ਰੀਮ (content stream) ਵਿੱਚ ਬਣੇ ਰਹਿੰਦੇ ਹਨ। ਕੋਈ ਵੀ ਲੁਕੇ ਹੋਏ ਟੈਕਸਟ ਨੂੰ ਚੁਣ ਸਕਦਾ ਹੈ, ਇਸਦੀ ਕਾਪੀ ਕਰ ਸਕਦਾ ਹੈ, ਜਾਂ ਇਸਨੂੰ ਕੱਢਣ ਲਈ ਇੱਕ ਸਧਾਰਨ ਸਕ੍ਰਿਪਟ ਚਲਾ ਸਕਦਾ ਹੈ। ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਡੇਟਾ ਅਜੇ ਵੀ ਉੱਥੇ ਹੀ ਹੈ; ਕਾਲਾ ਡੱਬਾ ਸਿਰਫ਼ ਇੱਕ ਵਿਜ਼ੂਅਲ ਕਵਰ ਹੈ।
ਉਹ ਸਮੱਸਿਆ ਜਿਸਦਾ ਡਿਵੈਲਪਰ ਨੂੰ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ
ਲੇਖਕ ਨੂੰ ਇੱਕ ਅਜਿਹੇ PDF ਐਡੀਟਰ ਦੀ ਲੋੜ ਸੀ ਜੋ ਫਾਈਲਾਂ ਨੂੰ ਸਰਵਰ 'ਤੇ ਅਪਲੋਡ ਕੀਤੇ ਬਿਨਾਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਚੱਲੇ। ਇਸ ਸੀਮਾ ਕਾਰਨ ਟੈਕਸਟ ਨੂੰ ਹਟਾਉਣ ਲਈ ਕਿਸੇ ਬੈਕ-ਐਂਡ (back-end) ਸਰਵਿਸ 'ਤੇ ਨਿਰਭਰ ਕਰਨਾ ਅਸੰਭਵ ਹੋ ਜਾਂਦਾ ਹੈ। ਮੌਜੂਦਾ ਕਲਾਇੰਟ-ਸਾਈਡ (client-side) ਹੱਲ ਸਿਰਫ਼ ਕੰਟੈਂਟ ਦੇ ਉੱਪਰ ਇੱਕ ਸ਼ੇਪ (shape) ਜੋੜ ਦਿੰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਅਸਲ ਟੈਕਸਟ ਬਰਕਰਾਰ ਰਹਿੰਦਾ ਹੈ। ਚੁਣੌਤੀ ਟੈਕਸਟ ਨੂੰ ਪੱਕੇ ਤੌਰ 'ਤੇ ਹਟਾਉਣ ਦੀ ਸੀ, ਜਦੋਂ ਕਿ ਕਾਰਜ ਨੂੰ ਤੇਜ਼ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਵਰਤੋਂ ਯੋਗ ਬਣਾਇਆ ਜਾ ਸਕੇ।
ਚੋਣਵੇਂ ਪੇਜ ਰਾਸਟਰਾਈਜ਼ੇਸ਼ਨ: ਮੁੱਖ ਵਿਚਾਰ
ਪੂਰੇ PDF ਨੂੰ ਇੱਕ ਚਿੱਤਰ (image) ਵਿੱਚ ਬਦਲਣ ਦੀ ਬਜਾਏ—ਇੱਕ ਅਜਿਹਾ ਕਦਮ ਜੋ ਫਾਈਲ ਦੇ ਆਕਾਰ ਨੂੰ ਵਧਾ ਦੇਵੇਗਾ ਅਤੇ ਸਰਚ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਨੂੰ ਖਤਮ ਕਰ ਦੇਵੇਗਾ—ਇਹ ਹੱਲ ਸਿਰਫ਼ ਉਹਨਾਂ ਪੇਜਾਂ ਨੂੰ ਰਾਸਟਰਾਈਜ਼ (rasterise) ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਰੈਡੈਕਸ਼ਨ (redactions) ਹਨ। ਉਹ ਪੇਜ ਬਿਟਮੈਪ (bitmaps) ਬਣ ਜਾਂਦੇ ਹਨ; ਬਾਕੀ ਹਰ ਪੇਜ ਇੱਕ ਵੈਕਟਰ PDF ਬਣਿਆ ਰਹਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਟੈਕਸਟ ਚੋਣ, ਸਰਚ ਅਤੇ ਫਾਈਲ ਦਾ ਛੋਟਾ ਆਕਾਰ ਬਰਕਰਾਰ ਰਹਿੰਦਾ ਹੈ।
ਇਹ ਤਰੀਕਾ ਇੱਕ ਅਜਿਹਾ ਦਸਤਾਵੇਜ਼ ਤਿਆਰ ਕਰਦਾ ਹੈ ਜੋ ਆਮ ਲੱਗਦਾ ਹੈ: 19 ਪੇਜ ਸਾਫ਼ ਅਤੇ ਸਰਚ ਕਰਨ ਯੋਗ ਰਹਿੰਦੇ ਹਨ, ਜਦੋਂ ਕਿ ਇੱਕ ਸੰਵੇਦਨਸ਼ੀਲ ਪੇਜ ਸਿਰਫ਼ ਇੱਕ ਪਿਕਸਲ-ਆਧਾਰਿਤ ਚਿੱਤਰ ਹੁੰਦਾ ਹੈ ਜਿੱਥੇ ਲੁਕੀ ਹੋਈ ਜਾਣਕਾਰੀ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ ਹੁੰਦੀ।
ਭਰੋਸੇਯੋਗ ਕਨਵਰਸ਼ਨ ਲਈ ਤਿੰਨ ਵਿਵਹਾਰਕ ਨਿਯਮ
- ਤਿੰਨ ਗੁਣਾ ਸਕੇਲ 'ਤੇ ਰੈਂਡਰ ਕਰੋ – ਬਿਟਮੈਪ ਪੇਜ ਦੇ ਆਮ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਤੋਂ ਤਿੰਨ ਗੁਣਾ ਵੱਧ 'ਤੇ ਤਿਆਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਘੱਟ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਾਲਾ ਰੈਂਡਰ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਵੈਕਟਰ ਪੇਜਾਂ ਦੇ ਨਾਲ ਧੁੰਦਲਾ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਸ਼ੱਕ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਇਹ ਸਿਰਫ਼ ਗੈਰ-ਪੇਸ਼ੇਵਰ ਲੱਗ ਸਕਦਾ ਹੈ।
- ਸਾਰੇ ਵਿਜ਼ੂਅਲ ਤੱਤਾਂ ਨੂੰ ਬਿਟਮੈਪ ਵਿੱਚ ਮਿਲਾਓ – ਪੇਜ ਨੂੰ ਰਾਸਟਰਾਈਜ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਐਨੋਟੇਸ਼ਨ (annotations), ਹਸਤਾਖਰ, ਵਾਟਰਮਾਰਕ ਅਤੇ ਰੈਡੈਕਸ਼ਨ ਆਇਤ ਨੂੰ ਇਕੱਠਾ ਜੋੜ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਇੱਕੋ ਪੇਜ 'ਤੇ ਵੈਕਟਰ ਐਨੋਟੇਸ਼ਨਾਂ ਨੂੰ ਰਾਸਟਰ ਚਿੱਤਰ ਨਾਲ ਮਿਲਾਉਣ ਨਾਲ PDF ਰੀਡਰ ਉਲਝ ਸਕਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਡਿਸਪਲੇਅ ਵਿੱਚ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ।
- ਪਿਕਸਲ ਦੀ ਬਜਾਏ ਵਿਊਪੋਰਟ (viewport) ਨਾਲ ਜੋੜੋ – ਐਨੋਟੇਸ਼ਨਾਂ ਪੇਜ ਦੇ ਵਿਊਪੋਰਟ ਕੋਆਰਡੀਨੇਟਸ ਨਾਲ ਜੁੜੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਜਦੋਂ ਕੋਈ ਉਪਭੋਗਤਾ ਜ਼ੂਮ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੱਤ ਆਪਣੀ ਜਗ੍ਹਾ 'ਤੇ ਟਿਕੇ ਰਹਿੰਦੇ ਹਨ, ਨਾ ਕਿ ਅਸੰਤੁਲਿਤ ਤਰੀਕੇ ਨਾਲ ਖਿਸਕਦੇ ਜਾਂ ਸਕੇਲ ਹੁੰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਅਸਲ ਟੈਕਸਟ ਖੁੱਲ੍ਹ ਸਕਦਾ ਸੀ।
ਰੇਸ ਕੰਡੀਸ਼ਨਾਂ (race conditions) ਤੋਂ ਬਚਾਅ
ਹਰੇਕ ਪੇਜ ਨੂੰ ਰੈਂਡਰ ਕਰਨਾ ਇੱਕ ਅਸਿੰਕਰੋਨਸ (asynchronous) ਕਾਰਜ ਹੈ। ਜੇਕਰ ਕੋਈ ਉਪਭੋਗਤਾ ਬ੍ਰਾਊਜ਼ਰ ਵਿੰਡੋ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਰੀਸਾਈਜ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਕਈ ਰੈਂਡਰ ਕੰਮ ਇੱਕ ਦੂਜੇ ਦੇ ਉੱਪਰ ਆ ਸਕਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਕੈਨਵਸ 'ਤੇ ਟੁੱਟੇ ਹੋਏ ਜਾਂ ਇੱਕ ਦੂਜੇ ਦੇ ਉੱਪਰ ਚੜ੍ਹੇ ਹੋਏ ਫਰੇਮ ਬਣ ਸਕਦੇ ਹਨ। ਇਸਦੇ ਲਈ ਹਰੇਕ ਪੇਜ ਲਈ ਇੱਕ ਰੈਂਡਰ ਟੋਕਨ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਹੈ: ਹਰੇਕ ਨਵਾਂ ਰੈਂਡਰ ਰਿਕਵੈਸਟ ਪਿਛਲੇ ਟੋਕਨ ਨੂੰ ਰੱਦ ਕਰ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਪੁਰਾਣਾ ਕਾਰਜ ਆਪਣੇ ਆਪ ਰੱਦ ਹੋ ਜਾਂਦਾ ਹੈ। ਨਤੀਜਾ ਇੱਕ ਸੁਚਾਰੂ ਅਤੇ ਗਲਟੀ-ਮੁਕਤ ਅਨੁਭਵ ਹੁੰਦਾ ਹੈ, ਭਾਵੇਂ UI ਵਿੱਚ ਤੇਜ਼ੀ ਨਾਲ ਬਦਲਾਅ ਹੋ ਰਹੇ ਹੋਣ।
ਤਬਾਦਲੇ (trade-offs) ਕਿਹੋ ਜਿਹੇ ਦਿਖਦੇ ਹਨ
ਇੱਕ ਪੇਜ ਨੂੰ ਬਿਟਮੈਪ ਵਿੱਚ ਬਦਲਣ ਨਾਲ ਕੋਈ ਵੀ ਲੁਕਿਆ ਹੋਇਆ ਟੈਕਸਟ ਹਟ ਜਾਂਦਾ ਹੈ, ਪਰ ਇਹ ਉਸ ਪੇਜ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਸਰਚ ਕਰਨ ਜਾਂ ਕਾਪੀ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਨੂੰ ਵੀ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ।
ਇਹ ਅੱਗੇ ਕਿੱਥੇ ਜਾ ਸਕਦਾ ਹੈ
ਸਿੱਖਿਆ (Takeaway)
ਇੱਕ ਸਧਾਰਨ ਕਾਲਾ ਡੱਬਾ ਡੇਟਾ ਨੂੰ ਡਿਲੀਟ ਨਹੀਂ ਕਰਦਾ; ਇਹ ਸਿਰਫ਼ ਇਸਨੂੰ ਲੁਕਾਉਂਦਾ ਹੈ। ਸਿਰਫ਼ ਉਹਨਾਂ ਪੇਜਾਂ ਨੂੰ ਉੱਚ-ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਬਿਟਮੈਪਾਂ ਵਿੱਚ ਬਦਲ ਕੇ ਜਿਨ੍ਹਾਂ ਨੂੰ ਰੈਡੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੈ ਅਤੇ ਬਾਕੀ PDF ਨੂੰ ਵੈਕਟਰ-ਅਧਾਰਤ ਰੱਖ ਕੇ, ਇੱਕ ਬ੍ਰਾਊਜ਼ਰ-ਸਿਰਫ਼ ਐਡੀਟਰ ਸੰਵੇਦਨਸ਼ੀਲ ਟੈਕਸਟ ਨੂੰ ਪੱਕੇ ਤੌਰ 'ਤੇ ਮਿਟਾ ਸਕਦਾ ਹੈ ਅਤੇ ਨਾਲ ਹੀ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਤੇਜ਼, ਸਰਚ ਕਰਨ ਯੋਗ ਅਤੇ ਨਿੱਜੀ ਰੱਖ ਸਕਦਾ ਹੈ। ਇਹ ਵਿਧੀ ਸੁਰੱਖਿਆ ਅਤੇ ਵਰਤੋਂਯੋਗਤਾ ਵਿਚਕਾਰ ਸੰਤੁਲਨ ਬਣਾਉਂਦੀ ਹੈ, ਪਰ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਕਈ ਪੇਜਾਂ ਨੂੰ ਰੈਡੈਕਟ ਕਰਦੇ ਸਮੇਂ ਫਾਈਲ ਦੇ ਆਕਾਰ ਅਤੇ ਸਰਚ ਕਰਨ ਦੀ ਸਮਰੱਥਾ 'ਤੇ ਪੈਣ ਵਾਲੇ ਕੁੱਲ ਪ੍ਰਭਾਵ ਦਾ ਧਿਆਨ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ।
