我们正在测试pdf.js,虽然这似乎是一个很棒的项目,但我们无法让它在Safari中工作。
(在PDF.JS版本上测试= 0.8.229 (最新)/Safari5.1.9- 6.0.4 / Mac 10.6.8 - 10.8.3)
示例:
这是一个示例示例,演示代码来自我们的服务器,示例PDF可以在Chrome/FFox上工作,而不是Safari: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样本,也是我们唯一能够工作的项目)
我们已经提交了一个错误报告,但是开发人员似乎没有答案,所以我希望这里的人.
我们如何让pdf.js与Safari一起工作?
发布于 2013-06-15 17:44:59
我已经想出了如何在Mac上工作(不一定理解为什么).
compatibility.js。PDFJS.workerSrc。
我已经测试过的演示代码(来自JS Bin演示)并不能做到这一点,尽管其他一些在线示例(包括hello示例和@AndrewBenjamin提供的示例-谢谢)也没有做到这一点。其他浏览器似乎不需要这个,但是Safari没有它就不能工作。再说一遍,无法解释为什么,但这就是我们如何让它为我们工作。
发布于 2013-06-13 22:49:18
在我的本地服务器上,PDF.js在Safari中工作得很好,但是当我把它放在远程服务器上时,愚蠢的错误又回来了:
警告:设置假工人。 未处理的拒绝:错误: INVALID_STATE_ERR: DOM异常11
如果我碰巧打开了开发人员控制台,它也会在我的本地计算机上显示这个错误。关闭控制台,PDF显示在Safari中;打开控制台,它就不再工作了。
问题是:与运行在本地服务器上的开发工具和远程服务器相比,开发人员工具和远程服务器更改了什么?这仍然是一个范围检查问题吗?
不过,我让PDF.js工作了!我修改了那么多东西,我不知道我做了什么工作。这是我做过的事情的清单。
compatibility.js -修改了其中的最后一个函数如下:
(函数checkRangeRequests() { var isSafari = 0;if (!isSafari) {isSafari;} document.addEventListener('DOMContentLoaded',函数(e) { if (isSafari) { PDFJS.disableRange = true;});})();xhr.open()调用在pdf.js中的顺序,使xhr.setRequestHeader()出现在xhr.open()之后'use strict';行xhr.setRequestHeader("Cache-control", "no-cache");后添加了xhr.openpdf.js和所有的工作时间!发布于 2013-06-15 01:58:04
PDFJS.getDocument()将接受字符串链接或Uint8Array。在我的客户端版本中,我传递PDFJS.getDocument()一个Uint8Array,但是如果我想要呈现一个现有的文件,我只需将路径传递到该文件:
jspdf第965行:
PDFJS.getDocument('..files/pdf/sample.pdf').then(function(pdf) {我不知道是什么使您的safari浏览器失败,但是如果您可以在我的试验场地上看到试验场地,您必须非常接近解决这个问题。
https://stackoverflow.com/questions/17022052
复制相似问题