1

itextsharpPDFファイルの生成に使用しています。このエラーが発生しました:

「指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は 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 は、コードが明らかにファイルを書き込んでいないことを観察しているため、一時ファイルが作成されている可能性が最も高いです。

ProcessMonを使用して、アプリケーションが開こうとしているファイルを見つけ、問題の原因となっているファイル名を確認することができます。これにより、問題の原因を示す指標が得られる可能性があります。

于 2012-04-16T12:06:24.393 に答える
0

問題は、iTextSharp が System.IO を使用することです。System.IO は、このパスの長さの制限がある win32 に依存しています。したがって、これを回避する唯一の方法は、長いファイル名のハック、またはこれを回避する Alphaleonis などの別のライブラリを統合することです。

于 2013-11-12T18:53:19.237 に答える