Фон
У меня есть таблица записей, в которой используется элемент управления "tabulator", чтобы пользователи могли сортировать, фильтровать и т. Д., Как только у них есть результаты, которые они хотят получить в таблице.Необходимо предоставить пользователям способ инициировать создание PDF в строке, используя шаблон PDF.В верхней части страницы у меня есть выпадающее меню, где они могут выбрать шаблон.Например, у него будут такие параметры:
- PDF с синим логотипом
- PDF с розовым логотипом
и т. Д.
Что я знаю, как делать: 1. Я знаю, как циклически проходить по выбранным записям в моей таблице в jquery 2. Я знаю, как создать базовый документ jsPDF.3. Механизм «шаблона» будет просто 2 разных, которые предопределены на веб-странице.В зависимости от того, какой вариант они выбирают в раскрывающемся списке, я могу определить, какой логотип включить.
Проблема
Похоже, что если DIV, которые будут включены в PDF, не видны, html2canvas не будет работать.
Пока что это код прототипа, с которым я играю: (кроме того факта, что DIV, который я пытаюсь показать в PDF, отображается на экране, все остальное работает).
<div id="bluetemplate" class="ug_logo_style" style="display: none">
<img class="bluelogo"></img>
</div>
<div id="pinktemplate" class="ug_logo_style" style="display: none">
<img class="pinklogo"></img>
</div>
$("#templatedropdown").change(function(){
var selectedtemplate = this.value;
switch (selectedtemplate){
case 'blue':
$("div#bluetemplate").show();
$("div#pinktemplate").hide();
break;
case 'pink':
$("div#pinktemplate").show();
$("div#bluetemplate").hide();
break;
}
});
$("#btntemplate").click(function(){
switch($('#template option:selected').val()){
case 'blue':
var imgData;
html2canvas($("#bluetemplate"), {
useCORS: true,
onrendered: function (canvas) {
imgData = canvas.toDataURL(
'image/png');
var doc = new jsPDF({
orientation: 'landscape',
unit:'pt',
format:[400,200]});
doc.addImage(imgData, 'PNG', 10, 10);
doc.text(registrant.first_name + " " + registrant.last_name, 10, 100);
doc.text(registrant.email, 10, 120);
doc.save(registrant.event_id + '_' + registrant.id + '.pdf');
window.open(imgData);
}
});
break;
case 'pink':
var imgData;
html2canvas($("#pinktemplate"), {
useCORS: true,
onrendered: function (canvas) {
imgData = canvas.toDataURL(
'image/png');
var doc = new jsPDF({
orientation: 'landscape',
unit:'pt',
format:[400,200]});
doc.addImage(imgData, 'PNG', 10, 10);
doc.text(registrant.first_name + " " + registrant.last_name, 10, 100);
doc.text(registrant.email, 10, 120);
doc.save(registrant.event_id + '_' + registrant.id + '.pdf');
window.open(imgData);
}
});
break;
}