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 } у об’єкт options |
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 у об’єкт options, щоб зберегти анотації, що перекривають редаговану ділянку, замість того, щоб видаляти їх разом із нею.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
Page.AddRedact() | Позначте прямокутну область за допомогою анотації /Redact, не видаляючи вмісту |
Page.ApplyRedactions() | Деструктивно видаліть усі позначені області на сторінці та поверніть кількість застосованих |
Page.Redact() | Одразу видаліть вміст у зазначених областях, без окремого кроку застосування |
Page.RedactText() | Знайдіть і одразу засекретіть кожен випадок пошукового рядка або RegExp |
Page.MarkRedactText() | Знайти та позначити (не застосовуючи) кожне входження рядка пошуку або RegExp |
Document.ApplyRedactions() | Застосувати кожну позначку /Redact у всьому документі |
Document.Redact() / Document.RedactText() | Одразу затирати ділянки на одній сторінці або пошуковий термін на всіх сторінках |
Document.MarkRedactText() | Позначити кожне входження пошукового терміну на всіх сторінках |