1

我正在使用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();
}
4

2 回答 2

1

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

您可以使用ProcessMon来查找您的应用程序试图打开的文件,并查看导致它抱怨的文件名,这可能会为您提供有关问题出处的指示。

于 2012-04-16T12:06:24.393 回答
0

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

于 2013-11-12T18:53:19.237 回答