2013-04-23 5 views
1

pdf.js을 사용하여 firefox 애드온의 pdf 파일에서 주석을 추출합니다. 로컬 PDF 파일을 여는 것 외에는 모두 잘 작동합니다. PDFJS.getDocument('http://...').then(function(pdf) { ...은 작동하지만 PDFJS.getDocument('file:///...').then(function(pdf) {은 그렇지 않습니다. 이 오류가 발생합니다 : Unexpected server response (0) while retrieving PDF ...firefox 확장자에서 pdf.js를 사용하여 로컬 pdf 파일 열기

이 문제는 도메인 간 문제입니까? 내 코드가 확장 프로그램에서 실행되기 때문에 문제가되지 않아야한다고 생각했습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

1

파일을 Uint8Array로 읽어 들여 source에서 getDocument으로 전달하십시오.

+0

감사합니다! 어떻게해야하는지에 대한 힌트가 있습니까? Uint8Array를'getDocument'에 전달하면 new Uint8Array (...)를 사용하여 만들 수 있습니다 ([here] (http://stackoverflow.com/questions/11251947/using-pdf-js-to 참조). -display-pdf-raw-data/11671655 # 11671655)). 하지만 Uint8Array에 로컬 파일을 읽는 방법을 모르겠습니다 ... – user2503795

+1

[OS.File 모듈] (https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread)을 사용하십시오.) (유용하다고 생각하시면 답변을 받아주십시오.) – paa

+0

나는 'Uint8Array' 파일을 영원히 읽는 방법을 알아 내려고 노력하고 있습니다. – Noitidart

0

다음은 일러스트레이션으로 만 작동하는 단순화 된 JS입니다. 먼저 파일을 배열 버퍼 (e.target.result)로 가져온 다음 Uint8 배열로 변환하고 데이터로 PDF.js로 전달합니다 (docInitParams) 대신 URL

var reader = new FileReader(); 
 
    reader.readAsArrayBuffer(input.files[0]); 
 
    reader.onload = function (e) { 
 
    
 
    var myData = new Uint8Array(e.target.result) 
 
\t var docInitParams = { data: myData }; 
 
\t 
 
\t PDFJS.getDocument(docInitParams).then(function(pdf) {.....}) 
 
    
 
}