github: 08_table.py
from appscript import *
def add_CYMK_color(doc, values: list, name: str):
# add a CMYK color to document
return doc.make(new=k.color,
with_properties={
k.model: k.process,
k.space: k.CMYK,
k.color_value: values,
k.name: name
})
indd = app("Adobe InDesign CC 2019")
doc = indd.make(new=k.document)
page1 = doc.pages[1]
# 属性付き新しいtextFrameを追加
tf = page1.make(new=k.text_frame,
with_properties={
k.contents: "",
k.geometric_bounds: [20, 20, 200, 150]
})
tf.insertion_points[1].contents.set("This is a table:")
# 10行*3列の表組を追加
tbl = tf.make(new=k.table, with_properties={
k.body_row_count: 10,
k.column_count: 3
})
rows = tbl.body_row_count()
columns = tbl.column_count()
print("rows: ", rows) # 10
print("columns: ", columns) # 3
#
red_color = add_CYMK_color(doc, [0, 100, 100, 0], "red")
cyan_color = add_CYMK_color(doc, [100, 0, 0, 0], "cyan")
# セル全体に番号振る
tbl.contents.set([str(i) for i in range(rows * columns)]) # 0~29
# tbl.rows[1].contents.set(["a", "b", "c"])
# 行/列の高さ/幅を指定、高さ(最小限度値をOFFに)
tbl.columns[1].width.set(20)
tbl.columns[-1].width.set(30)
tbl.rows[1].height.set(10)
tbl.rows[2].auto_grow.set(False)
# 線幅と色
tbl.top_border_stroke_weight.set(1)
tbl.top_border_stroke_color.set(red_color)
tbl.properties_.set({
k.bottom_border_stroke_weight: 1,
k.bottom_border_stroke_color: cyan_color
})
#
# 行/列を削除
# tbl.rows[1].delete()
# tbl.columns[-1].delete()
# cells
cells = tbl.cells() # all cells in table
# セルの枠と色
for cell in cells:
cell.properties_.set({
k.left_edge_stroke_weight: 0.1,
k.right_edge_stroke_weight: 0.1
})
# 行に色追加
for r in range(0, rows, 2):
for c in range(columns):
cells[r * columns + c].properties_.set({
k.fill_color: cyan_color,
k.fill_tint: 20 # 0-100
})
# 揃えを指定
cells[0].vertical_justification.set(k.center_align)
cells[0].paragraphs[1].justification.set(k.center_align)
# セルの結合
cells[1].merge(with_=cells[4]) # merge two cells
cells[-1].merge(with_=cells[-5]) # merge four cells
# セルのアウトライン化
cells[10].create_outlines(cells[10], delete_original=True)
cells[11].create_outlines(cells[11].characters[1], delete_original=True)