gpt4 book ai didi

firefox - Chrome 和 Firefox 不会在 iframe 中显示大多数 PDF 文档

转载 作者:行者123 更新时间:2023-12-02 10:35:13 28 4
gpt4 key购买 nike

我运行的是 Windows 7 64 位。我最近更新了操作系统以安装最新更新。从那时起,大多数 PDF 文档已停止在我的程序中渲染。我的程序想要在单独的 iFrame 中显示 PDF 文档。我通过获取 PDF 文档的 URL 并设置 window.frames['docview'].location = url; 来做到这一点在大多数情况下,iframe View 保持空白(或者如果之前显示过某些内容则清除)。如果我采用相同的 URL 并在新选项卡或窗口中打开它,它会呈现良好。

当它无法在我的 iframe 中呈现时,我会在 Chrome 控制台中看到以下消息:

Resource interpreted as Document but transferred with MIME type application/pdf.

Firefox 不会在其错误控制台或 FireBug 控制台中提供任何类型的消息。

我无法控制 PDF 文件的来源,因此无法更改其标题信息。

奇怪的是,某些文件确实加载正确。

查看 Chrome 中的网络请求,对于无法加载的文档,我看到(例如):

Request URL:http://es.csiro.au/pubs/paradis_mdm03.pdf
Request Method:GET
Status Code:200 OK

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:es.csiro.au
Referer:http://querium.fxpal.net:8080/querium/ui/query?searcherId=2&compact=true&sidx=rank&topicId=2&queryId=1&lastEventId=1490893682130103&highlight=undefined
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1

Response Headers
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:71764
Content-Type:application/pdf
Date:Tue, 06 Sep 2011 04:59:26 GMT
ETag:"1f48c8-11854-43e4ee482ef40"
Keep-Alive:timeout=15, max=100
Last-Modified:Wed, 07 Nov 2007 04:07:49 GMT
Server:Apache/2.0.55 (Ubuntu) PHP/5.1.2 mod_ssl/2.0.55 OpenSSL/0.9.8a

当从单独的选项卡(文档渲染的位置)打开时,我得到以下内容:

Request URL:http://es.csiro.au/pubs/paradis_mdm03.pdf
Request Method:GET
Status Code:304 Not Modified

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:es.csiro.au
If-Modified-Since:Wed, 07 Nov 2007 04:07:49 GMT
If-None-Match:"1f48c8-11854-43e4ee482ef40"
Range:bytes=0-71763
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1

Response Headers
Connection:Keep-Alive
Date:Tue, 06 Sep 2011 05:07:15 GMT
ETag:"1f48c8-11854-43e4ee482ef40"
Keep-Alive:timeout=15, max=100
Server:Apache/2.0.55 (Ubuntu) PHP/5.1.2 mod_ssl/2.0.55 OpenSSL/0.9.8a

一个奇怪的事情是状态的差异,但也许服务器很聪明,或者与缓存有一些有趣的交互。谁知道呢。

任何帮助将不胜感激。

基因

已编辑:2011 年 9 月 6 日

当我删除标签时

 <meta http-equiv="content-type" content="text/html; charset=UTF-8">

来自<head>在我的 HTML 页面的元素中,许多(但不是全部)PDF 开始正确呈现。这显然是 header 中另一个元标记的重复:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

这有助于揭示潜在问题吗?

最佳答案

不要将 iframe 的 src 属性设置为 PDF,而是将其设置为包装 HTML 文件,其中包含一个简单的 div:

<!DOCTYPE html>
<html style="height:100%;">
<head>
</head>
<body style="height:100%;">
<div id="divContents" style="height:100%;"></div>
</body>
</html>

在 javascript 中,div 的内容被设置为 object 元素。不幸的是,需要稍微不同的版本才能在所有浏览器上可靠地工作(在 IE、Firefox 和 Chrome 上测试):

(我简化了 divContents 元素的检索和浏览器检测)

var embed = '<object type="application/pdf" width="100%" height="100%"';
if (msie) {
embed += '><param name="src" value="' + pdf + '"/>';
}
else if (chrome) {
embed += ' src="' + pdf + '">';
}
else {
embed += ' data="' + pdf + '">';
}
embed += '</object>';
$("#divContents").html(embed);

已更新

我终于找到了 Chrome 中失败的实际原因:它是 Accept-Ranges:bytes 字段,没有它,当 data 属性时 Chrome 将无法工作已使用。

  • 因此,如果您的服务器能够支持 Accept-Ranges 字段,您应该确保将其返回给客户端。在这种情况下,您可以使用 pdfobject用于在框架或 div 中显示 PDF 的库。
  • 如果没有,您可以使用上面的代码在框架或 div 中显示 PDF。

关于firefox - Chrome 和 Firefox 不会在 iframe 中显示大多数 PDF 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com