API reference / Common / Engine types / TableBorder
Interface: TableBorder
One edge's stroke, as both dialects spell it.
The two are different types in the schema and neither is a subset of the other, so the model keeps both halves rather than flattening to what they share:
lineisDrawingML'sa:ln(CT_LineProperties) — width, cap, compound, pen alignment, a full fill as the stroke paint, preset or custom dash, join.borderis wordprocessing'sw:border(CT_Border) — a line pattern, a width in eighths of a point, a color, and the@space/@shadowthat have noa:lncounterpart.
A given edge comes from exactly one dialect, so the halves never contradict: the pptx importer fills line and leaves border None; the docx importer fills border and mirrors its width and color onto line so a consumer that only wants a stroke has one. Reducing both to a common { style, color, width } — what the old engine did — is what loses pptx's compound lines, gradient stroke fills, and cap/join.
A pptx table style states its edges differently again — as CT_ThemeableLineStyle, which may name a theme entry instead of a stroke — so those live in TableCellBorderStyle and reach this type only once the cascade has bound them.
Properties
| Property | Description |
|---|---|
linePaintLine | a:lnL / a:lnR / a:lnT / a:lnB … — the DrawingML stroke. |
border?PaintBorder | w:top / w:start / … — the wordprocessing border, when the edge came from docx. None for a DrawingML edge, whose @cmpd and a:prstDash say what @w:val would. |