pdfkit-table
Generate pdf tables with javascript (PDFKIT plugin)
Helps to draw informations in simple tables using pdfkit. #server-side.
Examples
view pdf example |
full code example |
both
Start
npm install pdfkit-table
Use
const fs = require("fs");
const PDFDocument = require("pdfkit-table");
const doc = new PDFDocument({ margin: 30, size: 'A4' });
doc.table( table, options );
Example 1 - Simple Array Table
const tableArray = {
headers: ["Country", "Conversion rate", "Trend"],
rows: [
["Switzerland", "12%", "+1.12%"],
["France", "67%", "-0.98%"],
["England", "33%", "+4.44%"],
],
};
doc.table( tableArray, { width: 300 });
Example 2 - Table
const table = {
headers: [
{ label:"Name", property: 'name', width: 60, renderer: null },
{ label:"Description", property: 'description', width: 150, renderer: null },
{ label:"Price 1", property: 'price1', width: 100, renderer: null },
{ label:"Price 2", property: 'price2', width: 100, renderer: null },
{ label:"Price 3", property: 'price3', width: 100, renderer: null },
{ label:"Price 4", property: 'price4', width: 43, renderer: null },
],
datas: [
{
name: 'Name 1',
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean mattis ante in laoreet egestas. ',
price1: '$1',
price3: '$ 3',
price2: '$2',
price4: '$4',
},
{
options: { fontSize: 10, separation: true} },
name: 'bold:Name 2',
description: 'bold:Lorem ipsum dolor.',
price1: 'bold:$1',
price3: '$3',
price2: '$2',
price4: '$4',
{
name: 'Name 3',
description: 'Lorem ipsum dolor.',
price1: 'bold:$1',
price4: '$4',
price2: '$2',
price3: {
label: 'PRICE $3', options: { fontSize: 12 }
},
},
],
rows: [
[
"Apple",
"Nullam ut facilisis mi. Nunc dignissim ex ac vulputate facilisis.",
"$ 105,99",
"$ 105,99",
"$ 105,99",
"$ 105,99",
],
[
"Tire",
"Donec ac tincidunt nisi, sit amet tincidunt mauris. Fusce venenatis tristique quam, nec rhoncus eros volutpat nec. Donec fringilla ut lorem vitae maximus. Morbi ex erat, luctus eu nulla sit amet, facilisis porttitor mi.",
"$ 105,99",
"$ 105,99",
"$ 105,99",
"$ 105,99",
],
],
};
doc.table(table, {
prepareHeader: () => doc.font("Helvetica-Bold").fontSize(8),
prepareRow: (row, i) => doc.font("Helvetica").fontSize(8),
});
Example 3 - Full Code
const fs = require("fs");
const PDFDocument = require("pdfkit-table");
const doc = new PDFDocument({ margin: 30, size: 'A4', });
doc.pipe(fs.createWriteStream("./file-table.pdf"));
doc.pipe(res);
doc.end();
Table
Example code:
const table = {
headers: ['Name', 'Age'],
rows: [
['Jack', '32'],
['Maria', '30'],
]
};
const table = {
headers: [
{ label:"Name", property: 'name', width: 100, renderer: null },
{ label:"Age", property: 'age', width: 100, renderer: null },
],
datas: [
{ name: 'bold:Jack', age: 32, },
{ name: 'Maria', age: { label: 30 , options: { fontSize: 12 }}, },
],
rows: [
['Jack', '32'],
['Maria', '30'],
]
};
Options Table
Properties | description |
---|
width | width of table |
x | position x (left) |
y | position y (top) |
columnSpacing | 5 |
rowSpacing | 3 |
prepareHeader | Function |
prepareRow | Function |
Example code:
const options = {
width: 500,
x: 0,
y: 0,
columnSpacing: 5,
rowSpacing: 3,
prepareHeader: () => doc.font("Helvetica-Bold").fontSize(8),
prepareRow: (row, i) => doc.font("Helvetica").fontSize(8),
}
Options Row
- separation {Booleon}
- fontSize {Number}
- fontFamily {String}
- bold:|size{n}: - 'Jack' | 'bold:Jack' | 'size11:Jack' | 'size20:Jack'
datas: [
{ name: 'Jack', options: { fontSize: 10, fontFamily: 'Courier-Bold', separation: true } },
]
datas: [
{ name: 'bold:Jack' },
]
Options Cell
- fontSize {Number}
- fontFamily {String}
datas: [
{ name: { label: 'Jack', options: { fontSize: 10, fontFamily: 'Courier-Bold' } },
]
Fonts Family
- 'Courier'
- 'Courier-Bold'
- 'Courier-Oblique'
- 'Courier-BoldOblique'
- 'Helvetica'
- 'Helvetica-Bold'
- 'Helvetica-Oblique'
- 'Helvetica-BoldOblique'
- 'Symbol'
- 'Times-Roman'
- 'Times-Bold'
- 'Times-Italic'
- 'Times-BoldItalic'
- 'ZapfDingbats'
ToDo
- renderer function. Like renderer: (value) => { return
$${value}
} - setFontFamily {String}
- setBoldFontFamily {String}
- verticalLines {Boolean}
- verticalLinesWidth {Number}
- verticalLinesColor {String}
- horizontalLines {Boolean}
- horizontalLinesWidth {Number}
- horizontalLinesColor {String}
- tableLine {Boolean}
- tableLineWidth {Number}
- tableLineColor {String}
- backgroundColor {String}
- striped {Boolean} (corsimcornao)
License
The MIT License.
Author
Thank you