Pdf.js: PDFJS.getDocument ne fonctionne pas

Créé le 31 déc. 2014  ·  12Commentaires  ·  Source: mozilla/pdf.js

J'exécute une application grails sur un hôte local (dont je sais qu'il y a un problème avec pdf.js et le système de fichiers local) et au lieu d'utiliser un fichier: url qui, je le sais, échouerait, je passe dans un tableau javascript typé et c'est toujours en échec. Pour être exact, cela ne me dit rien d'autre que "Attention : Mise en place d'un faux travailleur". et puis ça ne fait rien.

this.base64ToBinary = function(dataURI) {
        var BASE64_MARKER = ';base64,';
        var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
        var base64 = dataURI.substring(base64Index);
        var raw = window.atob(base64);
        var rawLength = raw.length;
        var array = new Uint8Array(new ArrayBuffer(rawLength));

        for(i = 0; i < rawLength; i++) {
        array[i] = raw.charCodeAt(i);
        }
        return array;
    };

PDFJS.disableWorker = true; // due to CORS

// I convert some base64 data to binary data here which comes back correctly
var data = utilities.base64ToBinary(result);

PDFJS.getDocument(data).then(function (pdf) {
         //nothing console logs or reaches here
         console.log(pdf);
}).catch(function(error){
//no error message is logged either
            console.log("Error occurred", error);
        });

Je me demande si je ne l'ai pas configuré correctement? Puis-je utiliser cette bibliothèque uniquement côté client en incluant simplement pdf.js ou dois-je également inclure viewer.js ? et aussi j'ai remarqué le fichier de compatibilité... la configuration n'est pas très claire et cet exemple http://jsfiddle.net/epistemex/LUNaJ/ fonctionne et le mien ne fonctionne pas et je ne comprends pas la différence. De plus, si j'utilise l'URL fournie dans cet exemple, cela dit également la même chose.

screen shot 2014-12-31 at 11 59 17 am

1-other 4-information-requested

Commentaire le plus utile

"Cela n'aidera pas si le nom pdf.js est modifié ou fait partie du fichier combiné." vrai, mais à part mes propres problèmes d'utilisation des grails, vous devriez simplement les parcourir de toute façon pour rendre la méthode standard plus précise. C'est plein de trous.

Tous les 12 commentaires

J'ai rendu ce problème plus complet avec quelques mises à jour, veuillez me faire savoir si vous pouvez m'éclairer. Rien ne touche non plus la fonction d'erreur et tout ce que je vois dans ma console est ce que vous voyez dans la capture d'écran.

Nous ne pouvons pas vous aider tant que nous n'aurons pas vu l'exemple complet et trouvé un moyen de reproduire le problème localement. Veuillez lire https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.md et fournir plus d'informations comme demandé.

@yurydelendik Comment suis-je censé vous faire parvenir cela, l'exemple de violon fonctionne mais exactement le même code ne fonctionne pas sur mon environnement ... donc je ne peux pas le reproduire pour vous ... le mieux que je puisse penser est que je peux faire un google hangout ou screenhero avec vous pour vous montrer.

Pourriez-vous au moins me donner quelques possibilités?

Juste deviner (par expérience):

  • ancien moteur webkit/javascript (cela est généralement corrigé en ajoutant compatibility.js)
  • ancienne version de PDF.js (veuillez utiliser la version publiée ou npm/bower pdfjs-dist)
  • mauvaise configuration pour disableWorker/workerSrc
  • simple erreur du journaliste/développeur du problème

qu'est-ce que pdf.worker.js ?

J'utilise la dernière version. Existe-t-il également une documentation sur disableWorker/workerSrc ?

pdf.worker.js est le fichier principal qui effectue l'analyse PDF (fil principal de la page extérieure). Lorsque disableWorker=true, il sera automatiquement chargé dans la page principale (à partir de l'emplacement workerSrc) et bloquera l'interface utilisateur pour les besoins d'analyse PDF. Voir https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L65

ahhh ok j'ai compris quel est le problème ... vous devriez probablement en faire note dans la documentation ou le préciser. Donc, si vous ne spécifiez pas workerSrc, vous essayez de comprendre ce que c'est en utilisant la dernière balise de script dans la tête de l'application pour aller la charger, mais que se passe-t-il si l'application est grails ou sert un fichier uri combiné ? Vous ne pouvez pas non plus supposer de manière fiable que la dernière balise de script aurait la source correcte. Si vous voulez le faire correctement, vous devez parcourir toutes les balises de script dans la tête à la recherche de pdf.js dans chaque src, puis utiliser la source correcte au lieu de saisir la dernière.

Personnellement, je ne connais rien au graal. Nous avons workerSrc configurable pour ces cas.

vous auriez besoin de parcourir toutes les balises de script

Cela n'aidera pas dans le cas où le nom pdf.js est modifié ou fait partie du fichier combiné.

Fermeture comme invalide.

"Cela n'aidera pas si le nom pdf.js est modifié ou fait partie du fichier combiné." vrai, mais à part mes propres problèmes d'utilisation des grails, vous devriez simplement les parcourir de toute façon pour rendre la méthode standard plus précise. C'est plein de trous.

Cette page vous a été utile?
0 / 5 - 0 notes