PurgeUnusedResources

Манипуляция документами, Оптимизация

Описание

Просматривает слои содержимого выбранной страницы и их транзитивные зависимости ресурсов, затем удаляет именованные ресурсы, на которые нет ссылок в применимой области ресурсов

Параметры по умолчанию рекурсивно проходят в Form XObjects, tiling patterns, глифы Type 3, appearances аннотаций и группы soft-mask, сохраняют цветовые пространства, на которые ссылаются изображения и другие ресурсы, удаляют устаревшие массивы /ProcSet и пустые категории ресурсов и собирают косвенные объекты, ставшие недостижимыми после очистки

Синтаксис

Delphi

Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString= '';
  Options: Integer= PDF_RESOURCE_PURGE_DEFAULT): Integer; Overload;
Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString;
  Options: Integer; Out Stats: TPDFlibResourcePurgeStats): Integer; Overload;

Параметры

PageRangeДиапазон страниц с отсчетом от 1 с тем же синтаксисом, что у других API диапазонов страниц, или пустая строка для всех страниц
OptionsПобитовая комбинация констант опций очистки ресурсов
StatsПринимает счетчики сканирования, безопасности, удаления и объектов-сирот

Опции

PDF_RESOURCE_PURGE_RECURSE_FORMSПросматривает упомянутые Form XObjects и учитывает их собственную или унаследованную область ресурсов
PDF_RESOURCE_PURGE_REMOVE_PROCSETУдаляет устаревшие массивы /ProcSet
PDF_RESOURCE_PURGE_REMOVE_EMPTYУдаляет пустые словари категорий ресурсов
PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWNДопускает очистку, когда поток содержимого содержит неизвестный оператор
PDF_RESOURCE_PURGE_DRY_RUNСообщает удаляемые именованные записи, не изменяя документ
PDF_RESOURCE_PURGE_GARBAGE_COLLECTСобирает косвенные объекты, ставшие недостижимыми после живой очистки
PDF_RESOURCE_PURGE_RECURSE_PATTERNSПросматривает содержимое и независимую область ресурсов упомянутых tiling patterns
PDF_RESOURCE_PURGE_RECURSE_TYPE3Просматривает каждый поток CharProc в упомянутых шрифтах Type 3, используя область ресурсов шрифта
PDF_RESOURCE_PURGE_RECURSE_APPEARANCESПросматривает потоки appearance аннотаций: обычные, rollover, down и именованных состояний
PDF_RESOURCE_PURGE_RECURSE_SOFT_MASKSПросматривает потоки групп прозрачности, на которые ссылаются словари soft-mask в ExtGState
PDF_RESOURCE_PURGE_SCAN_IMAGE_DEPENDENCIESИнспектирует image XObjects, явные маски, soft-mask изображения и альтернативные изображения на предмет вложенных зависимостей
PDF_RESOURCE_PURGE_RECURSE_DEPENDENCIESОбъединяет анализ зависимостей pattern, Type 3, appearance, soft-mask и изображения
PDF_RESOURCE_PURGE_DEFAULTОбъединяет весь анализ зависимостей, рекурсию Form, удаление ProcSet, удаление пустых категорий и сборку мусора

Возвращаемые значения

Живая очисткаЧисло удаленных именованных записей ресурсов
Dry runЧисло именованных записей ресурсов, которые можно удалить
0Нет удаляемых именованных записей, нет выбранных страниц или нет загруженного документа

Примечания

Сканирование распознает ссылки Font, XObject, ExtGState, ColorSpace, Pattern, Shading и Properties, включая пользовательские цветовые пространства в словарях встроенных изображений и косвенные зависимости, переносимые объектами ресурсов

Замыкание зависимостей охватывает цветовые пространства изображений и shadings, базы Indexed, альтернативы Separation и DeviceN, базовые пространства Pattern, альтернативы ICCBased, содержимое tiling patterns, все CharProcs Type 3, состояния appearance аннотаций, группы soft-mask в ExtGState, маски изображений, soft-mask изображения и альтернативные изображения

Имена PDF сопоставляются с учетом регистра, и все слои содержимого каждой выбранной страницы объединяются перед очисткой

Некорректные потоки и неизвестные операторы сохраняют свою полную область ресурсов, если не установлен PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWN

Общие и унаследованные словари ресурсов копируются до мутации, поэтому очистка остается локальной для выбранной страницы, Form, pattern, шрифта Type 3, appearance или группы soft-mask

Повторяющиеся потоки и записи зависимостей переиспользуют кэшированные результаты разбора, а пределы глубины и отслеживание активных потоков завершают некорректные циклы ресурсов

Отмена доступна через Abort из обработчика OnProgress

Пример

var
  Stats: TPDFlibResourcePurgeStats;
  Removed: Integer;
begin
  Removed:= PDF.PurgeUnusedResources('1-20',
    PDF_RESOURCE_PURGE_DEFAULT, Stats);
  PDF.SaveToFile('optimised.pdf');
end;

См. также

TPDFlibResourcePurgeStats, GarbageCollectObjects, OnProgress, Abort