voilab-pdf-table
Advanced tools
Comparing version 0.2.0 to 0.3.0
{ | ||
"name": "voilab-pdf-table", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"description": "PdfKit wrapper that helps to draw informations in simple tables.", | ||
@@ -5,0 +5,0 @@ "main": "voilab-table.js", |
@@ -21,2 +21,3 @@ Voilab Pdf Table | ||
create: function () { | ||
// create a PDF from PDFKit, and a table from PDFTable | ||
var pdf = new PdfDocument({ | ||
@@ -30,5 +31,7 @@ autoFirstPage: false | ||
table | ||
// add some plugins (here, a 'fit-to-width' for a column) | ||
.addPlugin(new (require('voilab-pdf-table/plugins/fitcolumn'))({ | ||
column: 'description' | ||
})) | ||
// set defaults to your columns | ||
.setColumnsDefaults({ | ||
@@ -38,2 +41,3 @@ headerBorder: 'B', | ||
}) | ||
// add table columns | ||
.addColumns([ | ||
@@ -64,2 +68,3 @@ { | ||
]) | ||
// add events (here, we draw headers on each new page) | ||
.onPageAdded(function (tb) { | ||
@@ -69,4 +74,6 @@ tb.addHeader(); | ||
// if no page already exists in your PDF, do not forget to add one | ||
pdf.addPage(); | ||
// draw content, by passing data to the addBody method | ||
table.addBody([ | ||
@@ -97,5 +104,7 @@ {description: 'Product 1', quantity: 1, price: 20.10, total: 20.10}, | ||
```js | ||
table.setNewPageFn(function (table, row) { | ||
table.onPageAdd(function (table, row, ev) { | ||
// do something like | ||
table.pdf.addPage(); | ||
// cancel event so the automatic page add is not triggered | ||
ev.cancel = true; | ||
}); | ||
@@ -106,2 +115,7 @@ ``` | ||
### 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 | ||
@@ -108,0 +122,0 @@ + added event `onColumnPropertyChanged` |
@@ -48,7 +48,8 @@ /*jslint node: true, unparam: true, nomen: true */ | ||
addCellBorder = function (self, column, row, pos, border, isHeader) { | ||
var bpos = { | ||
x: pos.x + column.width, | ||
y: pos.y + row._renderedContent.height | ||
}; | ||
addCellBorder = function (self, column, row, pos, isHeader) { | ||
var border = isHeader ? column.headerBorder : column.border, | ||
bpos = { | ||
x: pos.x + column.width, | ||
y: pos.y + row._renderedContent.height | ||
}; | ||
@@ -105,16 +106,19 @@ if (border.indexOf('L') !== -1) { | ||
addRow = function (self, row, isHeader) { | ||
var pos = { | ||
x: self.pdf.page.margins.left, | ||
y: self.pdf.y | ||
}, | ||
ev = { | ||
cancel: false | ||
}; | ||
// the content might be higher than the remaining height on the page. | ||
if (self.pdf.y + row._renderedContent.height > self.pdf.page.height - self.pdf.page.margins.bottom - self.bottomMargin) { | ||
self.emitter.emit('page-add', self); | ||
if (self.newPageFn) { | ||
self.newPageFn(self, row); | ||
self.emitter.emit('page-added', self); | ||
self.emitter.emit('page-add', self, row, ev); | ||
if (!ev.cancel) { | ||
self.pdf.addPage(); | ||
} | ||
self.emitter.emit('page-added', self, row); | ||
} | ||
var pos = { | ||
x: self.pdf.page.margins.left, | ||
y: self.pdf.y | ||
}; | ||
lodash.forEach(self.getColumns(), function (column) { | ||
@@ -125,3 +129,3 @@ if ((!isHeader && column.fill) || (isHeader && column.headerFill)) { | ||
if ((!isHeader && column.border) || (isHeader && column.headerBorder)) { | ||
addCellBorder(self, column, row, pos, (isHeader ? column.headerBorder : column.border), isHeader); | ||
addCellBorder(self, column, row, pos, isHeader); | ||
} | ||
@@ -298,5 +302,9 @@ addCell(self, column, row, pos, isHeader); | ||
/** | ||
* Add action before a page is added | ||
* Add action before a page is added. You can use <em>ev.cancel = true</em> | ||
* to cancel automatic page add, so you can do whatever you want to add | ||
* a new page. | ||
* <ul> | ||
* <li><i>PdfTable</i> <b>table</b> PdfTable behind the event</li> | ||
* <li><i>Object</i> <b>row</b> the current row</li> | ||
* <li><i>Object</i> <b>ev</b> the event</li> | ||
* </ul> | ||
@@ -314,2 +322,3 @@ * @return {PdfTable} | ||
* <li><i>PdfTable</i> <b>table</b> PdfTable behind the event</li> | ||
* <li><i>Object</i> <b>row</b> the current row</li> | ||
* </ul> | ||
@@ -376,17 +385,2 @@ * @return {PdfTable} | ||
/** | ||
* Add action after a column's witch is changed | ||
* <ul> | ||
* <li><i>PdfTable</i> <b>table</b> PdfTable behind the event</li> | ||
* <li><i>Object</i> <b>column</b> the column that changed</li> | ||
* </ul> | ||
* @deprecated | ||
* @return {PdfTable} | ||
*/ | ||
onColumnWidthChanged: function (fn) { | ||
console.log("this event is deprecated, use onColumnPropertyChanged instead"); | ||
this.emitter.on('column-width-changed', fn); | ||
return this; | ||
}, | ||
/** | ||
* Add action after a column is added | ||
@@ -422,2 +416,3 @@ * <ul> | ||
* | ||
* @deprecated | ||
* @param {Function} fn | ||
@@ -427,3 +422,3 @@ * @return {PdfTable} | ||
setNewPageFn: function (fn) { | ||
this.newPageFn = fn; | ||
console.log('setNewPageFn is deprecated. Adding a page during process is automatic now. It will be removed on the next release'); | ||
return this; | ||
@@ -746,2 +741,6 @@ }, | ||
if (!this.pdf.page) { | ||
throw new Error("No page available. Add a page to the PDF before calling addBody()"); | ||
} | ||
if (this.showHeaders) { | ||
@@ -767,3 +766,3 @@ this.addHeader(); | ||
// Issue #1, restore x position after table is drawn | ||
self.pdf.x = self.pdf.page.margins.left; | ||
this.pdf.x = this.pdf.page.margins.left; | ||
@@ -770,0 +769,0 @@ return this; |
32721
127
826