Javascript pdf.js不使用Safari
我们正在测试,虽然这看起来是一个很棒的项目,但我们无法让它在Safari中工作 (在PDF.JS版本=0.8.229(最新)/Safari 5.1.9-6.0.4/Mac OSX 10.6.8-10.8.3上测试) 示例:Javascript pdf.js不使用Safari,javascript,safari,pdf.js,pdf-rendering,Javascript,Safari,Pdf.js,Pdf Rendering,我们正在测试,虽然这看起来是一个很棒的项目,但我们无法让它在Safari中工作 (在PDF.JS版本=0.8.229(最新)/Safari 5.1.9-6.0.4/Mac OSX 10.6.8-10.8.3上测试) 示例: Warning: Setting up fake worker. Error: Invalid XRef stream (while reading XRef): Error: Invalid XRef stream pdf.js:850undefined Warnin
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
这是从我们的服务器提供的演示代码示例,其中包含一个在Chrome/FFox上工作但不在Safari上工作的示例PDF:
控制台输出:
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
更多测试:
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中失败:适用于SAFARI:
(注意:这是PDF.js项目中的一个PDF示例,也是我们唯一一个正在工作的示例)
我们已经提交了一份报告,但开发人员似乎没有答案,所以我希望这里的人可能
如何让pdf.js与Safari配合使用?我在本地服务器上的Safari中使用pdf.js效果很好,但当我将其放在远程服务器上时,又出现了愚蠢的错误: 警告:设置假工作人员。
未处理的拒绝:错误:无效\u状态\u错误:DOM异常11 如果我碰巧打开了开发者控制台,它还会在本地计算机上显示此错误。关闭控制台,PDF显示在Safari中;打开控制台,它就不工作了 问题是:与在本地服务器上运行相比,开发人员工具和远程服务器有什么变化?这仍然是一个范围检查问题吗 不过,我还是让PDF.js工作了!我修改了太多东西,我不知道我所做的工作的哪一部分是有效的。这是我做过的事情的清单
compatibility.js
–将其中的最后一个函数修改为:
(function checkRangeRequests() {
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
if (!isSafari) {
return;
}
document.addEventListener('DOMContentLoaded', function (e) {
if (isSafari) {
PDFJS.disableRange = true;
}
});
})();
pdf.js
中xhr.open()
调用的顺序,以便xhr.setRequestHeader()
在xhr.open()之后发生
“严格使用”代码>行
xhr.setRequestHeader(“缓存控制”、“无缓存”)代码>在xhr之后。在第37272行和第41262行打开
pdf.js
,而且它一直都在工作PDFJS.getDocument('..files/pdf/sample.pdf').then(function(pdf) {
我不知道是什么原因导致您的safari浏览器出现故障,但如果您能在我的上看到sample.pdf,您必须非常接近于解决此问题。我已经找到了如何在Mac safari上工作的方法(不一定了解原因)
compatibility.js
PDFJS.workerSrc
我一直在测试的演示代码(来自)
尽管其他一些在线示例(包括
第二部分和提供的示例
@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>
//指定用于创建新PDF.JS web worker的主脚本。
//在生产环境中,将其更改为指向组合的'pdf.js'文件。
PDFJS.workerSrc='pdf.worker.js';
同样,我无法解释为什么,但这就是我们如何让它为我们工作的原因 我对Safari Mobile也有同样的问题。。。无法打开超过1 Mb的PDF。。。我解决了将文件分割成900 kb的部分,在本地连接它们,然后作为Uint8Array()对象注入pdf.js的问题。我认为这是一个没有文档记录的限制。我已经找到了在Mac Safari和iPad上工作的方法 我在一开始就取消了“严格模式”
1. pdf.js/src/core/worker.js
2. pdf.js/web/download_manager.js
而且成功了 感谢您的努力,但我应用了您描述的所有更改,结果没有任何变化。你还可以做些什么来让它工作吗?我测试过的Safari的唯一版本是5.1.7。我的pdf.js工作的网站在这里:。看看它是否适用于您的狩猎活动,并让我知道(如果它适用,您将看到丑陋的“Rocks To the KORE”pdf漂浮在右侧)。如果有,那么我将按原样打包文件,并使它们对您可用。@AndrewBenjamin-是的,您的链接在我的Safari上起作用。然而,当我下载了你的pdf.js版本并尝试在本地演示中使用它时,在Safari上出现了一个新错误:pdf.js:2107未经处理的拒绝:在检索pdf“”时出现意外的服务器响应(206)…@Yarin-我已将其简化为一个包并对其进行了测试。在线测试在www.korenation.com/test上。软件包在我的dropbox中,您可以下载。在Safari中唯一不起作用的就是下载。我正在慢慢缩小问题的范围——safari调试器甚至没有检测到错误——只是什么都没有发生。要下载pdf,任何其他浏览器都可以。Firefox做得最好。如果你能找出safari不下载pdf的原因,那就太好了。总是Safari不起作用——在过去的两天里,我给Safari开发者打过电话。