如何在浏览器中打开pdf

时间:2013-04-02 12:54:55

标签: c# asp.net c#-4.0

我有一个gridview,其中点击链接按钮上有链接按钮我可以下载文件,如pdf,jpeg,doc但我想在点击链接按钮上显示浏览器

string pdfPath = Server.MapPath("~/SomePDFFile.pdf");
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(pdfPath);
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);

但是我想在浏览器中的链接按钮内打开像jpeg,pdf,doc gridview这样的文件

4 个答案:

答案 0 :(得分:1)

这取决于文件类型以及当前系统如何配置来处理该类型。

例如,默认情况下,大多数图像 只能在浏览器中打开;然而,对我来说,我已将Chrome配置为PDF文件的默认注册应用程序,但现在这几乎不是标准的事情,许多普通用户将会在安装其他东西时告诉他们下载的内容,有点像Foxit读者 - 在这种情况下,如果浏览器未注册处理文件类型,则不会发生。

答案 1 :(得分:1)

在浏览器中显示PDF的第一种方法

protected void btnOpen_Click(object sender, EventArgs e)
{
Response.Redirect("SiteAnalytics.pdf");
}

通过设置Response对象的Content Type并在标题中添加pdf的二进制形式,在浏览器中显示PDF的第二种方式

protected void btnpdf_Click(object sender, EventArgs e)
{
string path = Server.MapPath("SiteAnalytics.pdf");
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(path);

if (buffer != null)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);
}

答案 2 :(得分:0)

您应指定Content-Disposition: inline标头。如果浏览器支持您在Content-Type标题中指定的类型的显示,它将显示在浏览器中。

相反的是Content-Disposition: attachment,它会强制浏览器为您的内容提供“另存为”按钮(即使它是HTML)。

答案 3 :(得分:0)

您可以在同一页面或其他页面上的iframe中显示pdf,jpg等。 例如:

<iframe id="iframe" runat="server" src="NameOfYourFolder/pdf.pdf"></iframe>

这里我已经硬编码了pdf文件的路径,该文件将显示在iframe中。您需要创建一种机制来获取与GridView中的链接按钮关联的文件的路径,并通过嵌入的代码块将该路径传递给iframe的src。