背景
我有一个记录表,它使用“制表器”控件允许用户排序、筛选等。
一旦他们在表中得到了想要的结果,我需要为用户提供一种方法,使用pdf模板触发每行pdf的创建。
在页面的顶部,我有一个下拉菜单,他们可以在其中选择模板。例如,它将有如下选项:
等。
我知道怎么做:
1。我知道如何在jquery中遍历表中选定的记录
2。我知道如何创建一个基本的jspdf文档。
三。“模板”机制只是在网页中预定义的两种不同的机制。根据它们在下拉菜单中选择的选项,我可以确定要包含哪个徽标。
问题
似乎除非pdf中包含的div是可见的,否则html2canvas将不起作用。
到目前为止,这是我一直在玩的原型代码:
(除了我正在尝试pdf的div显示在屏幕上,其他一切都正常。)
<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;
}