Voilab Pdf Table
PdfKit wrapper that helps to draw informations in simple tables.
Installation
npm install --save voilab-pdf-table
Usage
var PdfTable = require('voilab-pdf-table'),
PdfDocument = require('pdfkit');
module.exports = {
create: function () {
var pdf = new PdfDocument({
autoFirstPage: false
}),
table = new PdfTable(pdf, {
bottomMargin: 30
});
table
.addPlugin(new (require('voilab-pdf-table/plugins/fitcolumn'))({
column: 'description'
}))
.setColumnsDefaults({
headerBorder: 'B',
align: 'right'
})
.addColumns([
{
id: 'description',
header: 'Product',
align: 'left'
},
{
id: 'quantity',
header: 'Quantity',
width: 50
},
{
id: 'price',
header: 'Price',
width: 40
},
{
id: 'total',
header: 'Total',
width: 70,
renderer: function (tb, data) {
return 'CHF ' + data.total;
}
}
])
.onPageAdded(function (tb) {
tb.addHeader();
});
pdf.addPage();
table.addBody([
{description: 'Product 1', quantity: 1, price: 20.10, total: 20.10},
{description: 'Product 2', quantity: 4, price: 4.00, total: 16.00},
{description: 'Product 3', quantity: 2, price: 17.85, total: 35.70}
]);
return pdf;
}
};
app.get('/some/route', function (req, res, next) {
var pdf = require('some/service').create();
pdf.pipe(res);
pdf.end();
});
Page breaks
You can customize how page breaks are done during table process like this:
table.onPageAdd(function (table, row, ev) {
table.pdf.addPage();
ev.cancel = true;
});
Changelogs
0.5.0
From #Drieger
- if value is
Number(0)
the renderer displays it. It could be a breaking
change, so the version is bumped to 0.5.0
0.4.2
- added ellipsis support (no height calculation is done for this cell)
0.4.1
Thank you, contributors!
From #vikram1992
- added
headerOpacity
and headerBorderOpacity
in column configuration - added
headerCellAdded
and cellAdded
as a function in column configuration
0.4.0
Thank you, contributors!
From #MichielDeMey
- better handling for padding
- some modifications about pos calculation
From #cbwebdevelopment
- added
onCellBackgroundAdd
and onCellBackgroundAdded
events - added
onCellBorderAdd
and onCellBorderAdded
events - the current row index is passed in events
- some modifications about pos calculation
0.3.0
- new pages are better handeled. No more need to call
setNewPageFn
- removed
setNewPageFn
. Check documentation for how you can customize page
add. Deprecated mention will be definitively removed in next release
0.2.0
- added event
onColumnPropertyChanged
- added event
onColumnAdded
- removed
onColumnWidthChanged
. Use onColumnPropertyChanged
instead.
Deprecated mention will be definitively removed in next release - Issue #1 fix
0.1.5
First shot
Licence
This code is released under the MIT License (MIT)