JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 27
  • Score
    100M100P100Q38852F
  • License MIT

Another PDF invoice generator

Package Exports

  • nodeice

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (nodeice) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

nodeice

nodeice

Patreon PayPal AMA Version Downloads Get help on Codementor

Another PDF invoice generator

nodeice

☁️ Installation

$ npm i --save 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);

📝 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

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

😋 How to contribute

Have an idea? Found a bug? See how to contribute.

💰 Donations

Another way to support the development of my open-source modules is to set up a recurring donation, via Patreon. 🚀

PayPal donations are appreciated too! Each dollar helps.

Thanks! ❤️

📜 License

MIT © Ionică Bizău