我们正在测试 pdf.js虽然它看起来是一个很棒的项目,但我们无法让它在 Safari 中运行。
(在 PDF.JS 版本 = 0.8.229(最新)/Safari 5.1.9 - 6.0.4/Mac OSX 10.6.8 - 10.8.3 上测试)
示例:
这是从我们的服务器提供的演示代码示例,其中包含适用于 Chrome/FFox 但不适用于 Safari 的示例 PDF: http://test.appgrinders.com/pdf_js/test.html
控制台输出:
Warning: Setting up fake worker.
Error: Invalid XRef stream (while reading XRef):
Error: Invalid XRef stream pdf.js:850undefined
Warning: Indexing all PDF objects
Error: Invalid XRef stream (while reading XRef):
Error: Invalid XRef stream pdf.js:850undefined
更多测试:
以下是我们测试的示例 PDF 列表(它们全部由我们的服务器提供,并且都在 Chrome/FFox/Android 中运行)。唯一与 Safari 一起工作的是 pdf.js 项目本身提供的 PDF 文件:
在 SAFARI 中失败:
http://samplepdf.com/sample.pdf
http://forums.adobe.com/servlet/JiveServlet/previewBody/2041-102-1-2139/Sample.pdf
https://github.com/prawnpdf/prawn/raw/master/data/pdfs/form.pdf
在 SAFARI 中工作:
http://cdn.mozilla.net/pdfjs/helloworld.pdf
(注意:这是来自 pdf.js 项目的示例 PDF,也是我们工作过的唯一一个)
我们已经提交了 bug report ,但开发人员似乎没有答案,所以我希望这里有人可能...
我们如何让 pdf.js 与 Safari 一起工作?
最佳答案
我已经弄清楚如何在 Mac Safari 上运行(不一定理解为什么)...
compatibility.js
必须包含在内。PDFJS.workerSrc
必须赋值。我一直在测试的演示代码(来自 JS Bin demos here ) 不会这样做,尽管其他一些在线示例会这样做(包括 hello world example以及提供的示例 @AndrewBenjamin——谢谢)。其他浏览器似乎不需要这个, 但没有它,Safari 将无法工作。
<script type="text/javascript" src="compatibility.js"></script> <script type="text/javascript" src="pdf.js"></script> <!-- NEED THIS for Safari Mac to render work --> <script type="text/javascript"> // Specify the main script used to create a new PDF.JS web worker. // In production, change this to point to the combined `pdf.js` file. PDFJS.workerSrc = 'pdf.worker.js'; </script>
同样,无法解释原因,但这就是我们让它为我们工作的方式。
关于javascript - pdf.js 不适用于 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022052/