2016-06-20 91 views
0

iv'e創建了一個從表單生成pdf文件的方法,它使用itexsharp保存到正確的路徑,但問題是我無法下載它。從源文件下載PDF文件的問題

這是我的代碼:

private void FillForm(Dictionary<string, string> dic) 
{ 

    var pdfTemplate = HttpContext.Current.Server.MapPath("~/ress/GENE_15_04_2014.pdf"); //_pdfTemplet; 

    var newFile = _newFileName + "_" + Guid.NewGuid() + ".pdf"; 

    _gNewFile = newFile.ToString(); 

    var pdfReader = new PdfReader(System.IO.File.ReadAllBytes(pdfTemplate)); 

    var pfileStream = new FileStream(string.Format(HttpContext.Current.Server.MapPath("~/ress/") + "{0}", newFile), FileMode.Create); 

    var pdfStamper = new PdfStamper(pdfReader, pfileStream); 
    var pdfFormFields = pdfStamper.AcroFields; 

    foreach (var entry in dic) 
    { 
     pdfFormFields.SetField(entry.Key, entry.Value); 
    } 
    pdfStamper.FormFlattening = true; 
    pdfStamper.JavaScript = "this.print(true);\r"; 
    pdfStamper.Writer.CloseStream = false; 
    pdfReader.Close(); 
    pdfStamper.Close(); 
    UPContract.Update(); 
    pfileStream.Close(); 
    pdf.FilePath = string.Format("../Ress/{0}", Path.GetFileName(_gNewFile)); 

    Response.Clear(); 
    byte[] bytes = System.IO.File.ReadAllBytes(string.Format(HttpContext.Current.Server.MapPath("~/ress/") + "{0}", _gNewFile)); 
    Response.ContentType = "application/pdf"; 
    MemoryStream ms = new MemoryStream(bytes); 
    Response.AddHeader("content-disposition", "attachment;filename=" + "fiche abonnement_" + _gNewFile + ".pdf"); 
    Response.Buffer = true; 
    ms.WriteTo(Response.OutputStream); 
    Response.Flush(); 
    Response.End(); 
} 
+0

這是一個壞主意,創建PDF作爲文件服務器,除非你需要存檔該文件。你需要歸檔該文件嗎? –

+0

當然是有特殊需求 –

+0

你還在那裏@BrunoLowagie! –

回答

0

如果你想傳遞一個文件,你可以跳過字節數組和MemoryStream,只是使用Response.WriteFile(string)

+0

我沒有傳遞文件的問題,問題是要下載它! –