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() удаляет содержимое в том же вызове, без отдельного шага применения.

Могу ли я выполнить redaction, используя поиск текста вместо указания координат?

Да. RedactText() находит и сразу же redacts каждое вхождение строки поиска или RegExp; MarkRedactText() делает то же самое, но только отмечает совпадения, оставляя их для последующего вызова ApplyRedactions().

Работает ли redaction по всему документу или только по одной странице за раз?

Оба варианта. Page.Redact() / Page.ApplyRedactions() и их сопутствующие работают на одной странице; Document.Redact() / Document.ApplyRedactions() и их сопутствующие работают на всех страницах.

Удаляются ли аннотации рядом с redacted областью тоже?

Только если вы их оставите. Передайте 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()Пометьте каждое вхождение поискового термина на всех страницах

См. также:

 Русский