使用npm html-pdf将HTML转换为PDF

时间:2017-07-04 14:30:23

标签: node.js npm html-pdf

我正在尝试使用npm html-pdf将HTML文件转换为PDF,但转换的PDF不是HTML(样式错误)。有人能告诉我我做错了什么吗?

var pdf = require('html-pdf');
var html = fs.readFileSync('./example.html', 'utf8');

    pdf.create(html, options).toFile(folderName + '/' + fileName, function (err, res) { // if the file doesnt exist it will be created
    if (err) return console.log(err);

    console.log(res);
  });

2 个答案:

答案 0 :(得分:0)

我已经实现了这个,但是将html转换为pdf的方法略有不同。在下面的代码中,我使用jade(现在称为pug)来允许这个pdf在结构上不会改变时是动态的,只是值。换句话说,它是一个可重用的模板。此外,我异步执行此操作,这是您遇到问题的潜在原因。您是否有编写同步代码的具体原因?

在您的代码中,有几个变量没有显示定义,所以我无法看到问题所在的位置。如果您包含代码,我将能够为您提供更多帮助。我希望我的代码可以在此期间为您提供帮助。

let fs = require('fs');
let path = require('path');
let jade = require('jade');
let pdf = require('html-pdf');
let filepath = path.resolve(__dirname, '../views/example.jade');
let templateVariables = {}; // If you have any to pass in
fs.readFile(filepath, 'utf8', function(err, data) {
    if (err) throw err;
    let fn = jade.compile(data);
    let html = fn(templateVariables);
    let options = {
        pageSize: 'Letter',
        marginTop: '0.5in',
        marginLeft: '0.25in',
        marginRight: '1.0in',
        marginBottom: '0.5in'
    };
    if (html) {
        pdf.create(html, options).toFile('./example.pdf', function(err, res){
            if (err) {
                console.log(err);
                cb(err);
            }
            if (res) {
                console.log('pdf res ', res);
            }
        });
    }
});

答案 1 :(得分:0)

不支持html-pdf中的

css3。因此display :flex;之类的元素在html-pdf中不起作用,因此请使用float : left等类似的旧样式。