2014-06-06 68 views
0

我设置为引用的DLL 3: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]() 
+0

[将GridView写入.pdf文件]可能的副本(http://stackoverflow.com/questions/23897937/write-a-gridview-to-a-pdf-file) –

+1

当您提出同样的问题一个星期前我给了你一些改进和修复它的建议链接,但是这个代码与'Response.ContentType'下来的代码完全一样。 –

回答

1

012xx已弃用,因此不应再使用。 HTML到PDF功能已被称为XML Worker的技术所取代。我看到你包含了你不需要的2个DLL的itextsharp.xtra和itextsharp.pdfa。我没有看到你包括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尚未。