Экспорт PDF с помощью jspdf not rendering CSS
Я использую jspdf.debug.js для экспорта разных данных с веб-сайта, но есть несколько проблем, я не могу заставить его отображать CSS в экспортированном PDF файле, и если у меня есть изображение на странице, я экспорт, PDF возвращает пустое...
Кто-нибудь знает, как это исправить?
Вот jsfiddle, показывая, что это не отображение CSS
И мой script
$(document).ready(function() {
$('#export').click(function(){
var d = new Date().toISOString().slice(0, 19).replace(/-/g, ""),
filename = 'financiar_' + d + '.pdf',
pdf = new jsPDF('p', 'pt', 'letter'),
specialElementHandlers = {
'#editor': function( element, renderer ) {
return true;
}
};
pdf.fromHTML(
$('.export').get(0) // HTML element
, 25 // x coord
, 25 // y coord
, {
'width': 550 // was 7.5, max width of content on PDF
, elementHandlers: specialElementHandlers
}
);
pdf.save( filename );
})
});
Ответы
Ответ 1
Как я знаю, jsPDF не работает с CSS, и с той же проблемой я столкнулся.
Чтобы решить эту проблему, я использовал Html2Canvas. Просто добавьте HTML2Canvas JS, а затем используйте pdf.addHTML()
вместо pdf.fromHTML()
.
Вот мой код (без другого кода):
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.addHTML($('#ElementYouWantToConvertToPdf')[0], function () {
pdf.save('Test.pdf');
});
Удачи!
Изменить: Обратитесь к этой строке, если вы не нашли .addHTML()
Ответ 2
jspdf не работает с css, но может работать вместе с html2canvas. Вы можете использовать jspdf вместе с html2canvas.
включить эти два файла в script на вашей странице:
<script type="text/javascript" src="html2canvas.js"></script>
<script type="text/javascript" src="jspdf.min.js"></script>
<script type="text/javascript">
function genPDF()
{
html2canvas(document.body,{
onrendered:function(canvas){
var img=canvas.toDataURL("image/png");
var doc = new jsPDF();
doc.addImage(img,'JPEG',20,20);
doc.save('test.pdf');
}
});
}
</script>
Вам необходимо скачать script файлы, такие как
https://github.com/niklasvh/html2canvas/releases
https://cdnjs.com/libraries/jspdf
сделайте нажав кнопку на странице, чтобы она создавала PDF, и она будет видна так же, как и исходная страница html.
<a href="javascript:genPDF()">Download PDF</a>
Он будет работать отлично.
Ответ 3
Вы можете получить пример преобразования HTML в PDF с использованием jspdf по следующей ссылке: JSFiddle Link
Это пример кода для загрузки jspdf html в pdf.
$('#print-btn').click(() => {
var pdf = new jsPDF('p','pt','a4');
pdf.addHTML(document.body,function() {
pdf.save('web.pdf');
});
})
Ответ 4
Небольшое изменение в @rejesh-yadav прекрасный ответ.
html2canvas теперь возвращает обещание.
html2canvas(document.body).then(function (canvas) {
var img = canvas.toDataURL("image/png");
var doc = new jsPDF();
doc.addImage(img, 'JPEG', 10, 10);
doc.save('test.pdf');
});
Надеюсь, это поможет некоторым!
Ответ 5
Чтобы удалить черный фон, добавьте только цвет фона: белый; в стиле