Дедупликация импортированных ресурсов в THotPDF

Переиспользует эквивалентные immutable-ресурсы, когда страницы копируются из одного или нескольких документов-источников в один и тот же документ назначения

Delphi syntax

function GetImportedResourceDedupStatistics(
  out Statistics: THPDFImportedResourceDedupStatistics): boolean;
procedure ClearImportedResourceDedupCache;

Описание

CopyPageFromDocument и связанные пути копирования графа создают канонические SHA-256 fingerprint для indirect ресурсов: image, Form XObject, Pattern, embedded font program, Font и ExtGState. Ключи dictionary упорядочиваются перед хешированием, indirect зависимости разрешаются, а содержимое stream хешируется без изменения его текущей позиции

Cache принадлежит документу назначения и остаётся доступным между копированиями страниц и между разными экземплярами документов-источников. Он автоматически очищается при начале нового документа или загруженного parse graph, а также при commit или rollback graph transaction

GetImportedResourceDedupStatistics возвращает число закешированных ресурсов, а также попадания и промахи cache. ClearImportedResourceDedupCache очищает и записи, и счётчики, не трогая объекты, уже присутствующие в документе назначения

Разделяются только indirect ресурсы. Словари страниц, annotation, content stream и произвольные изменяемые dictionary по-прежнему получают независимые копии

См. также CopyPageFromDocument