Redaction
Redaction
تغطي هذه الصفحة إزالة المحتوى بشكل دائم من صفحة PDF. يقدِّم Aspose.PDF FOSS لـ TypeScript سيرتي عمل لإزالة النصوص: تدفق ذو مرحلتين “وضع علامة ثم تطبيق” يمكنك مراجعته قبل الالتزام، وتدفق فوري بنقرة واحدة. كلاهما متاح على Page لصفحة واحدة وعلى Document للمستند بأكمله.
وضع العلامات وتطبيق الإزالة
يقوم Page.AddRedact() بوضع علامة على منطقة مستطيلة باستخدام تعليق /Redact — المحتوى أسفلها يبقى غير مُتَأثر ولا يزال قابلًا للنسخ والتحديد. لا يتم حذف أي شيء فعليًا حتى يُنفَّذ Page.ApplyRedactions(): يعيد كتابة تدفق المحتوى بشكل مدمر لكل علامة /Redact على الصفحة، يرسم تغطية كل علامة (ملئ /IC و/OverlayText)، يزيل العلامات، ويعيد عدد الإزالات التي تم تطبيقها. العلامات التي تُضاف بعد استدعاء ApplyRedactions() تبقى غير مُطبقة.
page.AddRedact({
rect: [220, 550, 460, 566],
fill: [0, 0, 0],
overlayText: '[REDACTED]',
align: 'center',
fontSize: 9,
textColor: [1, 1, 1],
});
const applied = page.ApplyRedactions();
console.log('Redactions applied:', applied);الإزالة الفورية
يجمع Page.Redact() وPage.RedactText() بين وضع العلامة والتطبيق في نداء واحد: يزيلان فعليًا النصوص والصور المغطاة، ويقومان بتنقية الموارد التي تُصبح أوْربة بعد الإزالة، ويرسمان صندوق علامة معتم على كل منطقة — دون خطوة ApplyRedactions() منفصلة ولا شيء يبقى للمراجعة أولًا. يأخذ Page.Redact() قائمة صريحة من المناطق Rect؛ يكتشف Page.RedactText() ويزيل كل تكرار لسلسلة بحث أو RegExp، بنفس طريقة بحث Page.SearchAnnotationText(). كلاهما يقبل كائن RedactOptions يتحكم في علامة color، وما إذا كان يجب scrubMetadata، وما إذا كان يجب keepAnnotations التي تتقاطع مع منطقة مُزالة.
نظرًا لأنها تُزيل المحتوى فورًا دون خطوة مراجعة، يفضَّل استخدام AddRedact() + ApplyRedactions() عندما يجب أن تكون العلامة قابلة للفحص قبل الالتزام، واستخدام Redact() / RedactText() عندما تكون المناطق أو عبارات البحث معروفة مسبقًا بأنها آمنة للإزالة.
تحرير مستند كامل
نفس سيرتي العمل الاثنين موجودتان على Document، موجهتان إلى كل صفحة مرة واحدة: Document.MarkRedactText() يحدد كل ظهور لمصطلح البحث عبر جميع الصفحات، Document.ApplyRedactions() يطبق كل تحديد في المستند، وDocument.Redact() / Document.RedactText() يزيلان مناطق صفحة واحدة أو مصطلح بحث على مستوى المستند فورًا، معكوسين ما يعادل Page.
نصائح وأفضل الممارسات
- استخدم
AddRedact()+ApplyRedactions()عندما ينبغي أن تكون عملية الإزالة قابلة للمراجعة قبل أن تُطبق؛ استخدمRedact()/RedactText()عندما تكون المناطق مؤكدًا أنها آمنة للإزالة فورًا. - أضف جميع علامات
AddRedact()لصفحة ما قبل استدعاءApplyRedactions()— العلامات التي تُضاف لاحقًا لا تُضمّن في ذلك الاستدعاء وتبقى غير مطبقة. - مرّر
scrubMetadata: trueفيRedactOptions/ApplyRedactionsOptionsعندما قد يتواجد المحتوى المُزال أيضًا في بيانات تعريف المستند (/Infoأو XMP). RedactText()وMarkRedactText()يجرون البحث بنفس قواعد المطابقة كما هو فيSearchAnnotationText()/Search، لذا فإن سلسلة البحث التي لا تتطابق هناك ستفشل أيضًا في الإزالة.
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
| علامة الحذف لا تؤثر | Page.ApplyRedactions() لم يتم استدعاؤه أبداً | استدعِ Page.AddRedact() لكل علامة أولاً، ثم Page.ApplyRedactions() مرة واحدة |
| المحتوى لا يزال قابلاً للاسترداد بعد العلامة | استخدمت العلامة AddRedact() (علامة فقط) دون استدعاء ApplyRedactions() لاحق | استدعِ ApplyRedactions()، أو استخدم Redact() / RedactText() لإزالة استدعاء واحد |
| يظهر النص المحذوف مرةً أخرى في بيانات تعريف المستند المستخرجة | لم يتم تعيين scrubMetadata | مرّر { scrubMetadata: true } في كائن الخيارات |
ApplyRedactions() يرجع 0 | لم توجد علامات /Redact على الصفحة عندما تم استدعاؤها | تأكد من أن AddRedact() (أو MarkRedactText()) تم تشغيله أولاً واستهدف نفس الصفحة |
FAQ
ما الفرق بين AddRedact و Redact؟
AddRedact() يحدد المنطقة فقط — لا يزال المحتوى موجودًا ويمكن نسخه وتحديده حتى يتم تشغيل ApplyRedactions(). Redact() يزيل المحتوى في نفس الاستدعاء، دون خطوة تطبيق منفصلة.
هل يمكنني إخفاء النص عن طريق البحث بدلاً من تحديد الإحداثيات؟
نعم. RedactText() يجد ويُخفي على الفور كل ظهور لسلسلة بحث أو RegExp؛ MarkRedactText() يقوم بنفس العملية لكنه يحدد التطابقات فقط، ويتركها لتطبيق لاحق عبر استدعاء ApplyRedactions().
هل يعمل الإخفاء عبر المستند بأكمله أم صفحة واحدة في كل مرة؟
كلاهما. Page.Redact() / Page.ApplyRedactions() وأشقاؤهما يعملون على صفحة واحدة؛ Document.Redact() / Document.ApplyRedactions() وأشقاؤهما يعملون عبر كل صفحة.
هل يتم أيضًا إزالة التعليقات التوضيحية القريبة من المنطقة المُخفية؟
فقط إذا سمحت لهم بأن يكونوا. مرّر keepAnnotations: true في كائن الخيارات للحفاظ على التعليقات التي تتداخل مع منطقة محو بدلاً من إزالتها معها.
API Reference ملخص
| فئة/طريقة | وصف |
|---|---|
Page.AddRedact() | علّم منطقة مستطيلة بتعليق /Redact، دون إزالة المحتوى بعد |
Page.ApplyRedactions() | أزل كل منطقة مُعلَّمة على الصفحة بشكل نهائي وأرجع عدد المناطق التي تم إزالتها |
Page.Redact() | قم بإزالة المحتوى في المناطق المحددة فورًا، دون خطوة تطبيق منفصلة |
Page.RedactText() | ابحث واحذف على الفور كل ظهور لسلسلة البحث أو RegExp |
Page.MarkRedactText() | ابحث وضع علامة (دون تطبيق) على كل ظهور لسلسلة البحث أو RegExp |
Document.ApplyRedactions() | طبّق كل علامة /Redact عبر المستند بأكمله |
Document.Redact() / Document.RedactText() | إخفاء المناطق على صفحة واحدة فورًا، أو مصطلح بحث عبر جميع الصفحات |
Document.MarkRedactText() | تمييز كل ظهور لمصطلح بحث عبر جميع الصفحات |