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

SanitiseLoadedDocument применяет выбранную политику безопасности ко всему загруженному графу объектов и подготавливает компактную полную перезапись

Профили

ПрофильУдаляемый контент
spJavaScriptOnlyName tree JavaScript документа и JavaScript action
spActiveContentJavaScript плюс launch, удалённая навигация, URI, submission, import, multimedia, rendition, XFA и связанные записи активного контента
spUntrustedDocumentВесь активный контент плюс embedded files, associated files, аннотации file-attachment, структуры полезной нагрузки rich-media и неизвестные типы action, найденные в слотах с action
spRichMediaOnlyАннотации rich-media и их отсоединённые потоки полезной нагрузки
spRedactionCleanupАннотации redact и file-attachment, информация о документе, метаданные, associated и embedded files и каждый объект, ставший недостижимым из-за этих удалений

Объявление

function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile;
  out Report: THPDFSanitiseReport): Boolean; overload;
function SanitiseLoadedDocument(
  out Report: THPDFSanitiseReport): Boolean; overload;

Перегрузка без профиля использует spUntrustedDocument

Отчёт о результате

THPDFSanitiseReport подсчитывает удалённые действия, записи JavaScript, встроенные файлы, рискованные аннотации, записи XFA, потоки полезных нагрузок, отсоединённые ссылки, недостижимые объекты и посещённые объекты

Changed указывает, изменился ли граф объектов, тогда как LimitExceeded и InvalidObjectGraph поясняют отклонённый предпроверкой прогон

Безопасность и производительность

Пример

var
  Report: THPDFSanitiseReport;
begin
  PDF.LoadFromFile('untrusted.pdf');
  if not PDF.SanitiseLoadedDocument(spUntrustedDocument, Report) then
    raise Exception.Create('Document sanitisation was rejected');
  PDF.SaveLoadedDocument('sanitised.pdf');
end;

Примечания по использованию

Связанные API