2012-04-16 2 views
1

Использование itextsharp для создания PDF-файла. Я получил эту ошибку «Указанный путь, имя файла или оба слишком длинны. Полноценное имя файла должно быть менее 260 символов, а имя каталога должно быть меньше 248 символов.». Пожалуйста, помогите мне, чтобы это произошло.Использование iTextSharp htmlparser error

Ошибка - «Указанный путь, имя файла или оба слишком длинны. Полное имя файла должно быть менее 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

Какая строка кода на самом деле бросает это исключение? Поскольку вы ничего не пишете на диск, вы не должны видеть подобное сообщение. –

+0

В зависимости от настроенной среды исключение будет вызываться ASP.NET, Visual Studio или пулом приложений IIS, * не * iTextSharp. Попробуйте отправить HTML/текстовое приложение и посмотрите, что произойдет. (закомментируйте весь код iTextSharp) Google «_ Полноценное имя файла должно быть менее 260 символов, а имя каталога должно быть меньше 248 символов_» (в кавычках), и вы, скорее всего, найдете ответ. – kuujinbo

ответ

1

Это не имеет ничего общего с вашим кодом - это максимальная длина имени файла для Windows. Крис Хаас замечает, что ваш код явно не пишет какие-либо файлы, поэтому скорее всего создается временный файл - я бы угадал что-то в HTMLWorker, или PDFWriter создает временный файл для записи.

Вы можете использовать ProcessMon, чтобы узнать, какие файлы пытается открыть ваше приложение, и посмотреть, какое имя файла вызывает у него жалобы, что может указывать на то, где возникает проблема.

+0

, в то время как это определенно верно, приведенный выше код не сохраняет ничего на диск, поэтому он не должен бросать такое исключение. –

+0

Хорошая точка. Итак, что-то (возможно, PDFWriter), по-видимому, пишет временный файл какого-то рода во время процесса и плохо называет его. – glenatron

0

Проблемы в том, что iTextSharp использует System.IO. System.IO зависит от win32, который имеет ограничение длины пути. Таким образом, единственный способ - попытаться интегрировать длинный файл-хак или другую библиотеку, которая обходится вокруг него, например, Alphaleonis.

Смежные вопросы