C#通过Magick.Net获取PDF中的图片

上传的文件是PDF,需要在获取并在页面上查看图片。在NuGet上看到Magick.NET可以实现。

项目引用Maigck.NET-Q16-AnyCPU. 或者通过NuGet安装。这里需要注意的是如果是web网站需要将IIS进程的32位开启。

 try
        {
            //设置dll文件的目录
            string DLLLibPath = AppDomain.CurrentDomain.BaseDirectory;
            string dlllib = DLLLibPath.Substring(0, DLLLibPath.TrimEnd('\\').LastIndexOf('\\') + 1) + "ExtraDLLusing";
            MagickNET.SetGhostscriptDirectory(dlllib);
            MagickReadSettings setting = new MagickReadSettings();

            // 设置图片放缩的比例50-300
            setting.Density = new Density(100);
            using (MagickImageCollection images = new MagickImageCollection())
            {
                // 读取二进制数组中的文件
                images.Read(bytePdf, setting);
                int i = 0;
                foreach (MagickImage vertical in images)
                {
                    ++i;
                    vertical.Write(ImgPath + "/" + sku + "_"+ NewName + "_" + i + ".jpg");

                }
                //将PDF中所有图片放到一张图片中
                //using (MagickImage vertical = (MagickImage)images.AppendVertically())
                //{
                //    vertical.Write(ImgPath);
                //    //byte[] ReusltByte = File.ReadAllBytes(ImgPath);
                //    return true;
                //}
            }
        }
        catch (Exception ex)
        {
            context.Response.Write( ex.ToString());
        }
        finally
        {
            //File.Delete(ImgPath);
        }

代码中有一段设置dll目录的代码。是因为Magick通过Adobe的gsdll32.dll实现的,不需要引用到项目中,只需要设置一下路径就可以。

dll下载方式:可以在NuGet上搜索ghostscript,安装一下。如果项目不是类库无法安装,但是可以通过安装动作,将dll下载下来。或者通过其他渠道下载。

猜你喜欢

转载自www.cnblogs.com/Echiops/p/11075911.html