Ячейка и ее параметры

Рис. 8.1. Ячейка и ее параметры

Согласно объектной модели InDesign, таблица, любая строка или столбец, в сущности, представляют собой объект типа ячейки, в котором расположены другие ячейки. Соответственно, таблица есть не что иное, как набор ячеек, к которым исключительно для удобства можно обращаться как к строкам или столбцам.

При этом строкой будут считаться все ячейки, имеющие один и тот же индекс row index, а столбцом- column index. Если провести аналогию с текстом, то строки и колонки - такие же условности, как и, например, абзацы в тексте.

При создании таблицы можно сразу же задать количество строк и столбцов, при этом высота шапки (количество строк повторяющегося на других страницах заголовка) не учитывается и задается отдельно (headerRowCount).

InDesign поддерживает вложенные таблицы, т. е. таблицы, содержимым ячеек которых могут быть другие таблицы. Таким образом, сложность подобных конструкций может быть практически неограниченной.

Рассмотрим основные методы работы с таблицами.

8.1. Создание таблицы

Начнем с базовых операций - определения типа области выделения, способов обращения к ячейкам, задания параметров как отдельных ячеек, так и целой таблицы.

Предположим, стоит задача создать таблицу из двух колонок, ширина которой соответствует полосе набора текущего текстового фрейма. Строки должны иметь высоту 50 мм, по оформлению: первая строка- шапка, толщина окантовки - 0.5 пт, расстояние между текстом и окантовкой- I мм. Скрипт представлен в листинге 8.1.

Листинг 8.1. Создание таблицы

myDocument = app.activeDocument; mySelection = myDocument.selection[0] curr_para = mySelection.paragraphs[0]; myParagraphStyles = myDocument.paragraphStyles; pars = mySelection.paragraphs; parStylesTempArray = [];

for (i=2; i<myParagraphStyles.length; i++){ switch(myParagraphStyles[i].name){ case 'Normal':

parStylesTempArray['Normal'] = i; break;

if(mySelection.constructor.name - "InsertionPoint" || ^ mySelection.constructor.name == "Paragraph"){ curr_para. tables. add((columnCount: 2, bodyRowCount: 1, height:

"50 mm", width: mySelection. textFrames [0] .

geometricBounds[3]-mySelection.textFrames[0].geometricBounds[1]))

myTable = curr_para.tables[0] for(i=0; i< myTable.cells.length; i++){ with(myTable.cells[i]){ toplnset = "1 mm" bottomln'set = "1 mm" rightlnset = "1 mm" leftlnset = "1 mm"

leftEdgeStrokeWeight = "0.5 pt" topEdgeStrokeWeight = "0.5 pt" bottomEdgeStrokeWeight = "0.5 pt" rightEdgeStrokeWeight = "0.5 pt"

}

}

}

myTable.headerRowCount = 1

curr_para.appIyStyle(myParagraphStyles[parStylesTempArray ['Normal']], true); Сначала определяем ссылки на используемые объекты. Поскольку таблица вставляется туда, где стоит курсор, используем mySelection:

myDocument = арр.activeDocument;

myParagraphStyles = myDocument.paragraphStyles;

mySelection = myDocument.selection[0]

Соответственно для абзаца:

curr_para = mySelection.paragraphs[0]; pars = mySelection.paragraphs

Проверяем корректность типа выделенной области и, если все нормально, создаем таблицу. В нашем случае достаточно проверить, чтобы курсор находился в тексте либо абзац был выделен целиком:


⇐ вернуться назад | | далее ⇒