TypeScript में PDF सामग्री को कैसे रिडैक्ट करें

TypeScript में PDF सामग्री को कैसे रिडैक्ट करें

यह गाइड दिखाता है कि TypeScript के लिए Aspose.PDF FOSS के साथ PDF सामग्री को कैसे रीडैक्ट किया जाए। Page.AddRedact() एक क्षेत्र को चिह्नित करता है; Page.ApplyRedactions() सामग्री स्ट्रीम को विनाशकारी रूप से पुनः लिखता है ताकि प्रत्येक चिह्नित क्षेत्र के नीचे के ग्लिफ़ हट जाएँ। जो चिह्न लागू नहीं किए गए रहते हैं, वे सामान्य, कॉपी-सेलेक्टेबल एनोटेशन के रूप में रहेंगे। इसके लिए Node.js 22 या उससे नया संस्करण आवश्यक है।

चरण-दर-चरण गाइड

चरण 1: पैकेज स्थापित करें

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

पैकेज स्थापित होने के बाद, एक नई TypeScript फ़ाइल में Document क्लास को इम्पोर्ट करके इंस्टॉलेशन की पुष्टि करें — यह लाइन बिना किसी त्रुटि के हल हो जानी चाहिए:

import { Document } from '@asposefoss/pdf';

चरण 2: आवश्यक क्लासेस इम्पोर्ट करें

फ़ाइल खोलने के लिए Document आयात करें; AddRedact() और ApplyRedactions() को सीधे उस Page उदाहरणों पर कॉल किया जाता है जो यह लौटाता है:

import { Document } from '@asposefoss/pdf';

चरण 3: प्रतिबंध के लिए एक क्षेत्र को चिन्हित करें

Page.AddRedact(opts) rect के ऊपर एक RedactAnnotation बनाता है। fill लागू होने पर क्षेत्र पर रंग सेट करता है, और overlayText (align, fontSize, textColor के साथ) एक प्रतिस्थापन लेबल जैसे [REDACTED] प्रिंट करता है:

const doc = Document.OpenFile('memo.pdf');
const page = doc.Pages[0];

page.AddRedact({
  rect: [216, 548, 460, 566],
  fill: [0, 0, 0],
  overlayText: '[REDACTED]',
  align: 'center',
  fontSize: 9,
  textColor: [1, 1, 1],
});

चरण 4: प्रतिबंध लागू करें

Page.ApplyRedactions() सामग्री स्ट्रीम को विनाशकारी रूप से पुनः लिखता है — पृष्ठ पर चिह्नित प्रत्येक RedactAnnotation के भीतर के ग्लिफ़ स्थायी रूप से हट जाते हैं, और लागू किए गए चिह्न हटा दिए जाते हैं। इस कॉल के बाद जोड़े गए चिह्न अप्रयुक्त रहते हैं: उनके नीचे का मान अभी भी पढ़ा जाता है और अभी भी कॉपी-सेलेक्टेबल रहता है:

page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');

सामान्य समस्याएँ और समाधान

एक रिडैक्शन मार्क काले बॉक्स को दिखाता है लेकिन नीचे का पाठ अभी भी कॉपी किया जा सकता है। Page.ApplyRedactions() कभी कॉल नहीं किया गया (या मार्क जोड़े जाने से पहले कॉल किया गया)। के साथ मार्किंग AddRedact() केवल क्षेत्र के ऊपर एक एनोटेशन बनाता है — नीचे की सामग्री केवल एक बार नष्ट होती है ApplyRedactions() चलता है।

ApplyRedactions() हटाई गई सामग्री मार्क की rect कवर्ड नहीं था। rect सही क्षेत्र को पुनर्लिखित किया गया है — पाठ या छवियाँ जो केवल आंशिक रूप से ओवरलैप करती हैं, उन्हें सीमा पर अभी भी आंशिक रूप से नष्ट किया जा सकता है। लक्ष्य सामग्री के आसपास आकार के मार्क उदारता से रखें।

खोज परिणाम सीधे पास नहीं किए जा सकते Page.AddRedact(). एक हिट से Page.SearchAnnotationText() एनोटेशन मेटाडेटा ले जाता है, पेज जियोमेट्री नहीं — यह उसी आकार जैसा नहीं है जैसा कि rect an AddRedact() मार्क अपेक्षा करता है। Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) रेडैक्ट-बाय-टेक्स्ट-सेर्च एंट्री पॉइंट्स हैं, और दोनों भी उस स्तर पर उपलब्ध हैं। Document स्तर पर एक कॉल में हर पेज को स्वीप करने के लिए।

एक रेडैक्शन अप्रत्याशित रूप से एन्क्रिप्शन के बाद भी बना रहता है। रेडैक्शन और एन्क्रिप्शन स्वतंत्र ऑपरेशन्स हैं — सेव करने से पहले रेडैक्शन लागू करें के साथ। encrypt विकल्प यदि लक्ष्य सामग्री को हटाना और शेष पर पहुँच प्रतिबंधित करना दोनों है; उल्टे क्रम में लागू करने से पहले से एन्क्रिप्टेड सेव को वापस नहीं किया जा सकता।

अक्सर पूछे जाने वाले प्रश्न

एक रेडैक्शन को चिह्नित करने और लागू करने में क्या अंतर है?

AddRedact() केवल एक एनोटेशन बनाता है जो बताता है कि रेडैक्शन कहाँ योजना बनायी गयी है — कवर की गयी सामग्री अप्रभावित रहती है और अभी भी चयन योग्य/कॉपी योग्य है जब तक ApplyRedactions() चलकर पृष्ठ को नष्टकारी रूप से पुनः लिखता नहीं।

क्या मैं आयत निर्दिष्ट करने के बजाय टेक्स्ट खोजकर रेडैक्ट कर सकता हूँ?

हाँ — Page.MarkRedactText(find, opts) find के हर मिलान को बाद में लागू करने के लिए चिह्नित करता है, और Page.RedactText(find, opts) एक ही कॉल में चिह्नित करता है और लागू करता है। दोनों Document पर भी उपलब्ध हैं ताकि पूरे दस्तावेज़ को स्कैन किया जा सके।

क्या ApplyRedactions() रेडैक्शन चिह्नों के अलावा अन्य एनोटेशन को प्रभावित करता है?

नहीं — यह अपने स्वयं के RedactAnnotation चिह्नों के नीचे कंटेंट स्ट्रीम को पुनः लिखता है; पृष्ठ पर अन्य एनोटेशन प्रकारों को इस कॉल द्वारा नहीं छुआ जाता।

क्या रेडैक्शन उलटने योग्य है?

नहीं — ApplyRedactions() विनाशकारी है। यदि अनरेडैक्टेड सामग्री को बाद में पुनः प्राप्त करने की आवश्यकता हो तो मूल फ़ाइल को रखें।

यह भी देखें

 हिन्दी