温馨提示×

温馨提示×

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

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

C#如何导出pdf

发布时间:2021-05-28 13:06:45 来源:亿速云 阅读:427 作者:小新 栏目:编程语言

小编给大家分享一下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;       }     }

以上是“C#如何导出pdf”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

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

pdf
AI