pdf文件流转图片流方法(PDF文档所有页全部转换为图片 )

 

        /// <summary>
        /// 转换的图片清晰度,1最不清醒,10最清晰
        /// </summary>
        public enum Definition
        {
            One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10
        } 

        /// 将1个PDF文档所有页全部转换为图片 
        /// <param name="imageFormat">设置所需图片格式</param> 
        /// <param name="definition">设置图片的清晰度,数字越大越清晰</param> 
        public static byte[] PdfToImgForFileId(int FileId,
            ImageFormat imageFormat, Definition definition)
        {
            //根据图片获取文件对象
            tbl_File_Info document = tbl_File_Info.GetBytesInfoForid(FileId);
            //定义pdf流
            MemoryStream pdfmsinfo = new MemoryStream();
            //获取流文件
            pdfmsinfo.Write(document.FILE_STREAM, 0, document.FILE_STREAM.Length);
            //打开pdf文件
            PDFFile pdfFile = PDFFile.Open(pdfmsinfo);

            int startPageNum = 1;
            int endPageNum = pdfFile.PageCount;
            //定义合并图片对象集合
            List<Bitmap> bitMapList = new List<Bitmap>();

            //获取第一张pdf图片信息
            Bitmap pageImage = pdfFile.GetPageImage(0, 56 * (int)definition);
            int canKao = pageImage.Width > pageImage.Height ? pageImage.Height : pageImage.Width;
            //高度
            int newHeight = canKao > 1080 ? pageImage.Height / 2 : pageImage.Height;
            //宽度
            int newWidth = canKao > 1080 ? pageImage.Width / 2 : pageImage.Width;
            //创建要显示的图片对象,根据参数的个数设置宽度(整体大图)
            Bitmap backgroudImg = new Bitmap(newWidth, endPageNum * newHeight);
            //整体大图绘画工具
            Graphics bitgraphics = Graphics.FromImage(backgroudImg);
            //清除画布,背景设置为白色
            //bitgraphics.Clear(System.Drawing.Color.White);

            for (int i = startPageNum; i <= endPageNum; i++)
            {
                try
                {
                    if (i > 1)
                    {
                        //获取对应页面的pdf文件
                        pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
                    }                 
                    //将子图图片绘画到 大图中
                    bitgraphics.DrawImage(pageImage, 0, (i - 1) * newHeight, newWidth, newHeight);
                    pageImage.Dispose();
                }
                catch (Exception ex)
                {

                }
            } 
            MemoryStream imgmsinfo = new MemoryStream();
            backgroudImg.Save(imgmsinfo, imageFormat); 
            //整体大图绘画释放
            bitgraphics.Dispose();
            //pdf文件释放
            pdfFile.Dispose();
            return imgmsinfo.ToArray(); 
        } 

 

引用Dll: O2S.Components.PDFRender4NET.dll

引用参考链接:https://blog.csdn.net/tearsek/article/details/49680465

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值