0.0.6 โข Published 5 months ago
@mdast2docx/table v0.0.6
@m2d/table
A plugin that converts Markdown tables into rich, styled Word tables with full alignment, border, and header support.
๐ฆ Installation
npm install @m2d/tablepnpm add @m2d/tableyarn add @m2d/table๐ Overview
The @m2d/table plugin for mdast2docx renders Markdown tables into Word-compatible tables with customizable layout, alignment, and cell styling using the docx library.
Automatically handles header rows, borders, shading, cell alignments, and padding โ all configurable.
โจ Features
- Transforms Markdown tables into
docx.Tableelements - Auto-detects column alignment from MDAST (
left,center,right) - Customizable:
- Table width and border styles
- Cell padding and shading
- Header row formatting
- Horizontal and vertical alignment
- Graceful fallback to defaults if MDAST alignment is missing
๐ ๏ธ Usage
import { toDocx } from "@m2d/core";
import { tablePlugin } from "@m2d/table";
const plugins = [tablePlugin()];
const buffer = await toDocx(mdastTree, {
plugins,
});โ๏ธ Options
The tablePlugin accepts an optional configuration object:
tablePlugin({
tableProps: { ... },
rowProps: { ... },
cellProps: { ... },
firstRowProps: { ... },
firstRowCellProps: { ... },
alignments: {
defaultHorizontalAlign: AlignmentType.CENTER,
defaultVerticalAlign: VerticalAlign.CENTER,
preferMdData: true,
},
});All options override the following sensible defaults:
Default Table Style
| Property | Default Value |
|---|---|
| Table Width | 100% (percentage) |
| Border Style | SINGLE, size 1 |
| Cell Padding | 2โ4mm margins (top/bottom/left/right) |
| Header Row | Bold with shaded background #b79c2f |
| Vertical Alignment | CENTER |
| Horizontal Alignment | Based on Markdown or CENTER fallback |
๐งช Example
Markdown Input
| Name | Age | City |
| :---: | :-: | --------: |
| Alice | 24 | New York |
| Bob | 30 | San Diego |Output DOCX
- The first row is treated as a header, with custom shading.
- Column alignment is preserved: center, center, right.
๐ Internals
- Leverages
docx.Table,docx.TableRow,docx.TableCell, anddocx.Paragraph - Dynamically maps Markdown alignment via
MDAST.align[] - Uses
@m2d/coreโs block plugin API - Prevents re-processing of transformed nodes by setting
node.type = ""
โ ๏ธ Limitations
- Does not support row/column spans
- MDAST source must conform to GFM tables
- Table styling is fixed to plugin options; no per-cell customization via Markdown yet
โญ Support Us
If you find this useful:
- โญ Star mdast2docx on GitHub
- โค๏ธ Consider sponsoring
๐งพ License
MIT ยฉ Mayank Chaudhari