使用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();
}
答案 0 :(得分:1)
这与您的代码无关 - 这是Windows的最大文件名长度。 Chris Haas观察到您的代码显然没有编写任何文件,因此很可能是创建了一个临时文件 - 我猜想HTMLWorker或PDFWriter正在创建一个要写入的临时文件。
您可以使用ProcessMon查找应用程序尝试打开的文件,并查看导致其投诉的文件名,这可能会为您提供问题所在的指示。
答案 1 :(得分:0)
问题是iTextSharp使用System.IO。 System.IO依赖于具有此路径长度限制的win32。因此,唯一的方法是尝试集成长文件名黑客或其他库,如Alphaleonis。