问题
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.
回答1:
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';
}
回答2:
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.
回答3:
Specify psd.worker.js file path in your page where you want to use the pdf.js file (viewer.html in case you are using viewer.html come with distribution bundle) like this. It work for me.
<script>
PDFJS.workerSrc ='path to psd.worker.js';
回答4:
I added below code in end of pdf.js and working fine
if (!PDFJS.workerSrc && typeof document !== 'undefined') {
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');
})();
PDFJS.workerSrc = 'pdf.worker.js';
}
回答5:
Go to pdf.js
search function getWorkerSrc()
replace this lines
pdfjsFilePath = "YOUR_PATH_TO_JS_FILE/pdf.worker.js";
if (pdfjsFilePath) {
return pdfjsFilePath;
}
来源:https://stackoverflow.com/questions/26101071/no-pdfjs-workersrc-specified