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

 

        ///


        /// 转换的图片清晰度,1最不清醒,10最清晰
        ///

        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文档所有页全部转换为图片 
        /// 设置所需图片格式 
        /// 设置图片的清晰度,数字越大越清晰 
        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 bitMapList = new List();

            //获取第一张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

你可能感兴趣的:(文件流)