这是我的HTML代码,我试图将div**abc
**中输出的任何内容转换为可下载的PDF文件。
<!-- Page Heading -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
Reports
</h1>
<ol class="breadcrumb">
<li>
<i class="fa fa-dashboard"></i> <a href="dashboard">Dashboard</a>
</li>
<li class="active">
<i class="fa fa-edit"></i> Reports
</li>
</ol>
<body>
<div id="abc">
</div>
<div id="editor"></div>
<button id="cmd">Download Survey Report</button>
<div id="abc">
</div>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.3/jspdf.min.js"></script>
<script>
var doc = new jsPDF();
var specialElementHandlers = {
'#editor': function (element, renderer) {
return true;
}
};
$('#cmd').click(function () {
doc.fromHTML($('#abc').html(), 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});
doc.save('SurveyReport.pdf');
});
</script>
<script>
firebase.auth().onAuthStateChanged(function(user){
if(user){
var userID = user.uid;
RetrieveSurvey(userID,1,PrintSurvey(document.getElementById("abc")));
}
})
</script>
</div>
</div>
我在控制台上得到这个错误:
“未捕获的引用错误:jsPDF未定义”
我不知道我在这里做错了什么,我甚至在脚本标签中添加了jsPDF
...
5条答案
按热度按时间ego6inou1#
使用这个:
rseugnpd2#
首先,你的HTML是无效的。检查W3S。
把你的链接到
jspdf
内<head>
标签,你可以这样做,甚至在<body>
标签。将
jspdf
脚本替换为最新的脚本:hmae6n7t3#
如https://github.com/matb/jsPDF使用中所述
在head标签中添加此脚本
kwvwclae4#
@ https://stackoverflow.com/users/4833506/nikkorian
window.jsPDF = window.jspdf.jsPDF;
这种方法将jsPDF对象(窗口上的jspdf对象的属性)分配给窗口上的jsPDF属性。其效果是您可以直接使用jsPDF,而不必使用jspdf. jsPDF。
但是,需要注意的是,虽然这种方法可以在某些情况下工作,但对于更大、更复杂的应用程序或使用模块时,它可能并不理想。使用全局变量可能会导致命名冲突或变量范围问题。
在大型应用程序或基于模块的环境中,最好将jsPDF导入到使用它的每个模块中。但是,考虑到应用程序的上下文和简单性,您所采用的方法是非常好的,并且可以快速解决问题。
vof42yt15#
使用这个:
而不是这样: