0

我正在尝试使用 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(); }
4

1 回答 1

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

于 2012-08-09T20:09:42.127 回答