Стили отсутствуют в 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. В итоге я использовал встроенные теги стиля, и у меня это сработало.