2011-11-09 126 views
2

我有從PDF模板生成PDF文件的代碼(在.ashx文件中)。生成的pdf通過名稱和代碼進行個性化。我使用iTextSharp來做到這一點。把生成的pdf文件不保存在服務器上

這是代碼:

using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open)) 
    using (var newFileStream = new FileStream(fileNameNew, FileMode.Create)) 
    { 
     var pdfReader = new PdfReader(existingFileStream); 
     var stamper = new PdfStamper(pdfReader, newFileStream); 

     var form = stamper.AcroFields; 
     var fieldKeys = form.Fields.Keys; 

     form.SetField("Name", name); 
     form.SetField("Code", code); 

     stamper.FormFlattening = true; 

     stamper.Close(); 
     pdfReader.Close(); 
    } 

context.Response.AppendHeader("content-disposition", "inline; filename=zenith_coupon.pdf"); 
context.Response.TransmitFile(fileNameNew); 
context.Response.ContentType = "application/pdf"; 

這工作,但它節省了服務器上的文件。我不想這樣做,因爲會有很多人下載PDF文件,服務器會很快滿了。

所以我的問題是,我怎樣才能生成一個PDF與iTextSharp沒有保存它,並把它給用戶?

回答

5

而不是使用一個FileStream你可以使用一個MemoryStream,然後使用Response.Write()輸出流內容。

相關問題