使PDF显示为内联而不是单独的Acrobat Reader窗口

时间:2009-05-13 19:08:30

标签: asp.net pdf browser

我有一个ASP.NET ashx类,它从数据库中检索数据,使用iTextSharp创建PDF文件,并将PDF流式传输到浏览器。浏览器(至少IE和Firefox)将Acrobat Reader作为单独的窗口启动以打开文件。我希望它能在浏览器中显示内联。

这是我可以从服务器端完全控制的吗?我已经将Content-Type标题设置为application / pdf,我已经尝试设置Content-Disposition和Content-Length。到目前为止,没有任何工作。

我还缺少另一个标题吗? PDF本身有什么东西告诉浏览器如何显示它?还有其他想法吗?

8 个答案:

答案 0 :(得分:9)

设置content-disposition和content-type标头应该这样做,但您可能还需要调用Response.ClearHeaders()来清除已设置的其他标头。

另外,请尝试使用Fiddler查看响应中的实际标头和内容,并将其与可能符合您需要的网站进行比较。

答案 1 :(得分:5)

如果您使用的是ashx(网络处理程序),请尝试: -

context.Response.AddHeader("content-disposition", "inline; filename=Something.pdf")

答案 2 :(得分:4)

好的,事实证明这是一个愚蠢的问题,但我很高兴我问它,因为我从未听说过Fiddler(这让我得到答案,这就是为什么我接受了tspauld的回答)。 PDF由Web服务生成,该服务将文件提供给几个不同的前端站点。我在服务中将内容处置设置为inline,但这并不重要,因为浏览器从未获得该标头;它得到了前端站点的标题(attachment)。我在前端站点更改了它并修复了它。

所以答案是你必须拥有Content-Type=application/pdfContent-Disposition=inline; filename=Something.pdf,正如其他人所说的那样。

答案 3 :(得分:1)

尝试使用html OBJECT将它们生成到您的页面中。

<OBJECT WIDTH=640 HEIGHT=480>
    <PARAM NAME="SRC" VALUE="<%=filePath%>"> 
    <EMBED SRC=<%=filename.pdf%> WIDTH=1000 HEIGHT=680> 
        <NOEMBED> PDF should have displayed here!</NOEMBED> 
        </EMBED>
</OBJECT>

如果您需要使用ashx流式传输响应而不是返回aspx,我认为您可能运气不佳。

否则,我相信在浏览器中显示的设置是否完全由客户端驱动并且不在您手中。

答案 4 :(得分:1)

所以,我在我的一件作品中有一个你需要的样本:

<cc1:ShowPdf ID="ShowPdf1" runat="server" BorderStyle="None"  BorderWidth="0px"
        Height="750px" Style="z-index: 103; "
        Width="750px"/>

并在服务器端:

  ShowPdf1.FilePath = String.Format("~/Handlers/Pdf.ashx?id={0}#view=FitH&page=1&pagemode=none&navpanes=1", myPublicationId);

我还在这里放置了一些来自我的PDF处理程序的代码:

Response.ContentType = "application/pdf";
    byte[] bytes = YourBinaryContent;

    using (BinaryWriter writer = new BinaryWriter(context.Response.OutputStream))
    {
        writer.Write(bytes, 0, bytes.Length);
    }

无论如何如果我的帖子看起来不太清楚,请查看此示例How to Display PDF documents with ASP.NET

答案 5 :(得分:0)

我认为这个标题会做你想要的

Content-type: application/pdf

既然你说这不起作用,那么我怀疑它是客户端的配置设置。

检查已安装的Adobe Acrobat版本。 “Internet”的首选项设置和“浏览器中显示PDF”的复选框。

-
BMB

答案 6 :(得分:0)

以下是一篇关于使用embed标记执行此操作的文章:http://blogs.adobe.com/pdfdevjunkie/2007/08/using_the_html_embed_tag_to_di.html

答案 7 :(得分:-1)

如果您有预算,我公司会销售一系列产品,其中包含AJAX based image viewer,可让您在没有Acrobat的情况下查看PDF页面。在它最简单的形式中,它只是一个观察者,但你可以根据需要进行交互。