尝试在本地Apache服务器中使用PDF JS并在控制台中收到以下错误:
Uncaught Error: No PDFJS.workerSrc specified
这非常奇怪,因为我按照这里的例子http://mozilla.github.io/pdf.js/examples/进行了所有操作。
我在我的主文件夹中有一个名为file.pdf
的示例文件,而我只是想显示它。我是通过使用带有file
参数的iframe来完成的:
<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的解释文档。
答案 0 :(得分:19)
我有类似的错误,我通过在pdf.js末尾明确指定pdf.worker.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';
}
答案 1 :(得分:11)
包含compatibility.js以修复IE11上的“Uncaught Error:No PDFJS.workerSrc指定”错误。
https://github.com/mozilla/pdf.js/blob/master/src/shared/compatibility.js
<script src="compatibility.js"></script>
<script src="pdf.js"></script>
compatibility.js实现了PDFJS所需的任何缺失功能。
注意:应该在 PDFJS之前加载,而不是之后。
答案 2 :(得分:7)
在您要使用pdf.js文件的页面中指定psd.worker.js文件路径(如果您使用viewer.html附带分发包,则为viewer.html),如下所示。它适合我。
<script>
PDFJS.workerSrc ='path to psd.worker.js';
答案 3 :(得分:0)
我在pdf.js的末尾添加了以下代码并且工作正常
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';
}
答案 4 :(得分:-2)
转到pdf.js
搜索函数getWorkerSrc()
替换此行
pdfjsFilePath = "YOUR_PATH_TO_JS_FILE/pdf.worker.js";
if (pdfjsFilePath) {
return pdfjsFilePath;
}