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() اضافه کنید — علامت‌هایی که پس از آن اضافه شوند در آن فراخوانی گنجانده نمی‌شوند و اعمال نمی‌گردند.
  • در RedactOptions / ApplyRedactionsOptions، scrubMetadata: true را عبور دهید زمانی که محتوای حذف شده ممکن است در متادیتای سند نیز وجود داشته باشد (/Info یا XMP).
  • RedactText() و MarkRedactText() با همان قوانین تطبیق SearchAnnotationText() / Search جستجو می‌کنند، بنابراین رشته جستجویی که در آنجا مطابقت نداشته باشد، حذف نیز انجام نخواهد شد.

مشکلات رایج

مشکلدلیلرفع
علامت حذف تأثیری نداردPage.ApplyRedactions() هرگز فراخوانی نشدابتدا برای هر علامت Page.AddRedact() را فراخوانی کنید، سپس یک‌بار Page.ApplyRedactions() را
محتوا پس از علامت هنوز قابل بازیابی استعلامت از AddRedact() (فقط-علامت) استفاده کرد بدون فراخوانی ApplyRedactions() بعدیفراخوانی ApplyRedactions()، یا استفاده از Redact() / RedactText() برای حذف یک‌باره
متن محرمانه در فراداده سند استخراج‌شده دوباره ظاهر می‌شودscrubMetadata تنظیم نشده بوددر شی options، { scrubMetadata: true } را پاس کنید
ApplyRedactions() مقدار 0 را بازمی‌گرداندهیچ علامت /Redact در صفحه هنگام فراخوانی وجود نداشتتأیید کنید که AddRedact() (یا MarkRedactText()) اول اجرا شد و صفحهٔ یکسانی را هدف قرار داد

FAQ

تفاوت AddRedact و Redact چیست؟

AddRedact() فقط یک ناحیه را علامت‌گذاری می‌کند — محتوا همچنان موجود است و می‌توان آن را کپی و انتخاب کرد تا زمانی که ApplyRedactions() اجرا شود. Redact() محتوا را در همان فراخوانی حذف می‌کند، بدون گامی جدا برای اعمال.

آیا می‌توانم به جای تعیین مختصات، با جستجوی متن، redact انجام دهم؟

بله. RedactText() هر رخداد یک رشته جستجو یا RegExp را پیدا می‌کند و بلافاصله آن‌ها را redact می‌کند؛ MarkRedactText() همین کار را انجام می‌دهد اما فقط موارد را علامت‌گذاری می‌کند و برای فراخوانی بعدی ApplyRedactions() نگه می‌دارد.

آیا redaction در سراسر سند کار می‌کند یا فقط صفحه به صفحه؟

هر دو. Page.Redact() / Page.ApplyRedactions() و هم‌پیکره‌های آن‌ها بر روی یک صفحه عمل می‌کنند؛ Document.Redact() / Document.ApplyRedactions() و هم‌پیکره‌های آن‌ها بر روی تمام صفحات عمل می‌کنند.

آیا حاشیه‌نویسی‌های نزدیک به ناحیه‌ی redact شده نیز حذف می‌شوند؟

فقط اگر اجازه بدهید همان‌طور باشند. keepAnnotations: true را در options object پاس دهید تا حاشیه‌نویسی‌هایی که با یک ناحیه حذف‌شده همپوشانی دارند، حفظ شوند به‌جای حذف آن‌ها همراه با آن.


API Reference خلاصه

کلاس/متدتوضیح
Page.AddRedact()یک ناحیه مستطیلی را با یک حاشیه‌گذاری /Redact علامت‌گذاری کنید، بدون اینکه هنوز محتوا را حذف کنید
Page.ApplyRedactions()به‌صورت مخرب تمام ناحیه‌های علامت‌گذاری‌شده در صفحه را حذف کنید و تعداد اعمال‌شده را برگردانید
Page.Redact()به‌سرعت محتوا را در نواحی داده‌شده حذف کنید، بدون مرحله اعمال جداگانه
Page.RedactText()پیدا کنید و بلافاصله هر رخداد رشته جستجو یا RegExp را حذف کنید
Page.MarkRedactText()پیدا کنید و (بدون اعمال) هر رخداد رشته جستجو یا RegExp را علامت‌گذاری کنید
Document.ApplyRedactions()هر علامت /Redact را در تمام سند اعمال کنید
Document.Redact() / Document.RedactText()به‌سرعت نواحی را در یک صفحه، یا یک عبارت جستجو را در تمام صفحات حذف کنید
Document.MarkRedactText()هر رخداد یک عبارت جستجو را در تمام صفحات علامت‌گذاری کنید

همچنین ببینید:

 فارسی