目标:允许用户下载PDF
后台:以下代码生成car.pdf
文件,并在加载localhost:3000/
时将其存储到主项目的目录中。这很棒,因为我希望在数据库中找到Car
到id
,生成一个把手模板,将数据从Car
传递到其中,然后从已编译的HTML生成PDF < / p>
问题:我希望将PDF下载到用户的计算机,而不是将PDF保存到主项目的目录中。
我该怎么做?
这是我的代码。我正在使用NPM包:html-pdf
助手/出口helper.js
const fs = require('fs');
const pdf = require('html-pdf');
const Handlebars = require('handlebars');
const { Car } = require('./../models/car');
var writePDF = (res) => {
Car.findById({_id: '58857e256b639400110897af'})
.then((car) => {
var source = fs.readFileSync(__dirname + '/templates/car.handlebars', 'utf8');
var template = Handlebars.compile(source);
var file = template(car);
pdf.create(file, { format: 'Letter' })
.toFile('./car.pdf', (err, res) => {
if (err) return console.log(err);
console.log(res); // { filename: '/app/businesscard.pdf' }
});
})
.catch((errors) => {
console.log(errors);
});
};
module.exports = { writePDF };
路由/ home.js
const express = require('express');
const router = express.Router();
const { writePDF } = require('./../helpers/export-helpers');
router.get('/', (req, res) => {
writePDF();
});
module.exports = router;
答案 0 :(得分:0)
你应该使用res.download。像这样
router.get('/', (req, res) => {
res.download('car.pdf');
});
答案 1 :(得分:0)
您必须通过响应客户端来管道创建的pdf。