PDF.JS:使用ArrayBuffer或Blob而不是URL呈现PDF

PDF.JS:使用ArrayBuffer或Blob而不是URL呈现PDF,第1张

PDF.JS:使用ArrayBuffer或Blob而不是URL呈现PDF

您不是将响应数据传递给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) {        // ...    });});


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存