使用iTextSharp在创建的PDF中显示什么?

时间:2012-08-09 08:53:51

标签: c# asp.net pdf itextsharp

我正在尝试使用iTextSharp lib将我的HTML页面导出为PDF。首先,我正在尝试打印在我的Aspx页面中的表.PDF已成功创建,但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 个答案:

答案 0 :(得分: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。我希望这会有所帮助。