function ExtractTables(
const Options: TPdfTableExtractionOptions): TPdfTables;
Стратегия с линиями разметки преобразует собственные штриховые сегменты путей в координаты страницы, выделяет связные сетки и объединяет смежные базовые ячейки, когда локальный разделитель отсутствует
С DetectFilledRulings та же стратегия читает и залитую геометрию: залитый прямоугольник толщиной не более MaxRulingThickness становится одной линией вдоль своей длинной оси, а больший залитый прямоугольник, например затенённая ячейка, отдаёт свои четыре края. Затем каждая координата линии подтягивается в пределах RulingSnapTolerance, так что куски границ по ячейкам, двойные рамки и затенённые ячейки с небольшим зазором соединяются в одну сетку. Текстовые процессоры и браузеры рисуют таблицы именно так, поэтому они сообщаются как сетки с линиями разметки, а не как фрагменты по пробелам. IncludeFormXObjects обходит формовые XObject с их комбинированными матрицами
Стратегия по пробелам группирует собственные блоки слов в визуальные строки и требует повторяющихся выровненных якорей столбцов на нескольких строках Слова, уже лежащие внутри обнаруженной сетки с линиями разметки, исключаются, и каждая граница столбца должна быть вертикальным коридором, свободным от текста во всех строках, у которых есть содержимое по обе стороны, — благодаря этому выровненные по ширине абзацы не сообщаются как таблицы
Каждый TPdfTable включает границы страницы, RowCount и количество столбцов, DetectionMode, достоверность и значения TPdfTableCell с текстом, границами, состоянием IsHeader, RowIndex, ColumnIndex, RowSpan и ColumnSpan
TPdfTable.ToCsv выдаёт поля в кавычках в стиле RFC 4180 и оставляет покрытые позиции span пустымиTPdfTable.ToJson выдаёт текст Unicode, геометрию, span'ы, достоверность, режим обнаружения и метаданные продолженийMinRows, MinColumns, AlignmentTolerance, RulingTolerance, MinColumnGap, MaxRowGapFactor и MinConfidence управляют обнаружением; MinRows может равняться 1 для сеток с линиями разметки, тогда как обнаружение по пробелам всегда требует минимум две строки
DetectFilledRulings, MaxRulingThickness, RulingSnapTolerance и IncludeFormXObjects настраивают путь залитой геометрии; значения по умолчанию — включено, 3 пункта, 4 пункта и включено
MaxWords, MaxRulingSegments, MaxCells и MaxTables срабатывают по принципу fail-closed до неограниченной работы или выделения памяти
var
Options: TPdfTableExtractionOptions;
Tables: TPdfTables;
begin
Options := TPdfTableExtractionOptions.Default;
Tables := Pdf1.ExtractTables(Options);
if Length(Tables) > 0 then
Memo1.Text := Tables[0].ToCsv;
end;