栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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) {        // ...    });});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号