چگونه محتوای PDF را در TypeScript Redact کنیم
این راهنما نشان میدهد چگونه محتوای PDF را با Aspose.PDF FOSS برای TypeScript مخفی کنید. Page.AddRedact() یک ناحیه را علامتگذاری میکند؛ Page.ApplyRedactions() بهصورت مخرب جریان محتوا را بازنویسی میکند بهطوری که گلیفهای زیر هر ناحیه علامتگذاری شده حذف شوند. علامتگذاریهای باقیمانده که اعمال نشدهاند بهصورت حاشیهنویسیهای عادی و قابل انتخاب برای کپی باقی میمانند. این ابزار نیاز به Node.js 22 یا بالاتر دارد.
راهنمای گام به گام
گام ۱: نصب بسته
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نصب را با وارد کردن کلاس Document در یک فایل جدید TypeScript تأیید کنید — این خط باید پس از نصب بسته بدون خطا حل شود:
import { Document } from '@asposefoss/pdf';گام ۲: وارد کردن کلاسهای مورد نیاز
برای باز کردن فایل، Document را ایمپورت کنید؛ AddRedact() و ApplyRedactions() مستقیماً بر روی نمونههای Page که برمیگرداند، فراخوانی میشوند:
import { Document } from '@asposefoss/pdf';مرحله ۳: علامتگذاری یک ناحیه برای حذف
Page.AddRedact(opts) یک RedactAnnotation روی rect میکشد. 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],
});مرحله ۴: اعمال حذفها
Page.ApplyRedactions() بهصورت مخرب جریان محتوا را بازنویسی میکند — گلیفهای داخل هر RedactAnnotation که در صفحه علامتگذاری شدهاند، برای همیشه از بین میروند و علامتهای اعمالشده حذف میشوند. علامتهایی که پس از این فراخوانی اضافه میشوند، اعمال نمیشوند: مقدار زیر آنها همچنان خوانده میشود و قابل انتخاب برای کپی است:
page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');مشکلات رایج و راهحلها
یک علامت محرمانه جعبه سیاه را نشان میدهد اما متن زیرین هنوز میتواند کپی شود. Page.ApplyRedactions() هرگز فراخوانی نشد (یا قبل از افزودن علامت فراخوانی شد). علامتگذاری با AddRedact() تنها با خود یک حاشیهنویسی بر روی ناحیه میکشد — محتوی زیرین تنها یکبار حذف میشود ApplyRedactions() اجرا میشود.
ApplyRedactions() محتوای حذفشده علامت rect پوشش نداده بود. rect منطقه دقیق بازنویسی شده است — متن یا تصاویری که فقط بخشی از آن را پوشش میدهند میتوانند همچنان بهصورت جزئی در مرزها مخدوش شوند. اندازهگذاریها بهطور سخاوتمندانهای دور محتوای هدف قرار گیرد.
نتایج جستجو نمیتوانند مستقیماً به Page.AddRedact(). یک ضربه از Page.SearchAnnotationText() متادیتای حاشیهنویسی را حمل میکند، نه هندسه صفحه — این همان شکل «the» نیست. rect an AddRedact() علامت انتظار دارد. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) نقطههای ورودی برای حذف-متن-جستجو هستند، و هر دو همچنین در «the» در دسترس هستند. Document سطح برای اسکن تمام صفحات در یک فراخوانی.
حذف متن بهطور غیرمنتظرهای پس از رمزنگاری باقی میماند. حذف متن و رمزنگاری عملیاتهای مستقلی هستند — حذفها را پیش از ذخیرهسازی با encrypt گزینهها اگر هدف هم حذف محتوا و هم محدود کردن دسترسی به آنچه باقی میماند باشد؛ اعمال به ترتیب مخالف، ذخیرهای که قبلاً رمزنگاری شده را بازنمیگرداند.
سوالات متداول
تفاوت علامتگذاری و اعمال یک حذف محتوا چیست؟
AddRedact() فقط یک حاشیهنویسی ایجاد میکند که محل برنامهریزی حذف محتوا را توصیف میکند — محتویات پوششدادهشده دستنخورده باقی میمانند و تا زمانی که ApplyRedactions() اجرا شود و صفحه را بهصورت مخرب بازنویسی کند، قابل انتخاب/کپی هستند.
آیا میتوانم با جستجوی متن بهجای تعیین یک مستطیل، محتوا را حذف کنم؟
بله — Page.MarkRedactText(find, opts) هر تطابق find را برای اعمال بعدی علامتگذاری میکند، و Page.RedactText(find, opts) در یک فراخوانی هم علامتگذاری میکند و هم اعمال میشود. هر دو همچنین در Document موجودند تا کل سند را اسکن کنند.
آیا ApplyRedactions() بر حاشیهنویسیهایی به جز علامتهای حذف تأثیر میگذارد؟
نه — این مورد جریان محتوا را زیر علامتهای RedactAnnotation خود بازنویسی میکند؛ انواع دیگر حاشیهنویسیها در صفحه توسط این فراخوانی دستنخورده میمانند.
آیا حذف قابل بازگردانی است؟
نه — ApplyRedactions() مخرب است. اگر محتویات بدون حذف بعداً نیاز به بازیابی داشته باشد، فایل اصلی را نگه دارید.