在Node JS中将html转换为pdf时,pdf缺少样式

时间:2018-08-25 09:46:38

标签: node.js pdf html-to-pdf

我正在使用名为html-pdf的节点包将HTML转换为PDF。

我可以创建PDF,但是缺少样式部分。

下面是我的代码:

var html = fs.readFileSync('./charts.html', 'utf8');

var options = { format: 'A4'};

pdf.create(html, options).toFile('./charts.pdf', function(err, res) {
     if (err) return console.log(err);
     console.log(res); 
 }); 

我该如何获得样式?

3 个答案:

答案 0 :(得分:0)

我不了解html-to-pdf,但我使用了phantom-html-to-pdf 在这里,我使用了Materialise CSS,您可以使用Bootstrap或您想要的任何东西 我认为这种方法也适用于

var conversion = require("phantom-html-to-pdf")();
var fs=require("fs");
var resulthtml = "";
resulthtml += '<html>';
resulthtml += '<head>';
resulthtml += '<script src="bower_components/materialize/dist/js/materialize.js"></script>';
resulthtml += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css">';
resulthtml += '<link rel="stylesheet" href="bower_components/materialize/dist/css/materialize.min.css" />';
resulthtml += '</head>';
resulthtml += '<body>';
resulthtml += '<div class="row">';
/* 
       use html body whatever u want

*/
resulthtml += '</div>';
resulthtml += '</body>';
resulthtml += '<html>';
conversion({ html: resulthtml }, function (err, pdf) {

    var output = fs.createWriteStream('sample.pdf');
    console.log(pdf.logs);
    // respond an http request.
    pdf.stream.pipe(output);
});

答案 1 :(得分:0)

它对我有用,直接链接到 .css 文件。这是暂时的,但我认为这是一个很好的起点。

css 文件在 /public/css 下

app.use(express.static("public"));
 <link href="http://localhost:3000/css/styles.css" rel="stylesheet" type="text/css">

答案 2 :(得分:-2)

我在html-pdf中也有类似的问题。我最终使用了内联样式标签,并且对我有用。