首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >asp.net jpg 转 PDF 并提供下载

asp.net jpg 转 PDF 并提供下载

作者头像
MJ.Zhou
发布于 2022-05-07 16:00:01
发布于 2022-05-07 16:00:01
2.1K0
举报
文章被收录于专栏:.NET开发那点事.NET开发那点事
代码语言:javascript
复制
        /// <summary>
        /// 下载按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            using (var imageStream = new FileStream(MapPath("~/views") + "/print.pdf", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
              byte[] bytes =  this.StreamToBytes(imageStream);
              this.Download(bytes, "pdf");
            }
        }
        /// <summary>
        /// 在服务器上生成一个PDF COPY
        /// </summary>
        private void CreatePDF()
        {
            var bytes = GetData();
            int width = bytes.ToImage().Width;
            int height = bytes.ToImage().Height;
            Document document = new Document(new Rectangle(width, height), 0, 0, 0, 0);
            using (var stream = new FileStream(MapPath("~/views") + "/print.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
            {
                PdfWriter.GetInstance(document, stream);
                document.Open();
                using (Stream imageStream = new MemoryStream(bytes))
                {
                    var image = iTextSharp.text.Image.GetInstance(imageStream);
                    document.Add(image);
                }
                document.Close();
            }
        }
        /// <summary>
        /// 下载到本地
        /// </summary>
        /// <param name="bytes"></param>
        /// <param name="fileType"></param>
        public void Download(byte[] bytes ,string fileType)
        {
            Response.Buffer = true;
           // Page.Response.Clear();//清除缓冲区所有内容
            Page.Response.ContentType = "application/octet-stream";
            Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("print."+fileType));
            byte[] file = bytes;
            Response.BinaryWrite(file);
            Response.Flush();
            Response.End();
        }

使用第三方dll:iTextSharp 。

这里图片被转成了byte[]放在cache中,如果是本地磁盘上的 则

代码语言:javascript
复制
var imageStream =newFileStream("test.jpg",FileMode.Open,FileAccess.Read,FileShare.ReadWrite) 

这样处理。

页面初始化的时候调用下CreatePDF 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档