2016-09-28 176 views
-4

我試圖通過使用StringWriter & HtmlTextWriter將我的表(System.Web.UI.WebControls)轉換爲pdf,但我得到一個錯誤的PDF文件。將C#錶轉換爲PDF文件

這裏是我的代碼:

 table.RenderControl(htw); 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=Reception.pdf"); 
     HttpContext.Current.Response.ContentType = "application/pdf"; 
     HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     //render the htmlwriter into the response 
     HttpContext.Current.Response.Write(headerTable); 
     HttpContext.Current.Response.Write(sw.ToString()); 
     HttpContext.Current.Response.End(); 

我得到 「錯誤加載文檔PDF」 當我打開PDF文件。

+2

什麼錯誤?爲了讓任何人能夠幫助你,你必須提供一個完整的,最小的和可驗證的例子。這包括張貼可重複的代碼以及錯誤。 – Lexi

+0

當我打開文件時,出現「加載文檔pdf時出錯」。 –

+0

什麼是sw?它包含一個有效的pdf字節數組或什麼? –

回答

0

好類iTextSharp的是相關的,使這項工作.. 我改變了我的代碼如下:

 table.RenderControl(htw); 
     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=Reception.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Write(pdfDoc); 
     Response.End();