procedure TPdfLayoutDocument.AddCachedNode(Node: TPdfLayoutCachedNode; Height: Single = 0; Width: Single = 0);
BuildPlan кэширует полностью измеренный план по ограничениям страницы, содержимому элементов, шрифту, стилю, идентичности источника, зарезервированным цифрам страниц и TPdfLayoutMeasurer.CacheIdentity
Совпадающий вызов возвращается без повторного измерения текста и сообщает результат через CacheHitCount; изменившееся содержимое даёт CacheMissCount и заменяет снимок
Вызывайте InvalidateCache, чтобы освободить сохранённый снимок или когда собственный измеритель сохраняет одну идентичность, меняя поведение
Наследуйте от TPdfLayoutCachedNode и переопределите BuildContent, чтобы макет узла создавался только при первом размещении
Базовый узел можно также заполнить напрямую через Content
Вызывающий владеет каждым узлом и должен сохранять его живым до возврата GenerateLayout
Первое размещение рендерит один приватный одностраничный макет и создаёт один привязанный к назначению XObject с помощью FPDF_NewXObjectFromPage
Каждое повторное размещение создаёт лёгкий объект Form из того же XObject, а ReusedXObjectCount сообщает о числе избежанных сборок шаблона
Содержимое узла должно помещаться на одну страницу, размеры которой совпадают с заданными в конструкторе узла
Рекурсивные ссылки узлов отклоняются, а внешняя транзакция добавления откатывает все страницы, созданные вызовом
Вызывайте Invalidate, чтобы перестроить переопределённый ленивый узел после изменения его внешних входных данных