none
怎么实现 itextSharp 生成pdf,让user 选折下载还是直接打开生成好的pdf. RRS feed

  • 问题

  • 现在项目需要用itextSharp 生成pdf,因为是 server\client 程序,所以要求生成完pdf 后弹出一个对话框,让user 选折下载还是直接打开生成好的pdf.请问怎么实现?
    谢谢大家!

    2009年12月8日 11:27

答案

  • Dim filepath As String = Server.MapPath("~/xx.pdf")'放在网站根目录下
    If File.Exists(filepath) Then
          Dim filename As String = Path.GetFileName(filepath)
          Response.Clear()
          Response.ContentType = "application/octet-stream"
          Response.AddHeader("Content-Disposition", "attachment; filename=""" & filename & """")
          Response.Flush()
          Response.WriteFile(filepath)
          Response.End()
    End If
    
    
    
    
    • 已标记为答案 KeFang Chen 2009年12月14日 2:03
    2009年12月8日 12:34
    版主
  • // 1 弹出对话框提示下载文件(不会开新窗口)
    // 2 隐藏路径
    string fPath = Path.Combine(Server.MapPath("pdf 所在的目录"), "xxx.pdf");
    FileStream fFileStream = new FileStream(fPath, FileMode.Open);
    long fFileSize = fFileStream.Length;
    Context.Response.ContentType = "application/octet-stream";
    Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
    Context.Response.AddHeader("Content-Length", fFileSize.ToString());
    byte[] fFileBuffer = new byte[fFileSize];
    fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
    fFileStream.Close();
    Context.Response.BinaryWrite(fFileBuffer);
    Context.Response.End();

    知识改变命运,奋斗成就人生!
    • 已标记为答案 KeFang Chen 2009年12月14日 2:03
    2009年12月9日 1:27
    版主

全部回复

  • Dim filepath As String = Server.MapPath("~/xx.pdf")'放在网站根目录下
    If File.Exists(filepath) Then
          Dim filename As String = Path.GetFileName(filepath)
          Response.Clear()
          Response.ContentType = "application/octet-stream"
          Response.AddHeader("Content-Disposition", "attachment; filename=""" & filename & """")
          Response.Flush()
          Response.WriteFile(filepath)
          Response.End()
    End If
    
    
    
    
    • 已标记为答案 KeFang Chen 2009年12月14日 2:03
    2009年12月8日 12:34
    版主
  • 你自己写浏览器给用户用还是手动发HTTP请求?C/S程序的话是否提示用户是你自己写代码决定的……


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年12月8日 17:54
    版主
  • // 1 弹出对话框提示下载文件(不会开新窗口)
    // 2 隐藏路径
    string fPath = Path.Combine(Server.MapPath("pdf 所在的目录"), "xxx.pdf");
    FileStream fFileStream = new FileStream(fPath, FileMode.Open);
    long fFileSize = fFileStream.Length;
    Context.Response.ContentType = "application/octet-stream";
    Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
    Context.Response.AddHeader("Content-Length", fFileSize.ToString());
    byte[] fFileBuffer = new byte[fFileSize];
    fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
    fFileStream.Close();
    Context.Response.BinaryWrite(fFileBuffer);
    Context.Response.End();

    知识改变命运,奋斗成就人生!
    • 已标记为答案 KeFang Chen 2009年12月14日 2:03
    2009年12月9日 1:27
    版主