【问题标题】:itextsharp error: "The document has no pages."itextsharp 错误:“文档没有页面。”
【发布时间】:2014-07-27 08:53:32
【问题描述】:

我将三个 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]()

【问题讨论】:

  • 当你一周前问同样的问题时,我给了你一些改进和修复它的建议的链接,但这段代码与 Response.ContentType 下的代码 100% 相同。

标签: asp.net pdf itextsharp response


【解决方案1】:

HTMLWorker 类已弃用,不应再使用。 HTML 到 PDF 的功能已被称为 XML Worker 的技术所取代。我看到您包含了 itextsharp.xtra 和 itextsharp.pdfa,它们是您不需要的 2 个 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。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 2014-07-18
    • 2015-03-18
    • 2012-04-03
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    相关资源
    最近更新 更多