Pdf.js: PDFJS.getDocument не работает

Созданный на 31 дек. 2014  ·  12Комментарии  ·  Источник: mozilla/pdf.js

Я запускаю приложение Grails на локальном хосте (я знаю, что есть проблема с pdf.js и локальной файловой системой) и вместо использования файла: URL-адрес, который, как я знаю, не будет работать, я передаю типизированный массив javascript, и это все еще не удается. Если быть точным, это не говорит мне ничего, кроме «Предупреждение: настройка поддельного рабочего». а потом ничего не делает.

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

Мне интересно, может я просто не правильно настроил? Могу ли я использовать эту библиотеку исключительно на стороне клиента, просто включив pdf.js, или мне нужно также включить viewer.js? а также я заметил файл совместимости ... настройка не очень понятна, и этот пример http://jsfiddle.net/epistemex/LUNaJ/ работает, а мой - нет, и я не понимаю разницы. Также, если я использую URL-адрес, указанный в этом примере, он также говорит то же самое.

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

1-other 4-information-requested

Самый полезный комментарий

«Это не поможет, если имя pdf.js изменено или является частью объединенного файла». правда, но помимо моих собственных проблем с использованием Grails, вы все равно должны просто прокрутить их, чтобы сделать стандартный метод более точным. Он полон дыр.

Все 12 Комментарий

Я сделал эту проблему более полной с некоторыми обновлениями, пожалуйста, дайте мне знать, если вы можете пролить свет. Ничто не влияет на функцию ошибки, и все, что я вижу в своей консоли, это то, что вы видите на скриншоте.

Мы не сможем помочь, пока не увидим полный пример и не найдем способ воспроизвести проблему локально. Пожалуйста, прочитайте https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.md и предоставьте дополнительную информацию по запросу.

@yurydelendik Как я должен донести до вас, что пример скрипки работает, но точно такой же код не работает в моей среде ... поэтому я не могу воспроизвести его для вас ... лучшее, что я могу придумать, это то, что Я могу провести с вами видеовстречу в Google или screenhero, чтобы показать вам.

Не могли бы вы хотя бы дать мне несколько возможностей?

Просто догадываюсь (из опыта):

  • устаревший движок webkit/javascript (обычно это исправляется добавлением compatibility.js)
  • старая версия PDF.js (пожалуйста, используйте выпущенную версию или npm/bower pdfjs-dist)
  • неправильная конфигурация для disableWorker/workerSrc
  • простая ошибка репортера/разработчика проблемы

что такое pdf.worker.js?

Я использую последнюю версию. Также есть ли документация по disableWorker/workerSrc?

pdf.worker.js — это основной файл, который выполняет синтаксический анализ PDF (вне основного потока страницы). Когда disableWorker=true, он будет автоматически загружен на главную страницу (из расположения workerSrc) и заблокирует пользовательский интерфейс для нужд парсинга PDF. См. https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L65 .

ааа, хорошо, я понял, в чем проблема... вам, вероятно, следует сделать пометку об этом в документации или пояснить. Итак, если вы не укажете workerSrc, вы попытаетесь выяснить, что это такое, используя последний тег script в заголовке приложения, чтобы перейти и загрузить его, но что, если приложение является grails или обслуживает какой-то комбинированный файл uri? Вы также не можете с уверенностью предположить, что последний тег сценария будет иметь правильный источник. Если вы хотите сделать это правильно, вам нужно перебрать все теги script в голове, ища pdf.js в каждом src, а затем использовать правильный источник вместо захвата последнего.

Я лично ничего не знаю о Grails. У нас есть workerSrc, настраиваемый для таких случаев.

вам нужно будет перебрать все теги скрипта

Это не поможет в случае, когда имя pdf.js изменено или часть объединенного файла.

Закрытие как недействительное.

«Это не поможет, если имя pdf.js изменено или является частью объединенного файла». правда, но помимо моих собственных проблем с использованием Grails, вы все равно должны просто прокрутить их, чтобы сделать стандартный метод более точным. Он полон дыр.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги