Обмежене потокове компонування

HotPDF може розміщувати кожну завершену сторінку у файловому сховищі, застосовувати обмеження розривів сторінок для абзаців, відкривати обмежену діагностику компонування, позначати семантичні абзаци та артефакти нумерації і визначати базовий напрямок абзацу перед видачею тексту зі змішаним напрямком

Негайне вивантаження сторінок

Установіть ImmediateFlushLayout перед BeginDoc для звітів, кількість сторінок яких заздалегідь невідома

Коли сторінка закривається, їїній фінальний стиснений або нестиснений потік вмісту переміщується з пам'яті у власний потік тимчасового файлу, тоді як PDF-об'єкт залишається доступним для звичайного фіналізування перехресних посилань та ресурсів

ImmediateFlushedPageCount та ImmediateFlushedBytes повідомляють обсяг розміщеного вмісту, а тимчасові файли видаляються, коли потоки, що володіють ними, звільняються

Нумерація абзаців

ParagraphIndex := PDF.CreateParagraph(0, jtLeft, 36, 36, 36, 36);
PDF.ConfigureParagraphPagination(ParagraphIndex, True, 2, 2);
PDF.ConfigureParagraphDirection(ParagraphIndex, pdAuto);
PDF.BeginParagraph(ParagraphIndex);
PDF.CurrentParagraph.ShowUnicodeText(BodyText);
PDF.EndParagraph;

Діагностика компонування

THPDFLayoutDiagnostic записує THPDFLayoutDiagnosticKind, індекси вихідної та пов'язаної сторінок, прямокутник, що охоплюється, кількість рядків та англійську причину для кожного збереженого рішення

THPDFLayoutDiagnosticArray повертається GetLayoutDiagnostics, тоді як GetLayoutDiagnostic підтримує індексований доступ без виділення копії

LayoutDiagnosticLimit обмежує збережені записи, а LayoutDiagnosticDroppedCount повідомляє про рішення, відкинуті після цієї межі

Напрямок абзацу

THPDFParagraphDirection надає pdAuto, pdLeftToRight та pdRightToLeft

DetectParagraphDirection застосовує розв'язання за першим сильним символом у сценаріях RTL площини BMP та додаткової площини, тож нейтральні префікси та вторинні напрямлені проходи не обирають хибний базовий напрямок

Використовуйте ConfigureParagraphDirection для постійного налаштування абзацу або властивість THPDFPara.Direction для активного абзацу

Семантика абзаців PDF/UA

Root := PDF.AddStructureElement('Document', nil);
Paragraph := PDF.BeginTaggedParagraph(Root, 'en-US', 'Accessible text');
PDF.CurrentPage.TextOut(36, 72, 0, WideString('Accessible text'));
PDF.EndTaggedParagraph;

PDF.BeginPaginationArtifact(pasHeader);
PDF.CurrentPage.TextOut(36, 20, 0, WideString('Running header'));
PDF.EndPaginationArtifact;

BeginTaggedParagraph видає стандартну послідовність маркованого вмісту /P із виділеним MCID, прив'язкою до батьківського дерева сторінки та необов'язковими значеннями /Lang і /ActualText

THPDFPaginationArtifactSubtype надає pasHeader, pasFooter, pasWatermark та pasPageNumber, що видаються як вміст /Artifact із /Type /Pagination та відповідним стандартним підтипом

Пов'язані API