我正在使用sails框架创建一个基于node.js
的应用程序。我想要创建一个PDF格式的报告,其中需要包含一个使用chart.js
生成的图表。数据从mongodb中获取,并在canvas
上显示。如何使用node.js创建此图表的PDF文件?
我正在使用sails框架创建一个基于node.js
的应用程序。我想要创建一个PDF格式的报告,其中需要包含一个使用chart.js
生成的图表。数据从mongodb中获取,并在canvas
上显示。如何使用node.js创建此图表的PDF文件?
<!DOCTYPE html>
<html>
<head>
<meta charset="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>
"height": "10.5in", // 允许的单位:mm、cm、in、px
"width": "8in", // 允许的单位:mm、cm、in、px
或者 -
"format": "Letter", // 允许的单位:A3、A4、A5、Legal、Letter、Tabloid "orientation": "portrait", // 纵向或横向
var options = { format: "A3", orientation: "portrait", border: "10mm" };
var users = [
{
name:"Shyam",
age:"26"
},
{
name:"Navjot",
age:"26"
},
{
name:"Vitthal",
age:"26"
}
]
var document = {
html: html,
data: {
users: users
},
path: "./output.pdf"
};
pdf.create(document, options)
.then(res => {
console.log(res)
})
.catch(error => {
console.error(error)
});
Installation:
npm install pdfkit
例子:
var PDFDocument = require('pdfkit');
doc = new PDFDocument;
doc.pipe(fs.createWriteStream('output.pdf'));
doc.font('fonts/PalatinoBold.ttf').fontSize(25).text(100, 100);
pdf-master
包。您可以使用一个函数调用使用 HTML 生成静态和动态 PDF。npm install pdf-master
示例
步骤1 - 添加所需的软件包并生成PDF文件
const express = require("express");
const pdfMaster = require("pdf-master");
const app = express();
app.get("", async (req, res) => {
var PDF = await pdfMaster.generatePdf("template.hbs");
res.contentType("application/pdf");
res.status(200).send(PDF);
});
generatePdf() 语法和参数
generatePdf(
templatePath, //<string>
data, //<object> Pass data to template(optional)
options //<object> PDF format options(optional)
);
步骤2 - 创建您的HTML模板(将模板保存为.hbs扩展名而不是.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
在模板和 PDF 格式选项中呈现动态数据
const express = require("express");
const pdfMaster = require("pdf-master");
const app = express();
app.get("", async (req, res) => {
var students = {
{
id: 1,
name: "Sam",
age: 21
},
{
id: 2,
name: "Jhon",
age: 20
},
{
id: 3,
name: "Jim",
age: 24
}
}
let options = {
displayHeaderFooter: true,
format: "A4",
headerTemplate: `<h3> Header </h3>`,
footerTemplate: `<h3> Copyright 2023 </h3>`,
margin: { top: "80px", bottom: "100px" },
};
let PDF = await pdfMaster.generatePdf("template.hbs", students, options);
res.contentType("application/pdf");
res.status(200).send(PDF);
});
想要了解更多关于 pdf-master
的内容请访问