Стили отсутствуют в PDF, когда я преобразую HTML в PDF в Node JS

Я использую пакет узлов с именем 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 ответа

У меня это сработало с прямой ссылкой на файл .css. Это временно, но я думаю, что это хорошая отправная точка.

css файл находится в /public/css

Я понятия не имею о 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);
});

У меня была аналогичная проблема с html-pdf. В итоге я использовал встроенные теги стиля, и у меня это сработало.

Другие вопросы по тегам