THotPDF.ScrubLoadedRedactionRemnants

Окончательно удаляет остатки частных данных и недостижимые объекты после redaction загруженного документа

Синтаксис Delphi

function ScrubLoadedRedactionRemnants(
  out Report: THPDFSanitiseReport): Boolean;

Описание

Метод применяет профиль санитаризации spRedactionCleanup ко всему загруженному графу объектов

Он удаляет аннотации Redact и вложения файлов, словарь сведений о документе из trailer, XMP-метаданные Catalog и страниц, частные метаданные /PieceInfo, деревья имён встроенных файлов, сопутствующие файлы, portfolios и их отсоединённые потоки полезных нагрузок

Затем защищённый от циклов проход по достижимости удаляет каждый косвенный объект, который больше не достижим из Catalog, включая неиспользуемые шрифты, шрифтовые программы, изображения, Form XObjects, потоки метаданных, аннотации и объекты полезных нагрузок. Номера живых объектов уплотняются за линейное время

Метод отключает инкрементальное сохранение и заставляет следующее сохранение загруженного документа выполнить полную перезапись, так что удалённые байты не смогут остаться в более ранней ревизии

Не затронутые очисткой действия, содержимое страниц, навигация, формы и аннотации сохраняются. Если нужно удалить и активное содержимое, используйте SanitiseLoadedDocument

Отчёт

Поля MetadataEntriesRemoved, RedactAnnotationsRemoved, EmbeddedFilesRemoved, PayloadStreamsRemoved, UnreachableObjectsRemoved и PriorRevisionBytesDiscarded дают телеметрию очистки

Пример

var
  Report: THPDFSanitiseReport;
begin
  PDF.LoadFromFile('redacted-source.pdf');
  PDF.ApplyLoadedRedactions;
  if not PDF.ScrubLoadedRedactionRemnants(Report) then
    raise Exception.Create('Redaction cleanup was rejected');
  PDF.SaveLoadedDocument('redacted-final.pdf');
end;

См. также ApplyLoadedRedactions и Санитаризация загруженного документа