您不是将响应数据传递给PDF.js,而是资源的一个实例:
var myPdf = myService.$getPdf({ Id: 123 });myPdf.$promise.then(function() { var docInitParams = { data: myPdf
您尚未显示的代码
$getPdf,但我想它等同于
var myService = $resource('/foo', {}, {$getPdf:{responseType: 'arraybuffer'}});var myPdf = myService.$getPdf();
默认情况下,AngularJS
$resource将响应视为对象(从JSON反序列化)并将任何属性从对象复制到资源实例(
myPdf在上一片段中)。
显然,由于您的响应是数组缓冲区(或Blob,类型化数组或其他),因此将无法正常工作。获得所需响应的一种方法是使用
transformResponse将响应对象包装在一个对象中:
var myService = $resource('/foo', {}, { $getPdf: { responseType: 'arraybuffer', transformResponse: function(data, headersGetter) { // Stores the ArrayBuffer object in a property called "data" return { data: data }; } }});var myPdf = myService.$getPdf();myPdf.$promise.then(function() { var docInitParams = { data: myPdf.data }; PDFJS.getdocument(docInitParams).then(function (pdf) { // ... });});
或者只是以下内容(避免了不必要的局部变量):
myService.$getPdf().$promise.then(function(myPdf) { PDFJS.getdocument({ data: myPdf.data }).then(function (pdf) { // ... });});
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)