2014-02-24 68 views
0

我想在新選項卡中打開PDF文件,當我將它顯示在網上時。 但沒有點擊只是一個功能,打開新標籤中的文件。 這是我的顯示功能:在新選項卡中打開PDF C#

private void DisplayPage() 
    {   
     string path = CanvasWritingStepImages._pdfName; 
     WebClient client = new WebClient(); 
     Byte[] buffer = client.DownloadData(path); 

     if (buffer != null) 
     { 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("Content-Disposition", "inline; filename=Formulike.pdf"); 
      Response.AddHeader("content-length", buffer.Length.ToString()); 
      Response.BinaryWrite(buffer); 
     } 
     else 
     { 
      logger.Error("Buffer was Null!"); 
      throw new Exception("PDF ERROR"); 
     } 
    } 

我使用「iTextSharp的」以PDF文件的工作。 重要的是,PDF文件將在新選項卡上打開,而不需要僅通過功能點擊。 我剛剛發現與按鈕點擊打開一個新標籤。

我想這: How to open PDF file in a new tab or window instead of downloading it (using asp.net)?

+0

與彈出窗口攔截器(這是你的問題是關於 - 打開新窗口沒有用戶操作)的爭論是非常有爭議的話題。請注意,獲得持續工作的答案/將持續長時間工作的可能性不大。 –

回答

0

我有一個非常類似的問題...看我的問題here

將您的pdf創建代碼放入新頁面的form load事件中。然後使用下面的代碼在新標籤中打開該頁面。

string url = "myPDFpage.aspx"; 
string openWindowScript = string.Format("window.open({0}, '_blank');", url);   
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Guid.NewGuid().ToString(), openWindowScript, true);   

如果你不使用你ScriptManager可以替換最後一行如下:

Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), openWindowScript, true); 

如果您的PDF需要的變量被創建,通過他們通過查詢字符串或存儲它們在一個會話變量中,這樣新的頁面就可以訪問它們。

新的標籤頁/窗口將被阻止,除非用戶允許來自您的網站的彈出窗口或關閉其阻止程序。

+0

對我來說,它只是打開一個新的窗口與現有的網頁... – Si8