使用iTextSharp htmlparser错误

时间:2012-04-16 12:02:21

标签: c# asp.net itext

使用itextsharp生成PDF文件。我收到了这个错误:

  

“指定的路径,文件名或两者都太长。完全   限定文件名必须少于260个字符,并且   目录名称必须少于248个字符。“

代码:

protected void ExportHTMLtoPDF()
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=" + HttpContext.Current.Session["StudentID"].ToString() + ".pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    frmPrint.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A3, 0f, 0f, 0f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter writer;
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

2 个答案:

答案 0 :(得分:1)

这与您的代码无关 - 这是Windows的最大文件名长度。 Chris Haas观察到您的代码显然没有编写任何文件,因此很可能是创建了一个临时文件 - 我猜想HTMLWorker或PDFWriter正在创建一个要写入的临时文件。

您可以使用ProcessMon查找应用程序尝试打开的文件,并查看导致其投诉的文件名,这可能会为您提供问题所在的指示。

答案 1 :(得分:0)

问题是iTextSharp使用System.IO。 System.IO依赖于具有此路径长度限制的win32。因此,唯一的方法是尝试集成长文件名黑客或其他库,如Alphaleonis。