如何用瀏覽器直接開啟pdf檔,不出現詢問下載視窗?

  • 22906
  • 0
  • C#
  • 2010-11-04

如何用瀏覽器直接開啟pdf檔,不出現詢問下載視窗?

如標題

最近在公司工作時,有同仁遇到這個問題,與另一位同仁協助找答案後,終於是ok囉!

客戶的需求是希望在瀏覽器直接開啟pdf檔,不要再出現詢問下載或直接開啟的視窗!

而我們會在asp.net中用到reporting services所做的報表,轉成pdf供客戶下載。

因為程式碼的部份需要稍微改寫..

以下是實作後的c# code,xxx表示取得資料;

假設我有一個download.aspx的網頁,內容如下,記得這一頁不要有iframe哦,不然會沒有效果

private void Page_Load(object sender, System.EventArgs e)
{
   DataSet ds=xxxx;

   if (ds.Tables[0].Rows.Count>0)
   {
    Response.Write(ds.Tables[0].Rows[0]["x"].ToString());
    string newName=HttpUtility.UrlEncode(ds.Tables[0].Rows[0]["x"].ToString(),System.Text.Encoding.UTF8);
    Response.Clear();
    //以下為原先的code
    //Response.AddHeader("Content-Disposition","attachment; filename=" + newName);
    /Response.ContentType="application/octet-stream";

    //以下為變更後的code
    Response.AddHeader("Content-Disposition","inline; filename=" + newName);
    Response.ContentType="Application/PDF";

    Response.AddHeader("Content-Length", (ds.Tables[0].Rows[0]["y"] as byte[]).Length.ToString());
    Response.BinaryWrite(ds.Tables[0].Rows[0]["y"] as byte[]);
    Response.End();
   }

}

以下是呈現的結果..,為保護內容,所以有做了一些效果保護pdf的內容

clip_image001

‧覺得文章不錯請給我一個『讚』作為鼓勵喔!