我正在使用html-pdf
模块生成发票
当我传递网页本地地址时,我能够生成pdf,即存储在文件夹中
但我的要求是点击API,然后生成pdf文件
我可以使用html-pdf
模块执行此操作,还是有其他模块可以执行此操作?
的代码
var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };
pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
if (err) return console.log(err);
console.log(res); // { filename: '/app/businesscard.pdf' }
});
请帮忙。
答案 0 :(得分:1)
如果我正确读取此内容,您想从html文件生成pdf,然后将其返回到浏览器/客户端?
这应该这样做:
var fs = require('fs');
var bodyParser = require('body-parser');
var pdf = require('html-pdf');
app.post('/product/invoice', function (req, res) {
var htmlPath = req.body.htmlPath;
if (!htmlPath){
res.status(400).send("Missing 'htmlPath'");
return;
}
var html = fs.readFileSync(htmlPath, 'utf8');
// you may want to change this path dynamically if you also wish to keep the generated PDFs
var pdfFilePath = './businesscard.pdf';
var options = { format: 'Letter' };
pdf.create(html, options).toFile(pdfFilePath, function(err, res2) {
if (err){
console.log(err);
res.status(500).send("Some kind of error...");
return;
}
fs.readFile(pdfFilePath , function (err,data){
res.contentType("application/pdf");
res.send(data);
});
});
});
您需要使用 htmlPath 作为参数(从您的初始示例 ./ test / businesscard.html )POST到此端点 - 确保这是正确的URL编码。