2012-08-09 67 views
0

我想用iTextSharp lib將我的HTML頁面導出爲PDF。首先我試圖打印在我的Aspx頁面中的表格.PDF已成功創建,但PDF中沒有任何內容。 我使用此代碼如下:使用iTextSharp在創建的PDF中不顯示任何內容?

protected void btnExportToPdf_Click(object sender, EventArgs e) 
    { 

     btnExportToPdf.Visible = false; 


     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 

     exportTable.RenderControl(hw); 

     //this.Page.RenderControl(hw); 

     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.Write(pdfDoc); 
     Response.End(); } 

回答

1

現在我不是太豐富,但問題對我看起來像你從來沒有真正寫入字符串的文件。我看到您初始化的幾個不同的字符串對象,並且我看到您將HTML添加到它,但我從來沒有看到您實際將它們寫入PDF。這是我常用的將HTML解析爲PDF的過程,也許您可​​以查看它,並查看缺少的內容。

System.Text.StringBuilder store = new System.Text.StringBuilder(); 
string line; 

    while ((line = htmlReader.ReadLine()) != null) 
    { 
     store.Append(line + Environment.NewLine); 
    } 

string html = store.ToString(); 
FileStream stream = new FileStream(newFileName, FileMode.Create, FileAccess.Write); 
Document document = new Document(PageSize.LETTER, 15, 15, 35, 25); 
PdfWriter writer = PdfWriter.GetInstance(document, stream); 
document.Open(); 
System.Collections.Generic.List<IElement> htmlarraylist = new List<IElement>(HTMLWorker.ParseToList(new StringReader(html), new StyleSheet())); 

    foreach (IElement element in htmlarraylist) 
    { 
     document.Add(element); 
    } 

document.Close(); 

那正是跳出至少對我來說,是一個事實,即它並不像你居然寫生成的文本到PDF。我希望這有幫助。