如何在单击按钮时将 node.js 网络应用程序的页面转换为 pdf?
How to convert page of node.js web app to a pdf on button click?
我正在使用 node、express 和 ejs 构建网络应用程序,我想在单击按钮时将页面转换为 pdf
。
为按钮创建的请求的路由定义如下:
const gp = require('./generatePDF');
app.get('/pdf', gp.generatePDF)
函数是这样处理的:
const generatePDF = (request, response) => {
/* do some stuff to generate content on the ejs page */
response.render('pages/pagetoconverttoPDF');
}
module.exports = {
generatePDF,
}
以 pdf
的形式下载/查看此页面的最佳方式是什么?
如果您想在 html 中嵌入 pdf,您可以使用 <embed>
标签或 <iframe>
标签。更多相关信息:How to display PDF file in HTML?
但是,如果您希望独立提供 pdf,您可以静态提供 pdf,浏览器将呈现它,并提供下载和打印选项。
我想出了如何使用 ejs.renderFile
完成此操作(从 html 生成 pdf),如下所示:
const generatePDF = (request, response) => {
var dataToDisplay = request.body;
ejs.renderFile('./views/pages/admin/employeedatapdf.ejs', {d: dataToDisplay}, (err, data) => {
if (err) {
console.log(err);
response.send(err);
} else {
let options = {
"height": "11.25in",
"width": "8.5in",
"header": {
"height": "20mm"
},
"footer": {
"height": "20mm",
},
};
let filename = "generatedpdf.pdf";
pdf.create(data).toFile(filename, function (err, data) {
let fileloc = 'full path' + filename;
if (err) {
response.send(err);
console.log("error occured")
} else {
fs.readFile(fileloc, function (err, data) {
console.log("generating pdf");
response.contentType("application/pdf");
response.send(data);
});
}
})
}
});
}
我正在使用 node、express 和 ejs 构建网络应用程序,我想在单击按钮时将页面转换为 pdf
。
为按钮创建的请求的路由定义如下:
const gp = require('./generatePDF');
app.get('/pdf', gp.generatePDF)
函数是这样处理的:
const generatePDF = (request, response) => {
/* do some stuff to generate content on the ejs page */
response.render('pages/pagetoconverttoPDF');
}
module.exports = {
generatePDF,
}
以 pdf
的形式下载/查看此页面的最佳方式是什么?
如果您想在 html 中嵌入 pdf,您可以使用 <embed>
标签或 <iframe>
标签。更多相关信息:How to display PDF file in HTML?
但是,如果您希望独立提供 pdf,您可以静态提供 pdf,浏览器将呈现它,并提供下载和打印选项。
我想出了如何使用 ejs.renderFile
完成此操作(从 html 生成 pdf),如下所示:
const generatePDF = (request, response) => {
var dataToDisplay = request.body;
ejs.renderFile('./views/pages/admin/employeedatapdf.ejs', {d: dataToDisplay}, (err, data) => {
if (err) {
console.log(err);
response.send(err);
} else {
let options = {
"height": "11.25in",
"width": "8.5in",
"header": {
"height": "20mm"
},
"footer": {
"height": "20mm",
},
};
let filename = "generatedpdf.pdf";
pdf.create(data).toFile(filename, function (err, data) {
let fileloc = 'full path' + filename;
if (err) {
response.send(err);
console.log("error occured")
} else {
fs.readFile(fileloc, function (err, data) {
console.log("generating pdf");
response.contentType("application/pdf");
response.send(data);
});
}
})
}
});
}