PDF.JS: le Rendu PDF à l'aide d'un ArrayBuffer ou Blob au lieu de l'URL

Je sais que d'une question similaire à celui-ci: Pdf.js: le rendu d'un fichier pdf à l'aide d'un base64 fichier source au lieu de l'url. Cette question a été terriblement répondu par Codetoffel mais ma question est différent, mon PDF est extrait par l'intermédiaire d'un Réparateur appel à mon implémentation d'API Web. Laissez-moi vous expliquer...

D'abord, voici une méthode de base pour l'utilisation PDF.JS pour ouvrir un fichier PDF via une URL:

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});
  });
});

Cela fonctionne très bien, mais je suis en utilisant Angulaire et son $resource service pour faire la demande pour le fichier PDF via mon Web RESTful API. Je sais que PDF.JS me permet de remplacer en passant l'URL comme une chaîne de caractères dans le PDFJS.getDocument méthode (ci-dessus) avec un DocumentInitParams objet, qui est définie ici. À l'aide de la DocumentInitParams objet fonctionne comme suit:

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

Cela fonctionne aussi, mais il fonctionne autour de mon Angulaire $resource par m'oblige à construire l'URL de l'api. Mais c'est OK parce que PDFJS me permet de donner le PDF directement les données, au lieu de donner une URL pour le fichier PDF, comme suit:

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

//It's an Angular $resource, so there is a promise to be fulfilled...
myPdf.$promise.then(function() {
    var docInitParams = {
        data: myPdf
    };
    PDFJS.getDocument(docInitParams).then(function (pdf) {
        ...
    });
});

C'est celle que je n'arrive pas à obtenir de travailler. Je peux dire que les myService.$gtPdf méthode pour renvoyer les données en tant que blob ou comme un arraybuffer mais aucun ne fonctionne. J'ai essayé de convertir le arraybuffer données renvoyées à un Uint8Array trop, mais en vain.

Je ne suis pas sûr de ce que d'autre à essayer et pourrait vraiment utiliser une astuce.

Comment puis-je obtenir les données de retour de mon service fonctionne avec PDFJS?

Merci d'avance.

OriginalL'auteur witttness | 2014-06-18