itextsharp错误:“文档没有页面。”

时间:2014-06-06 06:48:08

标签: asp.net pdf itextsharp response

我将三个dll设为参考:

执行此代码时出错:

在pdfDoc.Close()上,“文档没有页面。”

Imports iTextSharp.text
Imports iTextSharp.text.html.simpleparser
Imports iTextSharp.text.pdf


    gv.DataBind()
    gv.AllowPaging = "False"
    Response.ContentType = "application/pdf"
    Response.AddHeader("content-disposition", "attachment;filename=Export.pdf")
    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    Dim sw As New StringWriter()
    Dim hw As New HtmlTextWriter(sw)
    Dim frm As New HtmlForm()
    gv.Parent.Controls.Add(frm)
    frm.Attributes("runat") = "server"
    frm.Controls.Add(gv)
    frm.RenderControl(hw)
    Dim sr As New StringReader(sw.ToString())
    Dim pdfDoc As New Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 0.0F)
    Dim htmlparser As New HTMLWorker(pdfDoc)
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream)
    pdfDoc.Open()
    htmlparser.Parse(sr)
    pdfDoc.Close()
    Response.Write(pdfDoc)
    Response.[End]()

1 个答案:

答案 0 :(得分:1)

不推荐使用类HTMLWorker,不应再使用它。 HTML到PDF功能已被称为XML Worker的技术所取代。我看到你包含了itextsharp.xtra和itextsharp.pdfa这两个你不需要的DLL。我没有看到你包括xmlworker DLL。

至于例外:当您收到消息"文档没有页面"时,您试图创建一个没有任何内容的文档(这没有任何意义)。这怎么可能?嗯,这一切都取决于sr的内容。该内容为空或包含无法由HTMLWorker解释的HTML。

额外备注:在itextpdf.xtra旁边,你写了(PDF 2!)。虽然xtra包中包含的功能在PDF 1.7中并不存在,但它并不是PDF 2包。 PDF 2规范最早将于2015年底推出(更现实的估计是2016年)。在iText,我们已经基于规范草案实现了PDF 2.0功能,但该功能是(1)不限于xtra包中的内容,(2)不是规范的一部分由ISO公开发布。