pdf-node
Version:
A JavaScript PDF generation library for NodeJs
142 lines (110 loc) • 3.66 kB
Markdown
# pdf-node
A JavaScript PDF generation library for NodeJs
<br>
[](./../../)
## Install
```sh
npm install pdf-node --save
```
- Step 1 - Add required packages and read HTML template
```javascript
//Required package
var pdf = require("pdf-node");
var fs = require("fs");
// Read HTML Template
var html = fs.readFileSync("template.html", "utf8");
```
- Step 2 - Create your HTML Template
```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 3 - 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
```javascript
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 4 - Provide HTML, user data and PDF path for output
```javascript
var users = [
{
name: "tom",
age: "21",
},
{
name: "dick",
age: "23",
},
{
name: "harry",
age: "29",
},
];
var document = {
html: html,
data: {
users: users,
},
path: "./output.pdf",
type: "pdf",
};
```
- Step 5- After setting all parameters, just pass document and options to `pdf.create` method.
```javascript
pdf(document, options)
.then((res) => {
console.log(res);
})
.catch((error) => {
console.error(error);
});
```
## Reference
Please refer to the following if you want to use conditions in your HTML template:
- https://handlebarsjs.com/builtin_helpers.html
<br>
## Connect
<div align="left">
<p><a href="https://github.com/tawseefnabi/"><img alt="GitHub @tawseefnabi" align="center" src="https://img.shields.io/badge/GITHUB-gray.svg?colorB=6cc644&style=flat" /></a> <small><strong>(follow)</strong> To stay up to date on free & open-source software</small></p>
<p><a href="https://twitter.com/NabiTowseef/"><img alt="Twitter @NabiTowseef" align="center" src="https://img.shields.io/badge/TWITTER-gray.svg?colorB=1da1f2&style=flat" /></a> <small><strong>(follow)</strong> To get tech updates/small></p>
<p><a href="https://www.linkedin.com/in/tawseef-ahmad-bhat-61830385/"><img alt="LinkedIn @TawseefAhmad" align="center" src="https://img.shields.io/badge/LINKEDIN-gray.svg?colorB=0077b5&style=flat" /></a> <small><strong>(connect)</strong> On the LinkedIn profile y'all</small></p>
</div>
<br>
[n]: https://nodecli.com/?utm_source=FOSS&utm_medium=FOSS&utm_campaign=create-node-app
[repo]: https://github.com/AhmadAwais/create-node-app