Another PDF invoice generator
$ npm i --save nodeice
const Invoice = require("nodeice");
// Create the new invoice
let myInvoice = new Invoice({
config: {
template: __dirname + "/template/index.html"
, tableRowBlock: __dirname + "/template/blocks/row.html"
}
, data: {
currencyBalance: {
main: 1
, secondary: 3.67
}
, invoice: {
number: {
series: "PREFIX"
, separator: "-"
, id: 1
}
, date: "01/02/2014"
, dueDate: "11/02/2014"
, explanation: "Thank you for your business!"
, currency: {
main: "XXX"
, secondary: "ZZZ"
}
}
, tasks: [
{
description: "Some interesting task"
, unit: "Hours"
, quantity: 5
, unitPrice: 2
}
, {
description: "Another interesting task"
, unit: "Hours"
, quantity: 10
, unitPrice: 3
}
, {
description: "The most interesting one"
, unit: "Hours"
, quantity: 3
, unitPrice: 5
}
]
}
, seller: {
company: "My Company Inc."
, registrationNumber: "F05/XX/YYYY"
, taxId: "00000000"
, address: {
street: "The Street Name"
, number: "00"
, zip: "000000"
, city: "Some City"
, region: "Some Region"
, country: "Nowhere"
}
, phone: "+40 726 xxx xxx"
, email: "[email protected]"
, website: "example.com"
, bank: {
name: "Some Bank Name"
, swift: "XXXXXX"
, currency: "XXX"
, iban: "..."
}
}
, buyer: {
company: "Another Company GmbH"
, taxId: "00000000"
, address: {
street: "The Street Name"
, number: "00"
, zip: "000000"
, city: "Some City"
, region: "Some Region"
, country: "Nowhere"
}
, phone: "+40 726 xxx xxx"
, email: "[email protected]"
, website: "example.com"
, bank: {
name: "Some Bank Name"
, swift: "XXXXXX"
, currency: "XXX"
, iban: "..."
}
}
});
// Render invoice as HTML and PDF
myInvoice.toHtml(__dirname + "/my-invoice.html", (err, data) => {
console.log("Saved HTML file");
}).toPdf(__dirname + "/my-invoice.pdf", (err, data) => {
console.log("Saved pdf file");
});
// Serve the pdf via streams (no files)
require("http").createServer((req, res) => {
myInvoice.toPdf({ output: res });
}).listen(8000);
This is the constructor that creates a new instance containing the needed methods.
- Object
options
: The options for creating the new invoice: config
(Object):template
(String): The HTML root template.
data
(Object):currencyBalance
(Object):main
(Number): The main balance.secondary
(Number): The converted main balance.tasks
(Array): An array with the tasks (description of the services you did).invoice
(Object): Information about invoice.
seller
(Object): Information about seller.buyer
(Object): Information about buyer.
Inits the HTML templates.
- Function
callback
: The callback function.
Renders the invoice in HTML format.
- String
output
: An optional path to the output file. - Function
callback
: The callback function.
- Invoice The
Nodeice
instance.
Converts a currency into another currency according to the currency balance provided in the options
- Number
input
: The number that should be converted
- Number The converted input
Renders invoice as pdf
-
Object|String|Stream
options
: The path the output pdf file, the stream object, or an object containing: -
output
(String|Stream): The path to the output file or the stream object. -
converter
(Object): An object containing custom settings for thephantom-html-to-pdf
. -
Function
callback
: The callback function
- Invoice The Invoice instance
Have an idea? Found a bug? See how to contribute.