Я запускаю приложение 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-адрес, указанный в этом примере, он также говорит то же самое.
Я сделал эту проблему более полной с некоторыми обновлениями, пожалуйста, дайте мне знать, если вы можете пролить свет. Ничто не влияет на функцию ошибки, и все, что я вижу в своей консоли, это то, что вы видите на скриншоте.
Мы не сможем помочь, пока не увидим полный пример и не найдем способ воспроизвести проблему локально. Пожалуйста, прочитайте https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.md и предоставьте дополнительную информацию по запросу.
@yurydelendik Как я должен донести до вас, что пример скрипки работает, но точно такой же код не работает в моей среде ... поэтому я не могу воспроизвести его для вас ... лучшее, что я могу придумать, это то, что Я могу провести с вами видеовстречу в Google или screenhero, чтобы показать вам.
Не могли бы вы хотя бы дать мне несколько возможностей?
Просто догадываюсь (из опыта):
что такое 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, вы все равно должны просто прокрутить их, чтобы сделать стандартный метод более точным. Он полон дыр.
Самый полезный комментарий
«Это не поможет, если имя pdf.js изменено или является частью объединенного файла». правда, но помимо моих собственных проблем с использованием Grails, вы все равно должны просто прокрутить их, чтобы сделать стандартный метод более точным. Он полон дыр.