Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No PDFJS.workerSrc specified

Trying to use PDF JS in a local Apache server and receiving the following error in console:

Uncaught Error: No PDFJS.workerSrc specified

This is very weird, because I'm following all that the examples specifies here http://mozilla.github.io/pdf.js/examples/.

I have, in my main folder, a sample file called file.pdf and I'm just trying to display it. I did it by using a iframe with a file parameter:

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

And now I'm trying to use the JavaScript API to display it. I'm trying to do:

<!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>

If I try to include pdf.worker.js manually, I receive:

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

because it programmatically includes pdf.worker.js.

With the sample code I posted here, I receive a log and an error:

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

Do I need to manually specify pdf.worker.js? Please, what can I try to solve this?

Thank you so much!

(*) - I can see a lack of good content and a well explained documentation of PDF.JS.

like image 870
Marcelo Camargo Avatar asked Sep 29 '14 13:09

Marcelo Camargo


People also ask

What is a Workersrc?

Worker-src is a Content Security Policy (CSP) Level 3 directive that was introduced to specify valid sources for worker scripts (worker, shared worker and service worker) Web Workers makes it possible to run a script operation in a background thread separate from the main execution thread of a web application.

What is PDF JS worker?

A general-purpose, web standards-based platform for parsing and rendering PDFs. Download Demo GitHub Project. ©Mozilla and individual contributors. PDF.js is licensed under Apache, documentation is licensed under CC BY-SA 2.5.


2 Answers

I had a similar error and I fixed it by specifying the pdf.worker.js explicitly at the end of the 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';
}
like image 182
Will Avatar answered Sep 29 '22 16:09

Will


Include compatibility.js to fix the "Uncaught Error: No PDFJS.workerSrc specified" error on IE11.

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

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

compatibility.js implements any missing functionality required by PDFJS.

Note: It should be loaded before PDFJS, not after.

like image 25
ProgrammerGuy Avatar answered Sep 29 '22 16:09

ProgrammerGuy