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