如何将嵌入元素类型从 PDF 流切换到文本流

Posted

技术标签:

【中文标题】如何将嵌入元素类型从 PDF 流切换到文本流【英文标题】:How to switch embed element type from PDF stream to text stream 【发布时间】:2015-06-12 19:50:43 【问题描述】:

在我的 JSP Web 应用程序中,我使用 embed 元素来显示 PDF。

<embed src="someurl" >

someurl 在一种情况下会返回 PDF 流,在另一种情况下会返回文本流:

if (IamPDF) 
    response.setContentType("application/pdf");
    /* rest of stream flushing */
 else 
    response.setContentType("text/html");
    /* rest of stream flushing */

我可以在 IE 和 Chrome 中毫无问题地刷新 PDF 流。在文本流的情况下,IE 无法显示该流,但它在 Chrome 中运行。而且我没有在embed 元素中指定任何类型。如何让它在 IE 中运行?

【问题讨论】:

如果它们不是问题的原因,它们只是问题中的噪音。当您消除噪音时,您会增加问题的价值(以及获得赞成票和答案的机会)。在这种情况下,您应该edit,此外,您应该发布原始代码(不要重新输入它;只需删除不相关的部分)。我现在为你做了编辑。 答案是否帮助您解决了问题?如果是这样,您应该投票并接受它。 【参考方案1】:

我会在

中指定 type 属性
<embed></embed>

标签;我也遇到了 Internet Explorer 不接受 javascript 中的某些功能等问题。它只是不是一个好的浏览器。我更喜欢 Chrome 或 Firefox,而且我知道一些人对 Opera 很满意。

【讨论】:

【参考方案2】:

在 JSP 的第一行添加&lt;!DOCTYPE html&gt; 以使 IE 以标准模式呈现网页。 例如, <!DOCTYPE html> <embed src="someurl" >

【讨论】:

【参考方案3】:

您可以通过设置embed 元素的type 属性来解决此问题。

对于 HTML

<embed src="someurl" type="text/html" >

对于 PDF

<embed src="someurl" type="application/pdf" >

引用the embed element specification:

type 属性(如果存在)给出了选择要实例化的插件的 MIME 类型。该值必须是有效的 MIME 类型。如果type 属性和src 属性都存在,则type 属性必须指定与Content-Type 属性所给资源的显式Content-Type 元数据相同的类型。

已删除指向 MIME 类型和有效 MIME 类型的链接,它们无关紧要。

【讨论】:

嗨,谢谢您的回答,流的内容类型有时会发生变化,有时会出现Text Stream (html/text),有时会出现application/pdf,这里的问题是当我在embed 中设置type 属性时标记为html/text 它只会呈现Text stream 并且它会为application/pdf 提供错误,反之亦然.. 所以我的问题是如何以动态方式设置type 属性.. 以动态方式您打算使用服务器端还是客户端?如果服务器端你可以使用 (type="") 类似的东西,如果客户端我认为你必须使用 javascript。 是的,我也尝试过这种方式。这里的问题是&lt;embed&gt; 标签不关心服务器返回的内容。它取自type 属性。 ..我们不能动态改变..

以上是关于如何将嵌入元素类型从 PDF 流切换到文本流的主要内容,如果未能解决你的问题,请参考以下文章

margin负值的用法及相关布局

使用 iTextSharp 将文本添加到内存流中的现有多页 PDF 文档

收听实时音频流

disposition relative脱离文档流了

float与定位的区别

css布局方式及背景文本属性