PDFium Delphi Component Docs

GeneratePagedLayout Метод

Компонент: TPdf  ·  Модули: PDFium, FPdfLayout

Syntax

function GeneratePagedLayout(Layout: TPdfLayoutDocument; PagedPlan: TPdfLayoutPagedPlan; out Plan: TPdfLayoutPlan; AllowSignedDocument: Boolean = False): Boolean;

Description

Измеряет и разбивает макет на страницы, последовательно записывая каждую команду в хранилище с поддержкой позиционирования (seek), которым владеет PagedPlan или на которое он ссылается

После измерения метод материализует по одному массиву команд страницы за раз, выпускает эту страницу через те же собственные API объектов страницы PDFium, что и GenerateLayout, сбрасывает её, освобождает локальный массив и переходит к следующей странице

Storage and cache

Используйте выделенный TFileStream, TMemoryStream или TPdfRandomAccessStore; поток должен поддерживать seek, чтение, запись, изменение размера и монопольное использование на всё время жизни постраничного плана

MaxCommandCount, MaxStorageBytes, MaxPageCommands и MaxSourceCount отклоняют чрезмерные планы, а MaxCachedPages ограничивает внутренний LRU-кэш и может быть равен нулю

CommandCount, StorageByteCount, счётчики кэша и пиковая заполненность дают измеримое поведение

Result

Plan.Commands пуст по замыслу; настройки страниц, количество страниц, семантические элементы, счётчики содержимого, измерения и стабильные итоги ссылок на страницы остаются доступными

PagedPlan.MaterializePage может позднее восстановить полную страницу, включая тело плюс отдельно записанные сегменты колонтитулов

Limitations and safety

Этот метод формирует нетегированный макет; используйте GenerateTaggedLayout, когда требуется полный план команд в памяти с последующей обработкой дерева структуры

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

Любой упомянутый исходный PDF или TPdfLayoutCachedNode должен пережить генерацию и последующую материализацию, а для подписанных назначений требуется явная авторизация

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

See Also

GenerateLayout, GenerateTaggedLayout, FPdfLayout, Рабочее хранилище произвольного доступа