PDFium Delphi Component Docs

SaveAsSanitised Метод

Компонент: TPdf  ·  Модуль: PDFium
Записывает чистую копию с одной ревизией через ограниченные обновления каталога и trailer, затем обрезает недостижимые объекты, так что осиротевшие тела JavaScript, действий, вложений и метаданных исчезают из тела файла

Syntax

function SaveAsSanitised(Stream: TStream;
  const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport): Boolean; overload;

function SaveAsSanitised(const FileName: string;
  const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport): Boolean; overload;

Description

SaveAsSanitised создаёт очищенную копию PDF с одной ревизией, удаляющую векторы активного содержимого из каталога документа, а затем опционально выполняет обрезку по достижимости, устраняющую осиротевшие объекты из тела файла

Двухэтапный конвейер сначала вырезает записи каталога (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) через StripDictionaryEntries в виде инкрементального обновления, затем запускает PruneUnreachablePdfStream, который перезаписывает файл как одну чистую классическую ревизию

Обновление каталога и trailer использует разреженный поиск по xref, окна парсера не крупнее 1 МиБ и копирование диапазонами по 64 КиБ на обычном пути xref вместо материализации всего сохраняемого PDF в одном массиве байтов

Когда обрезка включена, промежуточное рабочее пространство — это TPdfRandomAccessStore, управляемый SaveMemoryLimit и SaveTemporaryDirectory Его пиковая память и состояние переноса на диск учитываются в LastSaveLargestMemoryBuffer и LastSaveSpillCount

Каждый флаг вырезания независим TPdfSanitiseOptions.Default включает полный профиль безопасности: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles плюс обрезка RemoveUnreachable. StripAcroForm и StripMetadata по умолчанию False, поскольку они удаляют поля форм и метаданные, которые вызывающий код может хотеть сохранить

Вывод всегда является единственной ревизией без инкрементальной истории, когда RemoveUnreachable=True

Parameters

Remarks

Example

var
  Options: TPdfSanitiseOptions;
  Report: TPdfSanitiseReport;
begin
  Pdf1.FileName := 'C:\Untrusted.pdf';
  Pdf1.Active := True;
  Options := TPdfSanitiseOptions.Default;
  Pdf1.SaveAsSanitised('C:\Sanitised.pdf', Options, Report);
end;

See Also

SaveAsReachable, SaveAs, AuditActiveContent