Визуальная диагностика layout

HotPDF умеет удерживать ограниченный объём решений layout, обнаруживать перекрытия размещённых элементов, рисовать native векторные overlay, присоединять переданные вызывающим кодом координаты в исходниках и публиковать синхронные уведомления предпросмотра

Безопасные значения по умолчанию

THPDFLayoutDiagnosticOptions.Default удерживает пути элементов, а фиксация координат в исходниках, обнаружение перекрытий, PDF overlay и live callbacks по умолчанию выключены

Ни имя исходного файла, ни содержимое overlay не попадут в сгенерированный PDF, пока соответствующая опция не включена явно

Включение визуальной диагностики

Options := THPDFLayoutDiagnosticOptions.Default;
Options.CaptureSourceLocation := True;
Options.DetectOverlaps := True;
Options.DrawOverlays := True;
Options.LivePreview := True;
PDF.LayoutDiagnosticOptions := Options;
PDF.OnLayoutDiagnostic := HandleLayoutDiagnostic;

Element.SetDiagnosticSource('invoice_layout.pas', 73, 9);

SetDiagnosticSource сохраняет опциональные файл, строку и столбец в THPDFLayoutElement; ClearDiagnosticSource удаляет эту привязку

Декларативные продолжения layout копируют привязку, чтобы точка вызова оставалась стабильной при разрыве на страницы

Записи диагностики

THPDFLayoutDiagnostic содержит ElementPath, RelatedElementPath, SourceFile, SourceLine и SourceColumn в дополнение к странице, прямоугольнику, числу строк, типу и причине

ldkOverlap обозначает пересечение двух успешно размещённых элементов, а ldkOverflow — элемент, который не поместился в отведённые границы

Векторные overlay и live preview

Прямоугольники переполнения рисуются красным контуром, прямоугольники перекрытий — оранжевым, а подписи включаются опцией ShowOverlayLabels

Overlay — это native PDF-пути и текст, а не растровые изображения

THPDFLayoutDiagnosticEvent получает каждую удержанную диагностическую запись синхронно после опциональной отрисовки overlay, когда включён LivePreview

Бюджеты и статистика

MaxTrackedBounds ограничивает удерживаемые прямоугольники размещения, а MaxOverlapComparisons — объём работы по проверке пересечений за интервал диагностики

THPDFLayoutDiagnosticStatistics сообщает удержанные и отброшенные диагностические записи, отслеженные и отброшенные границы, сравнения и находки перекрытий, нарисованные overlay и live-уведомления

ClearLayoutDiagnostics сбрасывает записи, отслеживание размещения и все связанные счётчики

Связанные API