Build a Node.js PDF Invoice Generator From HTML5 Template Using nodeice Library in Javascript Full Project For Beginners

 

 

npm i nodeice

 

 

nodeice

nodeice

Support me on Patreon Buy me a book PayPal Ask me anything Version Downloads Get help on Codementor

Buy Me A Coffee

Another PDF invoice generator

nodeice

☁️ Installation

# Using npm
npm install --save nodeice

# Using yarn
yarn add nodeice

📋 Example

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: "me@example.com"
      , 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: "me@example.com"
      , 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);

❓ Get Help

There are few ways to get help:

  1. Please post questions on Stack Overflow. You can open issues with questions, as long you add a link to your Stack Overflow question.
  2. For bug reports and feature requests, open issues. 🐛
  3. For direct and quick help, you can use Codementor. 🚀
See also  Node.js Express Youtube Video URL Timestamp Link Generator in Javascript Full Project 2020

📝 Documentation

Invoice(options)

This is the constructor that creates a new instance containing the needed methods.

Params

  • 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.

initTemplates(callback)

Inits the HTML templates.

Params

  • Function callback: The callback function.

toHtml(output, callback)

Renders the invoice in HTML format.

Params

  • String output: An optional path to the output file.
  • Function callback: The callback function.

Return

  • Invoice The Nodeice instance.

convertToSecondary(input)

Converts a currency into another currency according to the currency balance provided in the options

See also  Adobe Embed API Example to Display PDF Document From Dropbox in Browser Using Javascript Full Project For Beginners

Params

  • Number input: The number that should be converted

Return

  • Number The converted input

toPdf(options, callback)

Renders invoice as pdf

Params

  • 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 the phantom-html-to-pdf.
  • Function callback: The callback function

Return

  • Invoice The Invoice instance

Leave a Reply