2013-12-17 56 views
0

我想事業部內容轉換爲PDF格式,節省服務器的路徑上創建PDF文件保存時不問我保存文件(下載文件)。轉換股利內容爲PDF和服務器的路徑

我轉換了pdf文件,並將其保存在服務器路徑中。

但在我的代碼,這也說明,我想刪除文件下載選項。

我不想把pdf文件保存爲選項,因爲我在服務器路徑中保存了創建的文件。

下面是我的代碼:

 string appPath = HttpContext.Current.Request.ApplicationPath; 
     string path = Server.MapPath(appPath + "/Attachment/Test.pdf"); 
     if (File.Exists(path)) 
      File.Delete(path); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     createDiv.RenderControl(hw); 
     var output = new FileStream(path, FileMode.Create); 
     StringReader sr = new StringReader(sw.ToString()); 
     iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(PageSize.A4, 10f, 10f, 100f, 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, output); 
     pdfDoc.Open(); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.End(); 

感謝, 亞太區首席技術官Matt

回答

0

之所以保存對話框中顯示是因爲你寫的響應。如果您只想保存到本地磁盤,只需刪除所有對響應的引用。然後,您可以執行Response.Redirect(...)或類似操作,將用戶指向下一頁。

使用的MemoryStream

如果你打算寫PDF到數據庫應該使用MemoryStream (see MSDN)代替FileStream。然後您可以調用MemoryStream.ToArray()方法,該方法將返回可以存儲在數據庫中的字節數組。

假設你正在使用實體框架:

var output = new MemoryStream(); 
//snip 
iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, output); 
//snip 
myEntityFrameworkObject.Data = output.ToArray(); 
DataContext.SaveChanges(); 
+0

感謝。它的工作正常。還有一個問題是有可能,但不保存爲PDF文件,我可以得到PDF文件的字節數組,因爲我保存PDF的字節到數據庫中。 – Hitesh

+0

'MemoryStream'用於保存內存中的文件,而不是用於訪問文件系統的'FileStream'。 – jaypeagi

+0

嗨,我沒有得到你的答案。你可以在我的代碼中給我指導,我必須改變它。 – Hitesh