2013-08-23 135 views
0

我正在使用iTextSharp創建一個PDF文件(我使用C#)。該文件創建正常;但是,它保存在一個文件夾中。該文件是爲了響應鏈接按鈕單擊而創建的,我希望顯示「打開/保存」對話框,而不是將文件保存在文件夾中。 我使用以下命令:iTextSharp:創建PDF文件時顯示「打開/保存」對話框

using(MemoryStream ms = new MemoryStream()) 
{ 
    Document doc1 = new Document(); 
    PdfWriter pdfw = PdfWriter.GetInstance(doc1, ms); 
    doc1.open(); 
    string sPath = Server.MapPath("PDF/"); 
    string sFileName = "Something.PDF"; 

    // create the PDF content 

    doc1.Close(); 
    byte[] content = ms.ToArray(); 
    using (FileStream fs = FileStream.Create(sPath + sFileName)) 
    { 
     fs.Write(content, 0, (int)content.Length); 
    } 
} 

我這樣做不對嗎?它創建文件並將其保存在「blahblah/PDF」文件夾中,但不顯示打開/保存對話框bx。

+0

你沒有標記這個ASP.Net所以你在桌面應用程序中工作? –

+0

這是一個Web應用程序(.Net 3.5,C#2.0) – NoBullMan

回答

1

如果您已經有該文件,請使用Response.TransmitFile方法在用戶的瀏覽器中刷新它。

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=buylist.pdf"); 
Response.TransmitFile(Server.MapPath("~/myfile.pdf")); 
+0

謝謝Vahid。有沒有辦法做到這一點,而不是首先將文件保存到文件夾?我想知道如果100個用戶點擊鏈接同時創建PDF文件會發生什麼情況,使用不同的標準來生成數據。 – NoBullMan

+1

而不是'Response.TransmitFile()'你可以使用'Response.BinaryWrite()'並直接傳遞你的字節數組到那個。 –

+0

非常好!這解決了它。它顯示打開/保存而不需要先將文件寫入文件夾。瓦希德的建議讓我指出了正確的方向,而你的改變最終確定了它。 – NoBullMan