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

Posted

技术标签:

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

我将三个 dll 设置为引用:

itextsharp.dll:核心库 itextsharp.xtra.dll:额外功能(PDF 2!) itextsharp.pdfa.dll:PDF/A 相关功能 该项目托管在http://sourceforge.net/projects/itextsharp/ 您可以在此处找到最新版本: http://sourceforge.net/projects/itextsharp/files/itextsharp/

执行此代码时出现错误:

在 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]()

【问题讨论】:

Write a GridView to a .pdf file的可能重复 当你一周前问同样的问题时,我给了你一些改进和修复它的建议的链接,但这段代码与 Response.ContentType 下的代码 100% 相同。 【参考方案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。

【讨论】:

以上是关于itextsharp 错误:“文档没有页面。”的主要内容,如果未能解决你的问题,请参考以下文章

关于用iTextsharp阅读PDF的帖子,但遇到了错误

使用iTextSharp生成的PDF生成水印给出错误

尝试解析 html 以进行 pdf 转换时出现 ItextSharp 错误

iText7 将 HTML 转换为 PDF“System.NullReferenceException”。

c#如何将数据导出pdf文件,我用的是vs2010,里边没有水晶报表。然后用itextsharp就报字体啥的错误。

iTextSharp 从字节数组列表创建 pdf