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.
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):
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.
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.