1.0.7 • Published 4 years ago

pdf-invoice-generator v1.0.7

Weekly downloads
185
License
-
Repository
github
Last release
4 years ago

invoice-generator

Generate invoices and export them easily. If you want some examples, check tests.

Install

$ npm install invoice-generator --save

Features

  • Generate invoice
  • Export to HTML / PDF / Stream
  • Easy to use it

Usage

Importation

From import

import invoiceGenerator from 'invoice-generator';

From require

const invoiceGenerator = require('invoice-generator');

If you want to export your invoice in PDF, you must install the html-pdf (v2.2.0) peer dependence

$ npm i -S html-pdf@2.2.0

Invoice

To generate an invoice:

const invoiceGenerator = require('invoice-generator');

invoiceGenerator.configure({
  global: {
    logo:"https://vehiclesolutions.com.au/wp-content/uploads/2017/03/Vehicle-Solutions-logo.png",
    invoice_template: `${__dirname}/static/invoice.pug`,
    date: new Date(),
    date_format: "YY/MM/DD",
    lang: "en"
  }
});

const invoice = invoiceGenerator.create();

invoice.recipient = {
  title: "Ms",
  first_name: "Anne",
  last_name: "Haworth",
  street1: "3/288 Glen Osmond Road",
  street2: "FULLARTON SA 5063"
};
invoice.statement_conclusion = {
  Employee: "1409",
  "Payroll Id": "001409",
  Phone: "8338 4427",
  Email: "anne@vehiclesolutions.com.au"
};
invoice.statement_heading = {
  subject: "Activity Statement",
  subtitle: "Salary Packaging Statement for the period FBT year to date"
};
invoice.article_headers = [
  "Name",
  "Date",
  "Ref",
  "Inst#",
  "Description",
  "Debit",
  "Credit",
  "Balance"
];
invoice.articles = [
  [
    "Payroll Deduction",
    "24/08/2017",
    "144102894",
    "1",
    "Deduction",
    "525.20",
    "",
    "526.21 Cr"
  ]
];

Return invoice object

invoice.getInvoice();

Return html invoice

invoice.getInvoice().toHTML();

Save html invoice into file (default filepath: 'invoice.html')

invoice.getInvoice().toHTML().toFile('./invoice.html')
  .then(() => {
      console.log('HTML file created.');
  });

Save html invoice into file (default filepath: 'invoice.pdf')

const options = {
  timeout: "90000",
  border: {
    top: "10px",
    right: "10px",
    bottom: "10px",
    left: "10px"
  },
  header: {
    height: "10mm",
    contents:
      '<div style="padding:5px 10px 5px 10px;"><div style="float:left;">Activity Statement</div><div style="float:right;"><span style="color:#444;font-size: 50%;">Print No.: ' +
      require("uuid/v4")() +
      "</span></div></div>"
  },
  footer: {
    height: "10mm",
    contents: {
      default:
        '<div style="padding:5px 10px 5px 10px;"><div style="float:left;"><span>Page {{page}}</span> of <span>{{pages}}</span>  <span style="color:#444;font-size: 50%;">Generated ' +
        new Date() +
        "</span></div></div>"
    }
  }
};

invoice.getInvoice().toPDF(options).toFile('./invoice.pdf')
  .then(() => {
      console.log('PDF file created.');
  });

i18n

To add more language:

const invoiceGenerator = require('invoice-generator');

invoiceIt.configure({
  language: {
    locales: ['en', 'pl'],
    directory: `${__dirname}/path/to/locales`,
    defaultLocale: 'en'
  }
});

Scripts

Run using npm run command.

clean - remove coverage data, Jest cache and transpiled files,
test - run tests with coverage,
test:watch - interactive watch mode to automatically re-run tests,
build - compile source files,
build:watch - interactive watch mode, compile sources on change.