Skip to content

Instantly share code, notes, and snippets.

@harshmaur
Last active April 9, 2022 09:00
Show Gist options
  • Save harshmaur/c658042c0de3df519b4de2a4f706a33b to your computer and use it in GitHub Desktop.
Save harshmaur/c658042c0de3df519b4de2a4f706a33b to your computer and use it in GitHub Desktop.
Basic example to generate pdf receipts
const generate = require("@pdfme/generator").generate;
const fs = require('fs');
const path = require('path')
const PDFDocument = require('pdf-lib').PDFDocument
const degrees = require('pdf-lib').degrees
try {
(async () => {
const template = {
"schemas": [
{
"name": {
"type": "text",
"position": {
"x": 60.02,
"y": 35.19
},
"width": 111.46,
"height": 7,
"alignment": "left",
"fontSize": 13,
"characterSpacing": 0,
"lineHeight": 1
},
"address": {
"type": "text",
"position": {
"x": 46.83,
"y": 43.13
},
"width": 126.54,
"height": 15.73,
"alignment": "left",
"fontSize": 13,
"characterSpacing": 0,
"lineHeight": 1.6
},
"amountText": {
"type": "text",
"position": {
"x": 63.24,
"y": 61.91
},
"width": 110.14,
"height": 7,
"alignment": "left",
"fontSize": 13,
"characterSpacing": 0,
"lineHeight": 1
},
"paymentMethod": {
"type": "text",
"position": {
"x": 63.24,
"y": 69.91
},
"width": 110.14,
"height": 7,
"alignment": "left",
"fontSize": 13,
"characterSpacing": 0,
"lineHeight": 1
},
"amount": {
"type": "text",
"position": {
"x": 43.39,
"y": 88.16
},
"width": 78.65,
"height": 7,
"alignment": "left",
"fontSize": 13,
"characterSpacing": 0,
"lineHeight": 1
}
}
],
"basePdf": "data:application/pdf;base64,JVBERi0xLjcKJeLjz9MKNyAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDEKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTGVuZ3RoIDMKPj4Kc3RyZWFtCv///wplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzMwo+PgpzdHJlYW0KeJwr5DI1N1MwAEIjCwswnZzLpR9hoOCSzxXIBQBcGwYJCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PAovVHlwZSAvUGFnZQovTWVkaWFCb3ggWzAgMCA1NzYgMjg4XQovUmVzb3VyY2VzIDw8Ci9YT2JqZWN0IDw8Ci9YMCA3IDAgUgo+Pgo+PgovQ29udGVudHMgNSAwIFIKL1BhcmVudCAyIDAgUgo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvUGFnZXMKL0tpZHMgWzQgMCBSXQovQ291bnQgMQo+PgplbmRvYmoKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjMgMCBvYmoKPDwKL0NyZWF0b3IgKDMtSGVpZ2h0c1woVE1cKSBJbWFnZSB0byBQREYgQ29udmVydGVyIDQuMTIuMjYuMyBcKHd3dy5wZGYtdG9vbHMuY29tXCkpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMjA0MDkwODM1NTBaKQovUHJvZHVjZXIgKGlMb3ZlUERGKQovTW9kRGF0ZSAoRDoyMDIyMDQwOTA4MzU1MFopCj4+CmVuZG9iago4IDAgb2JqCjw8Ci9TaXplIDkKL1Jvb3QgMSAwIFIKL0luZm8gMyAwIFIKL0lEIFs8MTk0QjJDRUYwMUREOTg4MzZBMjEzQ0Y3Q0RCQzBCQzg+IDw3RjhBRDFGRDBDMkI0RkVGOTBEMkU3RDZDMjRBMTA5Mj5dCi9UeXBlIC9YUmVmCi9XIFsxIDIgMl0KL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0luZGV4IFswIDldCi9MZW5ndGggNDEKPj4Kc3RyZWFtCnicY2Bg+/+fkfEQAwMjYyeI+AwiOIAEwwIGCGBk4AcSTOsYGACsigW1CmVuZHN0cmVhbQplbmRvYmoKc3RhcnR4cmVmCjY4NgolJUVPRgo="
};
const inputs = [
{
"name": "Om Kanwar Rathore",
"address": "P.O.- Narma Bhakri via Parbatsar, District- Nagour, Rajasthan-341512",
"amountText": "Four hundred Fifty Only",
"paymentMethod": "Cash",
"amount": "450/-"
}
];
const _pdf = await generate({ template, inputs });
const pdfDoc = await PDFDocument.load(_pdf);
pdfDoc.getPages()[0].setRotation(degrees(90))
const pdf = await pdfDoc.save()
// Node.js
fs.writeFileSync(path.join(__dirname, 'test.pdf'), pdf);
// // Browser
// const blob = new Blob([pdf.buffer], { type: 'application/pdf' });
// window.open(URL.createObjectURL(blob));
})();
} catch (error) {
console.log(error)
}
{
"name": "pdfme",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Harsh",
"license": "ISC",
"dependencies": {
"@pdfme/generator": "^1.0.5"
}
}
{"schemas":[{"name":{"type":"text","position":{"x":60.02,"y":35.19},"width":111.46,"height":7,"alignment":"left","fontSize":13,"characterSpacing":0,"lineHeight":1},"address":{"type":"text","position":{"x":46.83,"y":43.13},"width":126.54,"height":15.73,"alignment":"left","fontSize":13,"characterSpacing":0,"lineHeight":1.6},"amountText":{"type":"text","position":{"x":63.24,"y":61.91},"width":110.14,"height":7,"alignment":"left","fontSize":13,"characterSpacing":0,"lineHeight":1},"paymentMethod":{"type":"text","position":{"x":63.24,"y":69.91},"width":110.14,"height":7,"alignment":"left","fontSize":13,"characterSpacing":0,"lineHeight":1},"amount":{"type":"text","position":{"x":43.39,"y":88.16},"width":78.65,"height":7,"alignment":"left","fontSize":13,"characterSpacing":0,"lineHeight":1}}],"basePdf":"data:application/pdf;base64,JVBERi0xLjcKJeLjz9MKNyAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDEKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTGVuZ3RoIDMKPj4Kc3RyZWFtCv///wplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzMwo+PgpzdHJlYW0KeJwr5DI1N1MwAEIjCwswnZzLpR9hoOCSzxXIBQBcGwYJCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PAovVHlwZSAvUGFnZQovTWVkaWFCb3ggWzAgMCA1NzYgMjg4XQovUmVzb3VyY2VzIDw8Ci9YT2JqZWN0IDw8Ci9YMCA3IDAgUgo+Pgo+PgovQ29udGVudHMgNSAwIFIKL1BhcmVudCAyIDAgUgo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvUGFnZXMKL0tpZHMgWzQgMCBSXQovQ291bnQgMQo+PgplbmRvYmoKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjMgMCBvYmoKPDwKL0NyZWF0b3IgKDMtSGVpZ2h0c1woVE1cKSBJbWFnZSB0byBQREYgQ29udmVydGVyIDQuMTIuMjYuMyBcKHd3dy5wZGYtdG9vbHMuY29tXCkpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMjA0MDkwODM1NTBaKQovUHJvZHVjZXIgKGlMb3ZlUERGKQovTW9kRGF0ZSAoRDoyMDIyMDQwOTA4MzU1MFopCj4+CmVuZG9iago4IDAgb2JqCjw8Ci9TaXplIDkKL1Jvb3QgMSAwIFIKL0luZm8gMyAwIFIKL0lEIFs8MTk0QjJDRUYwMUREOTg4MzZBMjEzQ0Y3Q0RCQzBCQzg+IDw3RjhBRDFGRDBDMkI0RkVGOTBEMkU3RDZDMjRBMTA5Mj5dCi9UeXBlIC9YUmVmCi9XIFsxIDIgMl0KL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0luZGV4IFswIDldCi9MZW5ndGggNDEKPj4Kc3RyZWFtCnicY2Bg+/+fkfEQAwMjYyeI+AwiOIAEwwIGCGBk4AcSTOsYGACsigW1CmVuZHN0cmVhbQplbmRvYmoKc3RhcnR4cmVmCjY4NgolJUVPRgo=","sampledata":[{"name":"Om Kanwar Rathore","address":"P.O.- Narma Bhakri via Parbatsar, District- Nagour, Rajasthan-\n341512","amountText":"Four hundred Fifty Only","paymentMethod":"Cash","amount":"450/-"}],"columns":["name","address","amountText","paymentMethod","amount"]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment