My table has 13 columns. How can I get different width for each column? Can I give each column width like this?
styles: {overflow: 'linebreak' ,columnWidth: [100,80,80,70,80,80,70,70,70,70,60,80,100]},
My table Syntax:
> var res = doc.autoTableHtmlToJson(document.getElementById(tableID));
> doc.autoTable(res.columns, res.data, { styles: {overflow: 'linebreak'
> ,columnWidth: [100,80,80,70,80,80,70,70,70,70,60,80,100]}, startY:
> 60, bodyStyles: {valign: 'top'}, });
You would have to transform your columnWidth array to look like this:
doc.autoTable({
html: '#table',
columnStyles: {
0: {cellWidth: 100},
1: {cellWidth: 80},
2: {cellWidth: 80},
// etc
}
});
Note the use of columnStyles
instead of styles
.
In previous release (1.3.4) it could have done like below:
var columns = [
{title: "Signum", dataKey: "signum"},
{title: "Name", dataKey: "name"},
{title: "Role", dataKey: "role"},
{title: "Location", dataKey: "location"}
]
But the latest one i.e. 2.3.2 requires the below format
doc.autoTable(colums,data,{
addPageContent:pageContent,
margin: {horizontal:5,top: 20},
startY: 0.47*doc.internal.pageSize.height,
styles: {overflow: 'linebreak'},
columnStyles: {
id: {columnWidth: 25},
name:{columnWidth:40},
role: {columnWidth: 15},
location: {columnWidth: 30}
}
});
This will fix only id, name, role, and location to the specified limits. Rest other headers will be adjusted accordingly by autotable.js
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With