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() | هر رخداد یک عبارت جستجو را در تمام صفحات علامتگذاری کنید |