我正在使用以下节点模块html-pdf 将html转换为pdf。我已成功将html转换为pdf,但是在创建文件后我无法下载该文件。
生成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' }
});
如何在浏览器中打开PDF以供用户在浏览器中查看或自动下载pdf,而无需用户执行其他步骤。
答案 0 :(得分:1)
我刚刚对您的代码进行了一些更改。在此代码中,我创建了一个路由。每当您使用此路由发出请求时,它会将PDF
文件转换为var express=require('express');
var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('C:/Users/nodejs/tasks/file.html', 'utf8');
var options = { format: 'Letter' };
var app=express();
app.get('/file',function(request,response)
{
pdf.create(html, options).toFile('./businesscaw.pdf', function(err, res) {
if (err) return console.log(err);
console.log(res);
var file= 'C:/Users/nodejs/tasks/businesscaw.pdf';
fs.readFile(file,function(err,data){
response.contentType("application/pdf");
response.send(data);
});
});
});
app.listen(3000,function(){
console.log("Server listening on port http://loalhost:3000");
});
并将pdf文件创建到您正在执行的目录中。同时它也在浏览器中显示html文件并带有下载选项。希望这对你有所帮助。这是我的代码。
localhost:3000/file
输出:
请参阅浏览器中的输出,如:AsyncHttpClient