我的对象标签看起来像这样:
<div id="embeddedPdfContainer"><object data="<c:url value="/download-pdf/${id }"/>" id="embeddedPdf" width="820" height="1135" type="application/pdf"></object></div>
在Chrome中,这个标签以我想要的方式工作。在Firefox中,它根本不起作用,它在IE中搞砸了。这里的album在每个浏览器中都有截屏。我有什么选择?
另外在firefox上我发现这个pdf不适用于默认的firefoxe的pdf查看器。当我选择将adobe acrobat扩展用于pdf文档时,它可以很好地工作。
答案 0 :(得分:4)
您可以直接将pdf的链接写入数据属性,如下所示:
<div id="embeddedPdfContainer"><object data="/download-pdf/some.pdf" id="embeddedPdf" width="820" height="1135" type="application/pdf"></object></div>
我使用Chrome和Internet Explorer(不同版本)对其进行了测试,并且可以正常使用
如果您想继续使用c:url选项,则应将第二个“更改为”
所以改变这个:
"<c:url value="/download-pdf/${id }"/>"
进入这个:
"<c:url value='/download-pdf/${id }'/>"
为了不“逃避”字符串
答案 1 :(得分:3)
当您提供可疑的HTML时:
<div id="embeddedPdfContainer"><object data="<c:url value="/download-pdf/${id }"/>" id="embeddedPdf" width="820" height="1135" type="application/pdf"></object></div>
^ ^
| |
Start End?
...浏览器试图弄清楚你的想法,取决于他们实施的算法以及网站管理员的想象力,取得了不同程度的成功。不同的浏览器无法就如何处理有效的代码(其中有明确的规则和规范)达成一致意见,因此预计不一致的程度会随着无效而增加代码。
恕我直言,获取跨浏览器兼容性的最简单途径是生成有效代码。作为帮助,您可以使用on-line W3C HTML validator或IDE提供的任何等效工具。
答案 2 :(得分:3)
您的jsp代码似乎在语法上是正确的,但我们无法知道生成的代码是否有意义。您应该编写生成的html代码及其相关的css代码,而不是编写jsp代码。
无论如何,关于Firefox的问题,我认为这是由于这个Firefox的错误: https://bugzilla.mozilla.org/show_bug.cgi?id=937663
最新版本(Firefox 28)似乎仍然受到影响,也许下一个将修复它。
关于资源管理器问题,可能是由于页面渲染的不同。编写IE特定的ccs代码将解决问题。
答案 3 :(得分:2)
我想知道这适用于任何浏览器!
c:url
是JSP标准标记库(JSTL)的一部分。要使用JSTL核心标记,您至少应该在JSP页面中包含:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
接下来就是PDF格式也没有HTML(格式)! PDF文件的处理在很大程度上取决于用户系统设置和配置。
任何浏览器都需要一个(集成的)插件来显示PDF文件! 参见例如这个问题在SO:Embed Pdf in html5
正如您所看到的,通常会使用embed
元素,其类型属性为type="application/pdf"
。
但这也远非理想,并不适用于所有浏览器!
我有什么选择?
如上述链接问题的接受答案中所述,您应该“将PDF转换为HTML5并嵌入HTML5版本。”
答案 4 :(得分:1)
在<iframe>
或<object>
中使用外部查看器(更像是https://docs.google.com/viewer)会有帮助吗? 这是一个折衷方案,因为您无法更改访问者浏览器的配置以添加/加载额外的插件。
对于样式部分,您可以将display:block
设置为<iframe>
或<object>
,设置尺寸和margin
。
<edit>
这不是问题</>
你确定使用你的报价和这部分吗? "<c:url value="/download-pdf/${id }"/>"
您正在将价值和数据包装在一起
答案 5 :(得分:1)
首先,c:url
标记与浏览器端行为无关。标签应该由服务器重写,浏览器应该接收绝对路径。 (也许你可以从浏览器发布消息来源?)
所以问题只是嵌入在<object>
中的PDF的浏览器兼容性。大多数现代浏览器都应该使用这个标签,包括Firefox,所以你应该检查你的Firefox上是否正确安装了pdf插件。
对于IE问题,您没有提到您正在使用的版本,因此可以使用<embed>
以外的<object>
来解决此问题。根据{{3}},您可以尝试这种风格以获得更好的兼容性:
<object data="abc.pdf" type="application/pdf">
<embed src="abc.pdf" type="application/pdf" />
</object>