Не указан PDFJS.workerSrc

Попытка использования PDF JS на локальном сервере Apache и получение в консоли следующей ошибки:

Uncaught Error: No PDFJS.workerSrc specified

Это очень странно, потому что я следую всем примерам здесь http://mozilla.github.io/pdf.js/examples/.

В моей основной папке есть образец файла с именем file.pdf, и я просто пытаюсь его отобразить. Я сделал это, используя iframe с параметром file:

<iframe src="./web/viewer.html?file=http://localhost:99/PDF/arquivo.pdf" width="1800px" height="900px" />

И теперь я пытаюсь использовать JavaScript API для его отображения. Я пытаюсь сделать:

<!DOCTYPE html>
<html>
    <head>
        <script src="./build/pdf.js" type="text/javascript"></script>       
        <script type="text/javascript">
            PDFJS.getDocument('arquivo.pdf').then(function(pdf) {
                // Here I use it
            })
        </script>
    </head>
    <body>
    </body>
</html>

Если я попытаюсь включить pdf.worker.js вручную, я получаю:

GET http://localhost:99/PDF/build/pdf.worker.worker.js 404 (Not Found)

потому что он программно включает pdf.worker.js.

С примером кода, который я разместил здесь, я получаю журнал и ошибку:

Error: No PDFJS.workerSrc specified pdf.js:249
    at error (http://localhost:99/PDF/build/pdf.js:251:15)
    at Object.WorkerTransport (http://localhost:99/PDF/build/pdf.js:2305:9)
    at Object.getDocument (http://localhost:99/PDF/build/pdf.js:1805:15)
    at http://localhost:99/PDF/:6:10 pdf.js:251
Warning: Unsupported feature "unknown" pdf.js:234
Uncaught Error: No PDFJS.workerSrc specified

Нужно ли вручную указывать pdf.worker.js? Пожалуйста, что я могу попытаться решить?

Большое вам спасибо!

(*) - Я вижу недостаток хорошего контента и хорошо объясненную документацию PDF.JS.

Ответ 1

У меня была аналогичная ошибка, и я исправил ее, указав файл pdf.worker.js явно в конце pdf.js

if (!PDFJS.workerSrc && typeof document !== 'undefined') {
  // workerSrc is not set -- using last script url to define default location
  ****** I have no clue what the code below hope to accomplish ********
  ****** How can it locate the script container by assuming it ********
  ****** always would be at the end of <body> or <head> ????   ********
  PDFJS.workerSrc = (function () {
    'use strict';
    var scriptTagContainer = document.body ||
                             document.getElementsByTagName('head')[0];
    var pdfjsSrc = scriptTagContainer.lastChild.src;
    return pdfjsSrc && pdfjsSrc.replace(/\.js$/i, '.worker.js');
  })();


  ****** Here I just hardcode the location of the needed file *********
  ****** This is the part that makes it work.                 *********
  ****** Obviously, tailor this to the same path of pdf.js    *********
  PDFJS.workerSrc = '/static/js/pdf.worker.js';
}

Ответ 2

Включить Compat.js, чтобы исправить ошибку "Неисправленная ошибка: нет PDFJS.workerSrc" в IE11.

https://github.com/mozilla/pdf.js/blob/master/src/shared/compatibility.js

<script src="compatibility.js"></script>
<script src="pdf.js"></script>

compatible.js реализует любую недостающую функциональность, требуемую PDFJS.

Примечание: Он должен быть загружен перед PDFJS, а не после.

Ответ 3

Укажите путь к файлу psd.worker.js на своей странице, где вы хотите использовать файл pdf.js(viewer.html, если вы используете viewer.html, поставляются вместе с дистрибутивом). Это работает для меня.

<script>
    PDFJS.workerSrc ='path to psd.worker.js';

Ответ 4

Перейдите в pdf.js

функция поиска getWorkerSrc()

заменить эти строки

pdfjsFilePath = "YOUR_PATH_TO_JS_FILE/pdf.worker.js";
if (pdfjsFilePath) {
  return pdfjsFilePath;
}