2013-04-23 4 views
1

Я использую pdf.js для извлечения аннотаций из pdf-файлов в дополнение к firefox. Все работает очень хорошо, кроме открытия локальных файлов PDF. PDFJS.getDocument('http://...').then(function(pdf) { ... работы но PDFJS.getDocument('file:///...').then(function(pdf) { нет. Я получаю эту ошибку: Unexpected server response (0) while retrieving PDF ...Открыть локальный файл pdf, используя pdf.js в расширении firefox

Это проблема междоменной? Я думал, что это не должно быть проблемой, потому что мой код работает с расширением. Как я могу решить эту проблему?

ответ

1

Прочтите файл в Uint8Array и передайте его как source в getDocument.

+0

Спасибо! Любые подсказки о том, как это сделать? Я могу просто передать Uint8Array 'getDocument', и я могу создать использование нового Uint8Array (...)' (см. [Здесь] (http://stackoverflow.com/questions/11251947/using-pdf-js-to -DISplay-PDF-из-сырьевых-данных/11671655 # 11671655)). Но я не уверен, как читать локальный файл в Uint8Array ... – user2503795

+1

Используйте [OS.File module] (https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread) (примите ответ, если вы сочтете это полезным, пожалуйста) – paa

+0

Я пытался выяснить, как читать файл в 'Uint8Array' навсегда, спасибо за ваш комментарий paa! – 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) {.....}) 
 
    
 
}