| Type | Values or purpose |
|---|---|
EPdfLayoutError | Исключение для некорректного ввода вёрстки, превышенных лимитов и несогласованной семантической структуры |
TPdfLayoutAlignment | plaLeft, plaCenter, plaRight |
TPdfLayoutCommandKind | plcText, plcRule, plcImage, plcPageXObject, plcCachedNode, plcLink, plcRectangle |
TPdfLayoutItemKind | pliText, pliSpacer, pliRule, pliImage, pliPageXObject, pliPageBreak, pliCachedNode, pliLink, pliSemanticNode, pliTable |
TPdfLayoutSemanticRole | plsrArtifact, plsrParagraph, plsrHeading1, plsrHeading2, plsrHeading3, plsrHeading4, plsrHeading5, plsrHeading6, plsrList, plsrListItem, plsrListLabel, plsrListBody, plsrTable, plsrTableRow, plsrTableHeader, plsrTableData, plsrFigure, plsrCaption, plsrLink, plsrSection, plsrDivision |
TPdfLayoutTableScope | pltsNone, pltsRow, pltsColumn, pltsBoth |
TPdfLayoutListNumbering | plnNone, plnDisc, plnCircle, plnSquare, plnDecimal, plnUpperRoman, plnLowerRoman, plnUpperAlpha, plnLowerAlpha |
TPdfLayoutGridTrackKind | plgtkFixed, plgtkFraction, plgtkAuto |
TPdfMarkupFormat | pmfMarkdown, pmfHtml |
| Type | Public members |
|---|---|
TPdfLayoutSemantics | Role, ParentID, ElementID, AlternateText, ActualText, Language, HeaderIDs, TableScope, ColumnSpan, RowSpan, ListNumbering, Artifact, Paragraph, Figure |
TPdfLayoutTextStyle | FontName, FontSize, Color, Alpha, LineHeight, Alignment, KeepTogether, BreakLongWords, SpaceBefore, SpaceAfter, Default |
TPdfLayoutConstraints | KeepTogether, KeepWithNext, PageBreakBefore, PageBreakAfter, OrphanLines, WidowLines, Default |
TPdfLayoutPageSettings | Width, Height, MarginLeft, MarginTop, MarginRight, MarginBottom, HeaderHeight, FooterHeight, A4, Letter |
TPdfLayoutRect | Left, Top, Width, Height |
TPdfLayoutGridTrack | Kind, Value, Minimum, Maximum, MeasuredContent |
TPdfLayoutGridTracks | Динамический массив TPdfLayoutGridTrack |
TPdfLayoutGridSizes | Динамический массив вычисленных размеров дорожек |
TPdfLayoutTableOptions | CellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, AllowRowSpanContinuation, MaxContinuationRegions, ContinuationBefore, ContinuationAfter, ContinuationStyle, Default |
TPdfLayoutTableTextRun | Text, Style |
TPdfLayoutTableTextRuns | Динамический массив TPdfLayoutTableTextRun |
TPdfMarkupOptions | BaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default |
TPdfLayoutSemanticElement | Semantics, ParentElementIndex |
TPdfLayoutSemanticElements | Динамический массив TPdfLayoutSemanticElement |
TPdfLayoutCommand | Kind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex |
TPdfLayoutCommands | Динамический массив TPdfLayoutCommand |
TPdfLayoutPlan | PageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap |
| Type | Public members |
|---|---|
TPdfLayoutMeasurer | MeasureTextWidth, CacheIdentity |
TPdfLayoutItem | Kind |
TPdfLayoutTableCell | Text, Uri, Style, AddTextRun, TextRuns, SetImage, ColumnSpan, RowSpan, Header, ElementID, HeaderIDs, Scope |
TPdfLayoutTableRow | AddCell, Cells, Header, AllowSplit, MinimumHeight, KeepWithPrevious |
TPdfLayoutTable | Create, Destroy, AddRow, AddSubtotalRow, SetCaption, Columns, Rows, Options, Caption, CaptionStyle, ElementID, ParentID |
TPdfLayoutPagedPlan | Create, Destroy, ClearPageCache, MaterializePage, Reset, Summary, CommandCount, StorageByteCount, SourceCount, Completed, бюджеты MaxCommandCount, MaxStorageBytes, MaxPageCommands, MaxSourceCount и MaxCachedPages, а также статистика кэша CachedPageCount, CacheHitCount, CacheMissCount и PeakCachedPageCount |
TPdfLayoutDocument | Create, Destroy, Clear, AddText, AddSpacer, AddRule, AddImage, AddPageXObject, AddCachedNode, AddLink, AddSemanticNode, SetLastItemSemantics, SetLastItemConstraints, AddTable, AddPageBreak, LoadMarkup, InvalidateCache, BuildPlan, BuildPagedPlan, PageSettings, HeaderText, FooterText, HeaderStyle, FooterStyle, ReservedPageDigits, ColumnCount, ColumnGap, Items |
TPdfLayoutCachedNode | Create, Destroy, Invalidate, BeginEmission, EndEmission, Content, Width, Height, Built |
Вызывайте SetLastItemConstraints после добавления любого видимого элемента потока, чтобы удержать его целиком, привязать к началу следующего элемента или принудительно разорвать страницу до или после него
OrphanLines — минимальное число строк абзаца, удерживаемых внизу области, а WidowLines — минимум, размещаемый вверху следующей области; обе по умолчанию равны единице, чтобы сохранить существующую разбивку на страницы
Ограничения одинаково применяются к элементам ролей абзаца, ссылки, списка, рисунка и таблицы, а чисто семантические контейнеры не имеют геометрии и потому отклоняют ограничения разбивки
Элемент pliTable принимает только PageBreakBefore и PageBreakAfter; разрыв строк и удержание начала таблицы управляются табличной моделью
Планировщик кэширует перенесённые строки во время построения, поэтому предсказание keep-with-next и финальная выдача команд не измеряют один и тот же текст дважды
Создайте TPdfLayoutPagedPlan над отдельным перемещаемым и изменяемым по размеру TStream, затем вызовите BuildPagedPlan или передайте его в TPdf.GeneratePagedLayout
Планировщик сериализует команды немедленно, освобождает каждый завершённый результат переноса текста и оставляет Plan.Commands пустым, сохраняя настройки страниц, семантические элементы, счётчики и стабильные итоги страниц в сводке
Команды тела и последующие команды колонтитулов индексируются как связанные сегменты страниц, поэтому MaterializePage восстанавливает полную страницу без просмотра команд других страниц
MaxCachedPages ограничивает только массивы страниц, удерживаемые планом; вызывающий код, сохраняющий возвращённые массивы, продлевает их время жизни, а PDFium удерживает нативные созданные страницы, пока целевой документ не сохранён или не закрыт
Формат хранения — частное состояние сеанса, а не переносимый файловый формат, поток нельзя разделять или изменять извне, а исходные объекты, на которые ссылаются XObjects страниц или кэшированные узлы, должны переживать постраничный план
Используйте TPdfRandomAccessStore, когда команды должны оставаться в памяти до выбранного порога, а затем вытесняться во временное хранилище с удалением при закрытии
Создайте TPdfLayoutTable с фиксированными, дробными или размеренными по содержимому дорожками сетки, добавьте строки и ячейки, затем вызовите AddTable; документ хранит собственный снимок, поэтому последующие изменения со стороны вызывающего кода не могут инвалидировать существующий кэш плана
Строки заголовков должны быть непрерывны в начале таблицы и повторяются после перехода страницы или колонки, когда RepeatHeaderRows истинно; объединения строк заголовков не могут распространяться на строки тела
Строка тела может разрываться, когда AllowSplit истинно; по умолчанию транзитивные группы с объединением строк перемещаются как единое атомарное целое, а ячейки обычной разорванной строки имеют одну полосу строк, отступы и геометрию границ
Установите AllowRowSpanContinuation в True, чтобы группа с объединением строк продолжалась через страницы или колонки; планировщик распределяет дополнительную высоту объединения по её строкам и выбирает разрезы, не пересекающие ни строку текста, ни изображение
AllowSplit=False остаётся ограничением атомарной строки; несовместимые ограничения строк или атомарный блок, не помещающийся в свежую область, возбуждают EPdfLayoutError вместо обрезки или повторения содержимого
Подписи остаются с исходным блоком заголовков и минимальным началом первой группы тела; повторяемые заголовки переиспользуют те же исходные элементы заголовков
Планировщик выдаёт один элемент Table, необязательную Caption, дочерние TR и ячейки TH или TD независимо от количества страниц; повторяемые команды заголовков повторно используют исходные семантические индексы, а ячейки TD автоматически получают перекрывающиеся идентификаторы заголовков, если явно не переданы корректные идентификаторы
Границы таблицы — команды артефактов plcRectangle, отображаемые через нативные объекты путей PDFium, а текст подписи и ячеек остаётся tagged-содержимым
AddTextRun дописывает встроенный текст после исходного Text ячейки; у каждого прогона свой шрифт, размер шрифта, цвет, альфа, высота строки и политика переноса длинных слов
Смешанный текст переносится по измеренным ширинам, сохраняет суррогатные пары UTF-16 при переносе длинного слова и выдаёт отдельные нативные текстовые объекты с общей базовой линией; горизонтальное выравнивание берётся из базового Style ячейки
Интервалы абзацев и флаги удержания на уровне прогона не создают дополнительных блоков абзацев; используйте отдельные строки или обычные элементы вёрстки, когда такие ограничения нужны
SetImage настраивает одно изображение из файла на ячейку, размещаемое над её текстом по левому отступу; повторный вызов заменяет это изображение
Передайте явную положительную высоту и ширину, помещающуюся во внутреннюю ширину ячейки; ширина ноль использует всю внутреннюю ширину, а соотношение сторон изображения вызывающий код задаёт через переданные размеры
Изображение неделимо при продолжении и выдаётся один раз на исходной позиции; его файл должен оставаться доступным до генерации, а отсутствующий файл или неподдерживаемое изображение заставляют генерацию откатить добавленные страницы
Требуется непустое альтернативное описание; изображение становится дочерним Figure своей исходной ячейки TH или TD, а все текстовые фрагменты остаются связаны с этой ячейкой
Между страницами исходная ячейка TH или TD получает ссылки continued marked-content и сохраняет свои RowSpan, ColumnSpan и связи заголовков; дублирующая логическая ячейка не создаётся
AddSubtotalRow создаёт атомарную строку тела, используя метку, форматированное значение и стиль вызывающего кода; при нескольких колонках метка охватывает все, кроме последней колонки значений
Помощник устанавливает KeepWithPrevious=True, чтобы подытог не оказался изолированной первой строкой на продолжении; значения передаёт вызывающий код, и числовая агрегация не выполняется
ContinuationAfter показывается в конце продолжающейся области, а ContinuationBefore — после любых повторяемых заголовков в следующей области
Обе метки по умолчанию пусты, используют ContinuationStyle, должны помещаться в одну строку и резервируют собственную высоту; у первой области нет метки before, а у последней — метки after
Метки и границы — артефакты, поэтому семантическая иерархия таблицы не меняется; заполнители страниц вроде {page} и {pages} используют обычный распознаватель текста вёрстки
procedure TPdfLayoutTableCell.AddTextRun(const Text: WideString; const Style: TPdfLayoutTextStyle); procedure TPdfLayoutTableCell.SetImage(const FileName: string; Width, Height: Single; const AlternateText: WideString); function TPdfLayoutTable.AddSubtotalRow(const LabelText, ValueText: WideString; const Style: TPdfLayoutTextStyle): TPdfLayoutTableRow;
Используйте TPdfLayoutTableOptions.Default перед переопределением параметров; AllowRowSpanContinuation по умолчанию False, а MaxContinuationRegions — 10 000 страничных или колоночных областей при настраиваемом потолке 100 000
Таблицы сохраняют лимиты в 256 колонок, 100 000 строк и 100 000 семантических элементов; суммарный текст ячеек ограничен 8 000 000 кодовых единиц UTF-16
Ячейка со смешанным текстом принимает не более 1 024 добавленных прогонов, 1 000 000 кодовых единиц UTF-16, 100 000 строк и 100 000 фрагментов; отдельный символ или слово с отключённым переносом длинных слов, превышающее доступную ширину, отклоняется
Продолженная группа строк ограничена 10 000 ячейками; бюджеты областей и ограниченные поиски разрезов предотвращают неограниченную разбивку, а изображения должны помещаться в доступную область тела после заголовков, меток и отступов
Собственный снимок таблицы и кэш плана включают стили прогонов, размеры изображений, альтернативный текст, удержание подытогов и настройки продолжения; последующие изменения таблицы вызывающего кода не меняют этот снимок
| Routine | Description |
|---|---|
ResolveLayoutText | Разворачивает заполнители номеров страниц с учётом зарезервированной ширины в цифрах |
PdfLayoutSemanticRoleName | Возвращает имя структуры Tagged PDF для семантической роли |
BuildTaggedLayoutPdf | Применяет завершённый план вёрстки и tagged-структуру к исходным байтам PDF |
ResolvePdfLayoutGridTracks | Вычисляет фиксированные, дробные и размеренные по содержимому дорожки сетки в пределах доступной ширины |