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 错误:“文档没有页面。”的主要内容,如果未能解决你的问题,请参考以下文章
尝试解析 html 以进行 pdf 转换时出现 ItextSharp 错误
iText7 将 HTML 转换为 PDF“System.NullReferenceException”。