温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中怎么导出pdf

发布时间:2021-08-07 11:52:31 来源:亿速云 阅读:168 作者:Leah 栏目:编程语言

C#中怎么导出pdf,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一.接口部分的代码

[HttpGet]    public HttpResponseMessage ExportPdf(string id)    {      string pdfName = "";       //id 查询条件,根据实际情况修改即可       //pdfName 例如download.pdf      byte[] pdfData= _policyGapManagerService.ExportPdf(id, out pdfName);//获得pdf字节      var result = new HttpResponseMessage(HttpStatusCode.OK)      {        Content = new ByteArrayContent(pdfData)      };      result.Content.Headers.ContentDisposition =        new ContentDispositionHeaderValue("attachment")        {          FileName = pdfName        };      result.Content.Headers.ContentType =new MediaTypeHeaderValue("application/pdf");      return result;    }

二.返回pdfbyte数组

1.下载http模式的pdf文件(以ASP.NET为例,将PDF存在项目的目录下,可以通过http直接打开项目下的pdf文件)

#region 调用本地文件使用返回pdfbyte数组    /// <summary>    /// 调用本地文件使用返回pdfbyte数组    /// </summary>    /// <param name="srcPdfFile">‘D:\in2434341555551.pdf'</param>    /// <returns></returns>    public static byte[] GetSignaturePDFByte(string srcPdfFile)    {      using (FileStream fsRead = new FileStream(srcPdfFile, FileMode.Open, FileAccess.Read, FileShare.Read))      {        int fsLen = (int)fsRead.Length;        byte[] hebyte = new byte[fsLen];        fsRead.Read(hebyte, 0, hebyte.Length);        return hebyte;      }    }    #endregion 调用本地文件使用返回pdfbyte数组    #region 从网站上下载pdf,转化为字节流    /// <summary>    /// 从网站上下载pdf,转化为字节流    /// </summary>    /// <param name="srcPdfFile">文件地址:'https://******/group2/M00/00/04/wKj-mlpcoZ2IUbK5AACrpaV6k98AAAB6gAAAAAAAKu9562.pdf'</param>    /// <returns></returns>    public static Byte[] GetByteByRemoteURL(string srcPdfFile)    {      byte[] arraryByte;      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(srcPdfFile);      req.Method = "GET";      using (WebResponse wr = req.GetResponse())      {        StreamReader responseStream = new StreamReader(wr.GetResponseStream(), Encoding.UTF8);        int length = (int)wr.ContentLength;        byte[] bs = new byte[length];        HttpWebResponse response = wr as HttpWebResponse;        Stream stream = response.GetResponseStream();        //读取到内存        MemoryStream stmMemory = new MemoryStream();        byte[] buffer1 = new byte[length];        int i;        //将字节逐个放入到Byte 中        while ((i = stream.Read(buffer1, 0, buffer1.Length)) > 0)        {          stmMemory.Write(buffer1, 0, i);        }        arraryByte = stmMemory.ToArray();        stmMemory.Close();      }      return arraryByte;    }    #endregion 从网站上下载pdf,转化为字节流    #region 从网站上下载文件,保存到其他路径    /// <summary>    /// 从网站上下载文件,保存到其他路径    /// </summary>    /// <param name="pdfFile">文件地址</param>    /// <param name="saveLoadFile">保存文件路径:D:\12221.pdf</param>    /// <returns></returns>    public string SaveRemoteFile( string saveLoadFile , string pdfFile)    {      //bool flag = false;      var f = saveLoadFile + Guid.NewGuid().ToString("D") + ".pdf";      Uri downUri = new Uri(pdfFile);      //建立一个WEB请求,返回HttpWebRequest对象      HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(downUri);      //流对象使用完后自动关闭      using (Stream stream = hwr.GetResponse().GetResponseStream())      {        //文件流,流信息读到文件流中,读完关闭        using (FileStream fs = File.Create(f))        {          //建立字节组,并设置它的大小是多少字节          byte[] bytes = new byte[102400];          int n = 1;          while (n > 0)          {            //一次从流中读多少字节,并把值赋给N,当读完后,N为0,并退出循环            n = stream.Read(bytes, 0, 10240);            fs.Write(bytes, 0, n); //将指定字节的流信息写入文件流中          }        }      }      //return flag;      //return _outPath + saveLoadFile;      return f;    }    #endregion 从网站上下载文件,保存到其他路径

2.ftp模式的pdf文件

/// <summary>    /// 下载FTP文件。    /// </summary>    /// <param name="offsetPath">相对路径</param>    /// <param name="fileName">文件名称</param>    /// <returns>下载结果,本地文件路径</returns>    public string DownLoad(string offsetPath,string fileName)    {      try      {        FtpWebRequest ftpWeb = (FtpWebRequest)WebRequest.Create(_ftpRootPath + offsetPath + fileName);        ftpWeb.Method = WebRequestMethods.Ftp.DownloadFile;        ftpWeb.UseBinary = true;        var resp = ftpWeb.GetResponse();        using (FileStream fs = new FileStream(_outPath + fileName, FileMode.Create))        {          using (var s = resp.GetResponseStream())          {            if (s == null) { return "文件不存在!"; }            int readCout = 0;            byte[] bytes = new byte[1024];            readCout = s.Read(bytes, 0, 1024);            while (readCout > 0)            {              fs.Write(bytes, 0, readCout);              readCout = s.Read(bytes, 0, 1024);            }          }        }        resp.Close();        return _outPath + fileName;      }      catch (Exception e)      {        return e.Message;      }          }    /// <summary>    /// 判断文件是否存在    /// </summary>    /// <param name="offsetPath"></param>    /// <param name="fileName"></param>    /// <returns></returns>    public bool FileExists(string offsetPath, string fileName)    {      try      {        FtpWebRequest ftpWeb = (FtpWebRequest)WebRequest.Create(_ftpRootPath + offsetPath + fileName);        ftpWeb.Method = WebRequestMethods.Ftp.DownloadFile;        ftpWeb.UseBinary = true;        var resp = (FtpWebResponse)ftpWeb.GetResponse();        resp.Close();        return true;      }      catch (Exception)      {        return false;      }    }    /// <summary>    /// 获取目录下所有文件    /// </summary>    /// <returns></returns>    public string[] Files(string offsetPath)    {      try      {        FtpWebRequest ftpWeb = (FtpWebRequest)WebRequest.Create(_ftpRootPath + offsetPath);        ftpWeb.Method = WebRequestMethods.Ftp.ListDirectory;        Stream stream = ftpWeb.GetResponse().GetResponseStream();        if (stream == null)        {          return null;        }        List<string> fileList = new List<string>();        using (StreamReader sr = new StreamReader(stream))        {          StringBuilder sb = new StringBuilder();          do          {            sb.Append(sr.ReadLine());            if (sb.Length > 0)            {              fileList.Add(sb.ToString());              sb.Clear();            }            else            {              break;            }          } while (true);        }        return fileList.ToArray();      }      catch (Exception)      {         return null;      }    }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

pdf
AI