У меня есть внешний html-файл, который я хотел бы напечатать в формате PDF, но у меня возникают проблемы с использованием примера кода, чтобы он работал как задумано, и я, очевидно, упускаю что-то тривиальное при его реализации.
На данный момент это мой код:
function savePDF(data) {
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(data, 'text/html');
let pdf = new jsPDF('p','pt','a4');
pdf.addHTML(
htmlDoc.body, // HTML DOM element.
);
pdf.save("test.pdf");
}
Где data
- строка, содержащая html внешней веб-страницы, которую я хочу преобразовать в pdf.
Chrome генерирует ошибку TypeError: Cannot read property 'innerWidth' of null
Это, например, прекрасно работает (используется fromHTML
вместо addHTML
), но отсутствует CSS / стиль:
function savePDF(data) {
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(data, 'text/html');
let pdf = new jsPDF('p','pt','a4');
pdf.fromHTML(htmlDoc.body.innerHTML, 0, 0, {},
function(){pdf.save('test.pdf');
});
}
Пример HTML-кода, который я использую:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PDF Test</title>
</head>
<body>
<div id="capture" style="padding: 10px; background: #f5da55">
<h4 style="color: #000; ">Hello world!</h4>
</div>
</body>
</html>