首页 > 解决方案 > 尝试保存 PDF 时 IE 中的 jsPDF“预期对象”异常

问题描述

尝试保存 PDF 文件时,会出现以下堆栈跟踪并且文件未下载:

TypeError: Object expected
at API.save (http://localhost:8080/applications/lib/jspdf/jspdf.debug.js:3648:11)
at Anonymous function (http://localhost:8080/applications/js/<my_custom_js_file>.js:288:12)
at Anonymous function (http://localhost:8080/applications/lib/angular-1.5.8/angular.min.js:158:482)
at e (http://localhost:8080/applications/lib/angular-1.5.8/angular.min.js:45:442)
at Anonymous function (http://localhost:8080/applications/lib/angular-1.5.8/angular.min.js:48:300)

还尝试了一个简单的示例并得到了相同的结果:

var doc = new jsPDF();
doc.text("hello", 20, 20);
doc.save("table.pdf");

标签: jspdf

解决方案


IE 不支持原生 Promise。因此,初始化脚本在版本 1.5.3 的第 12016 行失败:

SCRIPT5009: 'Promise' is undefined
jspdf.debug.js (12016,5)

之后,脚本不再初始化所需的上下文。

修复应该是第 3 方承诺库 - 我已经通过在包含 jspdf.debug.js 之前包含以下资源来解决它:

<script type="text/javascript" src="/applications/lib/ie-promise/es6-promise.js"></script>
<script type="text/javascript" src="/applications/lib/ie-promise/es6-promise@4/dist/es6-promise.auto.js"></script> 

推荐阅读