相关疑难解决方法(0)

PDF.JS:使用ArrayBuffer或Blob而不是URL渲染PDF

我知道一个类似的问题:Pdf.js:使用base64文件源而不是url呈现pdf文件.这个问题得到了Codetoffel的极好回答,但我的问题不同之处在于我的PDF是通过RESTful调用我的Web API实现来检索的.让我解释...

首先,这是使用PDF.JS通过URL打开PDF的基本方法:

PDFJS.getDocument("/api/path/to/my.pdf").then(function (pdf) {
  pdf.getPage(1).then(function (page) {
    var scale = 1;
    var viewport = page.getViewport(scale);
    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;
    page.render({canvasContext: context, viewport: viewport});
  });
});
Run Code Online (Sandbox Code Playgroud)

这很好用,但我使用Angular及其$resource服务通过我的RESTful Web API发出PDF请求.我知道PDF.JS让我来代替传递URL作为PDFJS.getDocument方法(上图)的字符串中包含DocumentInitParams的对象,它被定义在这里.使用DocumentInitParams对象的工作方式如下:

var docInitParams = {
    url: "/api/path/to/my.pdf",
    httpHeaders: getSecurityHeaders(), //as needed
    withCredentials: true
};
PDFJS.getDocument(docInitParams).then(function (pdf) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

这也有效,但它可以$resource通过要求我构建api URL来解决我的Angular问题.但这没关系,因为PDFJS允许我直接给它PDF数据,而不是给它一个PDF的URL,如下所示:

var myPdf = myService.$getPdf({ Id: 123 });

//It's …
Run Code Online (Sandbox Code Playgroud)

javascript rest angularjs pdf.js angular-resource

10
推荐指数
1
解决办法
3万
查看次数

标签 统计

angular-resource ×1

angularjs ×1

javascript ×1

pdf.js ×1

rest ×1