Pdf.js: PDFJS.getDocument não está funcionando

Criado em 31 dez. 2014  ·  12Comentários  ·  Fonte: mozilla/pdf.js

Estou executando um aplicativo grails no host local (que eu sei que há um problema com o pdf.js e o sistema de arquivos local) e, em vez de usar um arquivo: url, que eu sei que falharia, estou passando em uma matriz javascript digitada e é ainda falhando. Para ser correto, não está me dizendo nada além de "Aviso: Configurando um trabalhador falso". e então não faz nada.

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

Eu estou querendo saber se eu apenas não configurou corretamente? Posso usar essa biblioteca apenas no lado do cliente incluindo apenas pdf.js ou preciso incluir viewer.js também? e também notei arquivo de compatibilidade ... a configuração não é muito clara e este exemplo http://jsfiddle.net/epistemex/LUNaJ/ funciona e o meu não e não estou entendendo a diferença. Além disso, se eu usar o URL fornecido nesse exemplo, ele também diz a mesma coisa.

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

1-other 4-information-requested

Comentários muito úteis

"Isso não ajudará caso o nome do pdf.js seja alterado ou parte do arquivo combinado." true, mas além dos meus próprios problemas usando grails, você deve apenas percorrê-los de qualquer maneira para tornar o método padrão mais preciso. Está cheio de buracos.

Todos 12 comentários

Tornei este problema mais abrangente com algumas atualizações, por favor, deixe-me saber se você pode lançar alguma luz. Nada atinge a função de erro e tudo o que vejo no meu console é o que você vê na captura de tela.

Não podemos ajudar até que vejamos o exemplo completo e tenhamos uma maneira de reproduzir o problema localmente. Leia https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.md e forneça mais informações conforme solicitado.

@yurydelendik Como devo fazer isso para você, o exemplo do violino funciona, mas o mesmo código não funciona no meu ambiente ... portanto, não posso reproduzi-lo para você ... o melhor que consigo pensar é que posso fazer um google hangout ou screenhero com você para mostrar a você.

Você poderia pelo menos me dar algumas possibilidades?

Apenas supondo (por experiência):

  • mecanismo legado de webkit/javascript (isso geralmente é corrigido adicionando compatibility.js)
  • versão antiga do PDF.js (por favor, use a versão lançada ou npm/bower pdfjs-dist)
  • configuração errada para disableWorker/workerSrc
  • simples erro do relator/desenvolvedor do problema

o que é pdf.worker.js?

Estou usando a versão mais recente. Também existe alguma documentação sobre disableWorker/workerSrc?

pdf.worker.js é o arquivo principal que executa a análise de PDF (thread principal da página externa). Quando disableWorker=true, ele será carregado na página principal automaticamente (do local do workerSrc) e bloqueará a interface do usuário para necessidades de análise de PDF. Veja https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L65

ahhh ok eu descobri qual é o problema... você provavelmente deveria anotar isso na documentação ou deixar claro. Então, se você não especificar workerSrc, tente descobrir o que é usando a última tag de script no cabeçalho do aplicativo para carregá-lo, mas e se o aplicativo for grails ou servir algum arquivo combinado uri? Você também não pode presumir com segurança que a última tag de script teria a origem correta. Se você quiser fazer isso da maneira correta, precisará percorrer todas as tags de script no cabeçalho procurando por pdf.js em cada src e, em seguida, usar a fonte correta em vez de pegar a última.

Eu pessoalmente não sei nada sobre grails. Temos workerSrc configurável para esses casos.

você precisa percorrer todas as tags de script

Isso não ajudará caso o nome pdf.js seja alterado ou parte do arquivo combinado.

Fechando como inválido.

"Isso não ajudará caso o nome do pdf.js seja alterado ou parte do arquivo combinado." true, mas além dos meus próprios problemas usando grails, você deve apenas percorrê-los de qualquer maneira para tornar o método padrão mais preciso. Está cheio de buracos.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

AlexP3 picture AlexP3  ·  3Comentários

jigskpatel picture jigskpatel  ·  3Comentários

timvandermeij picture timvandermeij  ·  4Comentários

aaronshaf picture aaronshaf  ·  3Comentários

liuzhen2008 picture liuzhen2008  ·  4Comentários