我将三个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]()
答案 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公开发布。