2014-06-14 2 views
1

다음 PDF 파일을 표시하는 데 문제가 있습니다.PDF.js 글꼴로드 중 오류가 발생했습니다.

https://onedrive.live.com/redir?resid=BA2E9E42862EC5A7%21280

는 난 할 노력하고있어 PDF.js.에 Uint8Array이 파일을 전달하는 것입니다 내가 Acrobat Reader를 함께 열어있을 때 그것은 잘 작동하고

Warning: Setting up fake worker. pdf.js:106 
(while reading XRef): TypeError: Cannot read property 'get' of undefined  pdf.worker.js:5281 
Error 
at XRefParseExceptionClosure (http://127.0.0.1:8090/assets/js/vendor/pdf- js/pdf.worker.js:310:34) 
at pdfjsWrapper (http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:315:3) 
at http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:39174:4 pdf.worker.js:3801 
Warning: Indexing all PDF objects pdf.worker.js:106 
Error: Bad FCHECK in flate stream: 120, 253 pdf.worker.js:122 
at error (http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:124:7) 
at Object.FlateStream (http://127.0.0.1:8090/assets/js/vendor/pdf- js/pdf.worker.js:32044:7) 
at Object.Parser_makeFilter [as makeFilter] (http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:31227:16) 
at Object.Parser_filter [as filter] (http://127.0.0.1:8090/assets/js/vendor/pdf- js/pdf.worker.js:31212:25) 
at Object.Parser_makeStream [as makeStream] (http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:31192:21) 
at Object.Parser_getObj [as getObj] (http://127.0.0.1:8090/assets/js/vendor/pdf- js/pdf.worker.js:31028:18) 
at Object.XRef_fetch [as fetch] (http://127.0.0.1:8090/assets/js/vendor/pdf- js/pdf.worker.js:5352:22) 
at Object.XRef_fetchIfRef [as fetchIfRef] (http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:5298:19) 
at Object.Dict_get [as get] (http://127.0.0.1:8090/assets/js/vendor/pdf-js/pdf.worker.js:4466:28) pdf.worker.js:124 
Warning: Error during font loading: Bad FCHECK in flate stream: 120, 253 pdf.js:106 
page=1 - getOperatorList: time=4ms, len=0 pdf.worker.js:34290 

: 와 나는 다음과 같은 스택 트레이스를 얻고있다. 또한 이전에 파일 시스템에 저장 한 URI에서 열면 PDF.js에서도 잘 작동합니다.

function conver(str) { 
    var length = str.length; 
    var bytes = new Uint8Array(length); 
    for (var n = 0; n < length; ++n) 
    bytes[n] = str.charCodeAt(n) & 0xFF; 
    return bytes; 

}

당신이 나에게 그 뭔가를 조언 해 줄 수 있습니다 :

변환을 위해 나는 다음과 같은 기능을 사용하고 있습니다?

업데이트 : 내가 사용하고있는 글꼴에 문제가있는 것 같습니다. 'Franklin Gothic Medium Cond', Helvetica로 같은 것을 렌더링하려고하면 예상대로 작동합니다.

답변

1

내 서버 측에서 base64 인코딩을 사용하여 문제를 해결했습니다. 그래서 base64에서 형식화 된 배열로 변환 할 때이 함수를 사용합니다.

function convert (base64) { 
    var raw = atob(base64); 
    var arr = new Uint8Array(new ArrayBuffer(raw.length)); 
    for (var i = 0; i < raw.length; i++) { 
     arr[i] = raw.charCodeAt(i); 
    } 
    return arr; 
} 
관련 문제