PDFium Delphi Component Docs

Обход структуры и кэш

Компонент: TPdf  ·  Модуль: PDFium
Чтение тегированной структуры PDF порциями либо повторное использование полных зависящих от редакции снимков страниц

ReadStructureElements

function ReadStructureElements(PageNumber: Integer; const Options: TPdfStructureReadOptions; out Status: TPdfStructureReadStatus): TPdfStructureElements;

Использует итеративный обход в прямом порядке и возвращает подготовленный для вызывающего кода плоский снимок со стабильными значениями Level и ParentIndex

Каждая запись TPdfStructureElement дополнительно сообщает иерархические факты через MarkedContentIDs, ChildCount, ChildMarkedContentIDs и AttributeCount, табличную структуру через HasHeaders, HeadersIds и ColSpan, а также служебные признаки печати и ссылок HasPrintField и HasReference

Отображение ролей доступно через RoleMappedNamespaceUri и RoleMappedTypeName, связанные файлы — через HasAssociatedFile, AssociatedFileRelationship, AssociatedFileDescription, AssociatedFileDeclaredInCatalog, AssociatedFileDeclaredInStructure, AssociatedFileInEmbeddedFilesNameTree, AssociatedFileHasReadingOrder и AssociatedFileReadingOrderIndex, а факты аннотаций — через AnnotationSubtype, AnnotationContents, AnnotationAlternateText, IsArtifact, признаки виджетов WidgetCount и HasAppearance, а также FieldAlternateName

MaxDepth, MaxElements, MaxAttributeValues и DeadlineMilliseconds ограничивают нативную работу и управляемые выделения памяти

IncludeAttributes=False сохраняет структурный текст, иерархию и MCID, но пропускает материализацию значений атрибутов

Status.Completed равно false, когда исчерпан любой бюджет, истёк дедлайн или посетитель остановил обход

Status.ElementsVisited и Status.AttributeValuesVisited подсчитывают выполненную работу, а Status.DepthLimitReached, Status.ElementLimitReached, Status.AttributeLimitReached и Status.DeadlineReached указывают, какой бюджет остановил проход

VisitStructureElements

function VisitStructureElements(PageNumber: Integer; const Options: TPdfStructureReadOptions; Visitor: TPdfStructureElementVisitor; out Status: TPdfStructureReadStatus): Integer;

Вызывает Visitor один раз для каждого элемента, не выделяя полный массив страницы

Присвойте параметру обратного вызова KeepGoing значение false для обычной ранней остановки, о которой сообщает Status.VisitorStopped

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

StructureElementsForPage

property StructureElementsForPage[PageNumber: Integer]: TPdfStructureElements; // read only

Читает любую страницу по индексу с единицы, не меняя PageNumber и не вызывая OnPageChange

Полные результаты с бюджетами по умолчанию попадают в общий LRU-кэш, которым пользуются StructureElements, TPdfView.StructureElements, читаемое содержимое, reflow, структурированный текст и проверка доступности

Вложенные динамические массивы и блоки атрибутов копируются глубоко, поэтому изменение возвращённого снимка не может модифицировать кэш или PDF

StructureCacheCapacity

property StructureCacheCapacity: Integer; // read and write, default 8

Ограничивает число полных снимков страниц, удерживаемых в порядке LRU (наименее недавно использовавшихся)

Присвойте ёмкости нуль, чтобы освободить кэшированные снимки и отключить дальнейшее кэширование

Отрицательные значения ёмкости возбуждают EPdfError

StructureCacheCount

property StructureCacheCount: Integer; // read only

Возвращает текущее число действительных снимков страниц

StructureCacheHitCount and StructureCacheMissCount

property StructureCacheHitCount: Int64; // read only
property StructureCacheMissCount: Int64; // read only

Раскрывают накопительную телеметрию обращений для экземпляра компонента

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

Default budgets

MaxDepth256
MaxElements100000
MaxAttributeValues100000
DeadlineMilliseconds0 — без дедлайна
IncludeAttributesTrue

See Also

StructureElements, ReadableContent, ValidatePdfUaStructureElements