2012-08-09 65 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。我希望这有帮助。