.Net的PDF转图片

用的是破解版的 O2S.Components.PDFRender4NET.dll 插件, 简单引用即可

    public static class PdfToImage
    {
        public static MemoryStream GetPdfImagePageStream(string pdfInputPath, int pageIndex, ImageFormat format, int width = 1600, int height = 2560, int quality = 10)
        {
            try
            {
                //pdf处理插件
                PDFFile pdfFile = PDFFile.Open(pdfInputPath);
                int total = pdfFile.PageCount;

                #region 防止异常参数
                if (pageIndex < 0)
                {
                    pageIndex = 0;
                }
                if (pageIndex > total)
                {
                    pageIndex = total - 1;
                }
                if (quality < 1)
                {
                    quality = 1;
                }
                if (quality > 10)
                {
                    quality = 10;
                }
                if (width <= 0)
                {
                    width = 1;
                }

                if (height <= 0)
                {
                    height = 1;
                }
                #endregion

                //pdf转换图片
                SizeF pageSize = pdfFile.GetPageSize(pageIndex);

                Bitmap pageImage = pdfFile.GetPageImage(pageIndex, 56 * quality);

                MemoryStream ms = new MemoryStream();

                pageImage.Save(ms, format);

                //原图
                Image img = Image.FromStream(ms, true);

                double ratio = (double)width / (double)height;

                double oRatio = (double)img.Width / (double)img.Height;

                int sbWidth = 0;

                int sbHeight = 0;

                int outX = 0;
                int outY = 0;

                if (oRatio < ratio)
                {
                    sbWidth = (int)(img.Width * ((double)height / (double)(img.Height)));
                    sbHeight = height;

                    outX = (width - sbWidth) / 2;
                }
                else
                {
                    sbHeight = (int)(img.Height * ((double)width / (double)(img.Width)));
                    sbWidth = width;

                    outY = (height - sbHeight) / 2;
                }

                //缩放
                Image sbImg = new Bitmap(sbWidth, sbHeight);
                Graphics sbGra = Graphics.FromImage(sbImg);
                sbGra.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                sbGra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                sbGra.Clear(Color.White);
                sbGra.DrawImage(img, new System.Drawing.Rectangle(0, 0, sbWidth, sbHeight), new System.Drawing.Rectangle(0, 0, img.Width, img.Height), System.Drawing.GraphicsUnit.Pixel);

                //补白
                Image outImg = new System.Drawing.Bitmap(width, height);
                Graphics outGra = System.Drawing.Graphics.FromImage(outImg);
                outGra.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                outGra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                outGra.Clear(Color.White);
                outGra.DrawImage(sbImg, new System.Drawing.Rectangle(outX, outY, sbWidth, sbHeight), new System.Drawing.Rectangle(0, 0, sbWidth, sbHeight), System.Drawing.GraphicsUnit.Pixel);

                MemoryStream outMs = new MemoryStream();

                outImg.Save(outMs, format);

                sbImg.Dispose();
                outImg.Dispose();
                img.Dispose();

                return outMs;

            }
            catch (Exception ex)
            {

            }

            return new MemoryStream();
        }

        public static MemoryStream GetPdfImagePageStream(Stream stream, int pageIndex, ImageFormat format, int width = 1600, int height = 2560, int quality = 10)
        {
            try
            {
                //pdf处理插件
                PDFFile pdfFile = PDFFile.Open(stream);
                int total = pdfFile.PageCount;

                #region 防止异常参数
                if (pageIndex < 0)
                {
                    pageIndex = 0;
                }
                if (pageIndex > total)
                {
                    pageIndex = total - 1;
                }
                if (quality < 1)
                {
                    quality = 1;
                }
                if (quality > 10)
                {
                    quality = 10;
                }
                if (width <= 0)
                {
                    width = 1;
                }

                if (height <= 0)
                {
                    height = 1;
                }
                #endregion

                //pdf转换图片
                SizeF pageSize = pdfFile.GetPageSize(pageIndex);

                Bitmap pageImage = pdfFile.GetPageImage(pageIndex, 56 * quality);

                MemoryStream ms = new MemoryStream();

                pageImage.Save(ms, format);

                //原图
                Image img = Image.FromStream(ms, true);

                double ratio = (double)width / (double)height;

                double oRatio = (double)img.Width / (double)img.Height;

                int sbWidth = 0;

                int sbHeight = 0;

                int outX = 0;
                int outY = 0;

                if (oRatio < ratio)
                {
                    sbWidth = (int)(img.Width * ((double)height / (double)(img.Height)));
                    sbHeight = height;

                    outX = (width - sbWidth) / 2;
                }
                else
                {
                    sbHeight = (int)(img.Height * ((double)width / (double)(img.Width)));
                    sbWidth = width;

                    outY = (height - sbHeight) / 2;
                }

                //缩放
                Image sbImg = new Bitmap(sbWidth, sbHeight);
                Graphics sbGra = Graphics.FromImage(sbImg);
                sbGra.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                sbGra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                sbGra.Clear(Color.White);
                sbGra.DrawImage(img, new System.Drawing.Rectangle(0, 0, sbWidth, sbHeight), new System.Drawing.Rectangle(0, 0, img.Width, img.Height), System.Drawing.GraphicsUnit.Pixel);

                //补白
                Image outImg = new System.Drawing.Bitmap(width, height);
                Graphics outGra = System.Drawing.Graphics.FromImage(outImg);
                outGra.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                outGra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                outGra.Clear(Color.White);
                outGra.DrawImage(sbImg, new System.Drawing.Rectangle(outX, outY, sbWidth, sbHeight), new System.Drawing.Rectangle(0, 0, sbWidth, sbHeight), System.Drawing.GraphicsUnit.Pixel);

                MemoryStream outMs = new MemoryStream();

                outImg.Save(outMs, format);

                sbImg.Dispose();
                outImg.Dispose();
                img.Dispose();

                return outMs;

            }
            catch (Exception ex)
            {

            }

            return new MemoryStream();
        }
    }

时间: 2024-10-31 05:52:06

.Net的PDF转图片的相关文章

PDF转图片

1.第三方库下载:PyPDF2.PythonMagick.Ghostscript. 2.PythonMagick的官方下载链接为:http://www.imagemagick.org/download/python/,需要自己编译:一个好用的非官方链接为:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonmagick. 3.如果报下面这种错误,多半是因为没装Ghostscript. RuntimeError: python.exe: Postscr

C# word 转图片 PDF 转图片

word转图片使用的Aspose组件,Aspose.word.dll  public bool Word2Png(string docFile, string pngDir, out int pngCount)         {             ImageSaveOptions options = new ImageSaveOptions(SaveFormat.Png);             options.Resolution = 300;             options

java pdf转图片

最近项目中使用到了pdf转图片的需求,在此记录一下. 1.基于GhostScript p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #4f76cb } span.s1 { text-decoration: underline } span.s2 { color: #9293af } 使用此方法要求运行环境安装GhostScript.转换使用的命令是:gs -sDEVICE=pngalpha -o %03d.

C# 给PDF添加图片背景

今天要实现的是给PDF文件添加图片背景这个功能.PDF是近年来最流行的文件之一,无论是办公还是日常生活中都经常会用到,很多时候,PDF文件的背景色都是白色,看多了难免觉得累,更换PDF的背景不仅可以让眼睛看起来更舒服,还可以让PDF文件看上去更美观.如何实现?作为一名程序猿,当然要亲自“操刀上阵”,这篇文章我主要写的是如何使用C# 给PDF文件添加图片背景. 这是我准备的PDF文件: 代码使用: 第一步:创建一个Visual C#控制台项目,添加引用并使用命名空间. 1 2 using Syst

使用pdfbox分页保存pdf为图片

一.背景 pdfbox作为Apache开源的PDF操作工具,允许创建新的PDF文档,操作现有文档,以及从文档中提取内容的能力.Apache PDFBox还包括一些命令行实用工具.本文楼主主要介绍其中的PDF转图片的功能,有其他功能需求的同学,可以去官网读读文档,https://pdfbox.apache.org/ 二.准备工作 只需两个jar,pdfbox-2.0.7.jar,font-box-2.0.7.jar,当然用maven或gradle的同学,只需引入pdfbox就行了,依赖添加,楼主给

在线提取PDF中图片和文字

无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字.如下图所示:结果本人测试,该工具非常好用,能够轻松提取pdf中图片打包下载(如下图所示),唯一不足的是它只能提取10M一下的PDF文档,对于大文档提取速度可能就力不从心了,总之,是个值得收藏的网站.虽然是英文网站,但是该pdf提取工具对中文支持非常好,不会出现乱码.

pdf怎么转换成jpg,使用工具将pdf转为图片

PDF文件在方方面面都是我们工作中的好帮手,可是在PDF文件有编辑权限,所以在使用的时候也是需要大家将PDF转换成其他格式.这里我们就网友议论较多的“pdf怎么转换成jpg”这个问题来给大家说一说. pdf转换成jpg,我们知道一个技巧性的解决方法,比如用Acrobat Reader .捷速PDF编辑器软件之类的PDF文件阅读器打开PDF文件,利用拍快照或是截图的方法将PDF文件一页页的变成JPG图片,但是这种方法已经非常老套了,而且使用起来也非常的麻烦.下面看一下使用pdf工具是如何将pdf转

在线扫描PDF JPG 图片上面文字

在线扫描PDF JPG 图片上面文字

pdf 转图片,提取图片研究心得

1.pdf 中的数据是有多种编码的,详情请看:http://www.cnblogs.com/zendu/p/7644465.html 2.我的工作场景比较特殊,pdf中全部是图片,所以pdf转图片就有两种思路. a.一种是把图片直接提取出来,怎么放进去的怎么提取出来. 这种速度最快,原因是用不到解码,直接数据的拷贝.但是也有他的问题,就是pdf中的编码格式较多,要针对不同的编码,提供不同的提取程序. 可以用到的库是pdfsharp ,itextsharp.个人感觉pdfsharp 没itexts