How to convert HTML to pdf in NodeJS

How to convert HTML to pdf in NodeJS

Follow the following steps to convert HTML to pdf

Step 1 - install the pdf creator packages by the following command

$ npm i pdf-creator-node --save

Step 2 - Add required packages and read HTML template

//Required package
var pdf = require("pdf-creator-node");
var fs = require('fs');

 
// Read HTML Template
var html = fs.readFileSync('template.html', 'utf8');

Step 3 - Create your HTML Template

<!DOCTYPE html>
<html>
    <head>
        <mate charest="utf-8" />
        <title>Hello world!</title>
    </head>
    <body>
        <h1>User List</h1>
        <ul>
            {{#each users}}
            <li>Name: {{this.name}}</li>
            <li>Age: {{this.age}}</li>
            <br>
        {{/each}}
        </ul>
    </body>

</html>

Step 4 - Provide Format and Orientation as per your need

"height": "10.5in", // allowed units: mm, cm, in, px
"width": "8in", // allowed units: mm, cm, in, px

OR

"format": "Letter", // allowed units: A3, A4, A5, Legal, Letter, Tabloid
"orientation": "portrait", // portrait or landscape


var options = {
        format: "A3",
        orientation: "portrait",
        border: "10mm",
        header: {
            height: "45mm",
            contents: '<div style="text-align: center;">Author: Shyam Hajare</div>'
        },
        "footer": {
            "height": "28mm",
            "contents": {
            first: 'Cover page',
            2: 'Second page', // Any page number is working. 1-based index
            default: '<span style="color: #444;">{{page}}</span>/<span>{{pages}}</span>', // fallback value
            last: 'Last Page'
        }
    };

Step 5 - Provide HTML, User data and pdf path for the output

var users = [
    {
        name:"Shyam",
        age:"26"
    },
    {
        name:"Navjot",
        age:"26"
    },
    {
        name:"Vitthal",
        age:"26"
    }
]
var document = {
    html: html,
    data: {
        users: users
    },
    path: "./output.pdf"
};


Step 6 - After setting all parameters just pass document and options to the pdf.create method.

pdf.create(document, options)
    .then(res => {
        console.log(res)
    })
    .catch(error => {
        console.error(error)
    });

Reference

Please refer the following link if you want to use condition in HTML template

End

Hi Hajare, Thanks for your package. I have been trying this for a long while to figure this out.. Your each statement is working for the data passed through as an array.. For an instance, if i am passing this as an object then it doesn't print the value of it.. example : data:{invoice;{invoice_date:"29-05-2023"}}; then in the html template i added like {{invoice.invoice_date}}.. Prints nothing ?nested properties is not working Please let me know.TIA

回复
Vandita Mathur

Technical Manager at Indexnine Technologies

4 年

Nice! Useful one, Shyam!

要查看或添加评论,请登录

Shyam Hajare的更多文章

  • How to solve CORS issue in ReactJS

    How to solve CORS issue in ReactJS

    What is CORS? Cross-Origin Resource Sharing (CORS) is a protocol that enables scripts running on a browser client to…

    2 条评论
  • Fizz Buzz Algorithm Implementation

    Fizz Buzz Algorithm Implementation

    Fizz Buzz is a very simple programming task, asked in software developer interviews. Write a program that prints the…

  • Upgrade Magento from 2.2.3 to 2.2.5

    Upgrade Magento from 2.2.3 to 2.2.5

    Following are the steps for upgrading Magento 1) php bin/magento maintenance:enable 2) composer require…

  • Create Magento 2 Theme

    Create Magento 2 Theme

    The following steps required to add a new theme to the Magento system - Create a directory for the theme under…

  • Create Configurable Product Using CSV - Magento 2

    Create Configurable Product Using CSV - Magento 2

    1) Create Simple Product CSV ( Please Refer sample CSV ) 2) Map Simple Product to Configurable ( Please Refer sample…

    2 条评论

社区洞察

其他会员也浏览了