/// <summary>         /// 将PDF文档转换为图片的方法         /// </summary>         /// <param name="pdfInputPath">PDF文件路径</param>         /// <param name="imageOutputPath">图片输出路径</param>         /// <param name="imageName">生成图片的名字</param>         /// <param name="startPageNum">从PDF文档的第几页开始转换</param>         /// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>         /// <param name="imageFormat">设置所需图片格式</param>         /// <param name="definition">设置图片的清晰度,数字越大越清晰</param>         public BookInfoViewModel PdfToImages(string pdfInputPath, string imageOutputPath, string imageName, int startPageNum, int endPageNum, ImageFormat imageFormat, PdfToPicture.ImageQuality definition, BookInfoViewModel BookInfoViewmodel)         {             int imgVerticalResolution = Convert.ToInt32(Settings.imgVerticalResolution);             //var pdfFile = PDFFile.Open(pdfInputPath);

//if (!Directory.Exists(imageOutputPath))             //{             //    Directory.CreateDirectory(imageOutputPath);             //}

//// validate pageNum             //if (startPageNum <= 0)             //{             //    startPageNum = 1;             //}

//if (endPageNum > pdfFile.PageCount)             //{             //    endPageNum = pdfFile.PageCount;             //}

//if (startPageNum > endPageNum)             //{             //    int tempPageNum = startPageNum;             //    startPageNum = endPageNum;             //    endPageNum = tempPageNum;             //}             //BookInfoViewmodel.PageNoCount = pdfFile.PageCount;             //BookInfoViewmodel.BookPdfToImgInfoModelList = new List<BookInfoViewModel.BookPdfToImgInfoModel>();             //for (int i = startPageNum; i <= endPageNum; i++)             //{             //    BookInfoViewModel.BookPdfToImgInfoModel BookPdfToImgInfomodel = new BookInfoViewModel.BookPdfToImgInfoModel();             //    var pageImage = pdfFile.GetPageImage(i - 1, 96 * (int)definition);             //    int Width = pageImage.Width;             //    int Height = pageImage.Height;             //    if (i == startPageNum)             //    {             //        BookInfoViewmodel.FileDimension = Width + "*" + Height;             //    }             //    BookPdfToImgInfomodel.ImgFileDimension = Width + "*" + Height;             //    BookPdfToImgInfomodel.ImgFileExtension = imageFormat.ToString();             //    BookPdfToImgInfomodel.ImgFileName = imageName + "_" + i.ToString();             //    BookPdfToImgInfomodel.ImgFileNo = Convert.ToInt32(Session["PageCount"]) + i;             //    pageImage.Save(imageOutputPath + "/" + imageName + "_" + i.ToString() + "." + imageFormat.ToString(), imageFormat);             //    pageImage.Dispose();             //    //string sourcePdfFilePath = pdfInputPath;

//    //將上傳的圖片重新命名             //    //var destFile = GetFilePath(pdfInputPath);             //    //System.IO.File.Copy(pdfInputPath, destFile, true);             //    //切割pdf             //    //GhostscriptWrapper.GeneratePageThumb(destFile, imageOutputPath + "/" + imageName + "_" + i.ToString() + "." + imageFormat.ToString(), 1, 150, 150);             //    //刪除複製的文件             //    //System.IO.File.Delete(destFile);

//    //生成小图             //    CompressionImage.generateImage(imageName + "_" + i.ToString() + "." + imageFormat.ToString(), imageOutputPath, "S_" + imageName + "_" + i.ToString() + "." + imageFormat.ToString(), 150, 150);             //    //生成中图             //    if (Width > 850)             //    {             //        CompressionImage.generateImage(imageName + "_" + i.ToString() + "." + imageFormat.ToString(), imageOutputPath, "M_" + imageName + "_" + i.ToString() + "." + imageFormat.ToString(), 850, 99999);             //    }             //    else             //    {             //        System.IO.File.Copy(Path.Combine(imageOutputPath, imageName + "_" + i.ToString() + "." + imageFormat.ToString()), Path.Combine(imageOutputPath, "M_" + imageName + "_" + i.ToString() + "." + imageFormat.ToString()));             //    }             //    //获取图片的大小             //    FileInfo file = new FileInfo(imageOutputPath + "/" + imageName + "_" + i.ToString() + "." + imageFormat.ToString());             //    BookPdfToImgInfomodel.ImgFileSize = file.Length;             //    BookInfoViewmodel.BookPdfToImgInfoModelList.Add(BookPdfToImgInfomodel);

//}             //Session["PageCount"] = Convert.ToInt32(Session["PageCount"]) + 1;             //pdfFile.Dispose();

var destFile = GetFilePath(pdfInputPath);             System.IO.File.Copy(pdfInputPath, destFile, true);             try             {                 //和选择的文件并列创建一个目录                 string directoryPath = imageOutputPath;

//定义Jpeg转换设备                 Aspose.Pdf.Document document = new Aspose.Pdf.Document(destFile);                 var device = new Aspose.Pdf.Devices.JpegDevice();                 int quality = 100;                 // directoryPath += quality;                 if (!System.IO.Directory.Exists(directoryPath))                 {                     Directory.CreateDirectory(directoryPath);                 }                 //默认质量为100,设置质量的好坏与处理速度不成正比,甚至是设置的质量越低反而花的时间越长,怀疑处理过程是先生成高质量的再压缩                 //device = new Aspose.Pdf.Devices.JpegDevice(quality);                 //device = new Aspose.Pdf.Devices.JpegDevice(1,, quality,);                 //遍历每一页转为jpg                 endPageNum = 1;                 BookInfoViewmodel.BookPdfToImgInfoModelList = new List<BookInfoViewModel.BookPdfToImgInfoModel>();                 BookInfoViewmodel.PageNoCount = document.Pages.Count;                 for (var i = 1; i <= endPageNum; i++)                 {                     string filePathOutPut = Path.Combine(directoryPath, string.Format("{0}_{1}.{2}", imageName, i.ToString(), imageFormat.ToString()));                     FileStream fs = new FileStream(filePathOutPut, FileMode.OpenOrCreate);                     try                     {                         BookInfoViewModel.BookPdfToImgInfoModel BookPdfToImgInfomodel = new BookInfoViewModel.BookPdfToImgInfoModel();                         BookPdfToImgInfomodel.ImgFileExtension = imageFormat.ToString();                         BookPdfToImgInfomodel.ImgFileName = imageName + "_" + i.ToString();                         BookPdfToImgInfomodel.ImgFileNo = Convert.ToInt32(Session["PageCount"]) + i;                         BookPdfToImgInfomodel.ImgFileSize = fs.Length;                         BookInfoViewmodel.BookPdfToImgInfoModelList.Add(BookPdfToImgInfomodel);

//var pdfFile = PDFFile.Open(pdfInputPath);                         //var pageImage = pdfFile.GetPageImage(i - 1, imgVerticalResolution * (int)definition);//设置分辨率为96dpi                         int Width = 0;                         int Height = 0;                         //設置生成圖片的分辨率                         Aspose.Pdf.Devices.Resolution pdfResolution = new Aspose.Pdf.Devices.Resolution(imgVerticalResolution, imgVerticalResolution);                         //pdfResolution.X = 96;                         //pdfResolution.Y = 96;                         //默认质量为100,设置质量的好坏与处理速度不成正比,甚至是设置的质量越低反而花的时间越长,怀疑处理过程是先生成高质量的再压缩                         //device = new Aspose.Pdf.Devices.JpegDevice(quality);                         device = new Aspose.Pdf.Devices.JpegDevice(Width, Height, pdfResolution, quality);                         device.Process(document.Pages[i], fs);                         fs.Close();                         //pageImage.Dispose();                         //pdfFile.Dispose();                         //BookInfoViewmodel.FileDimension = Width + "*" + Height;

DirectoryInfo folder = new DirectoryInfo(imageOutputPath);                         int pdffileount = 0;                         foreach (FileInfo pdffile in folder.GetFiles())                         {                             if (pdffileount == 0)                             {                                 if (pdffile.Extension.Substring(1, pdffile.Extension.Length - 1) == imageFormat.ToString())                                 {                                     Image newImage = Image.FromFile(pdffile.FullName);                                     Width = newImage.Width;                                     Height = newImage.Height;                                     pdffileount++;                                     newImage.Dispose();                                 }                             }

}                         BookInfoViewmodel.FileDimension = Width + "*" + Height;                         //生成小图                         CompressionImage.generateImage(imageName + "_" + i.ToString() + "." + imageFormat.ToString(), imageOutputPath, "S_" + imageName + "_" + i.ToString() + "." + imageFormat.ToString(), 150, 150);                         //生成中图                         if (Width > 850)                         {                             CompressionImage.generateImage(imageName + "_" + i.ToString() + "." + imageFormat.ToString(), imageOutputPath, "M_" + imageName + "_" + i.ToString() + "." + imageFormat.ToString(), 850, 99999);                         }                         else                         {                             System.IO.File.Copy(Path.Combine(imageOutputPath, imageName + "_" + i.ToString() + "." + imageFormat.ToString()), Path.Combine(imageOutputPath, "M_" + imageName + "_" + i.ToString() + "." + imageFormat.ToString()));                         }

}                     catch (Exception ex)                     {                         fs.Close();                         System.IO.Directory.Delete(filePathOutPut);                     }                 }                 document.Dispose();             }             catch (Exception ex)             {

}             finally             {                 System.IO.File.Delete(destFile);             }             return BookInfoViewmodel;         }

pdf 切割成圖片的方法的更多相关文章

  1. C#pdf 切割成图片

    引用 using Ghostscript.NET;using Ghostscript.NET.Rasterizer; 需要安装 exe文件 public static GhostscriptVersi ...

  2. PdfReader按页将PDF切割成多个PDF

    private MemoryStream GetNewPdfByPageNum(PdfReader pdfReader, int pageNum) { MemoryStream memoryStrea ...

  3. 如何用ABBYY把PDF转换成PPT

    在电子科技迅速发展的今天,文件格式转换并不是什么稀罕事,因为现在都是电子化办公,出现很多文件格式,但是不同的场合需要的格式不同,所以常常需要进行文件格式的转换.PDF转换成PPT也是众多文件格式转换中 ...

  4. oracle 字符串切割成结果集方法

    oracle字符串切割几种方式 方法一: SELECT COLUMN_VALUE FROM TABLE(SYS.ODCIVARCHAR2LIST('1','2','3','4','5')); 方法二: ...

  5. ABBYY把pdf转换成word的方法

    有时候我们在网上下载的资料文献是PDF格式文档,遇到喜欢的字句总忍不住想要收藏起来,但是PDF文档不同于普通的Word文档可以直接进行复制粘贴,需要下载安装相关的编辑工具,才能对文字内容进行编辑.倒不 ...

  6. 利用jpedal进行pdf转换成jpeg,jpg,png,tiff,tif等格式的图片

    项目中运用到pdf文件转换成image图片,开始时使用pdfbox开源库进行图片转换,但是转换出来的文件中含有部分乱码的情况.下面是pdfBox 的pdf转换图片的代码示例. try{ String ...

  7. C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)

    原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...

  8. php 将pdf转成图片且将图片拼接

    说明: 1.pdf转图片通过安装php扩展imagick实现. 2.由于windows扩展安装的一系列问题,建议在linux环境开发,windows大伙可以尝试安装. 3.为Centos 安装Imag ...

  9. Android中将一个图片切割成多个图片

    有种场景,我们想将一个图片切割成多个图片.比如我们在开发一个拼图的游戏,就首先要对图片进行切割. 以下是封装好的两个类,可以实现图片的切割.仅供参考和学习. 一个是ImagePiece类,此类保存了一 ...

随机推荐

  1. SQL 存储过程中QUOTED_IDENTIFIER on/off

    http://huihai.iteye.com/blog/1005144 在存储过程中经常会有 SET QUOTED_IDENTIFIER on SET QUOTED_IDENTIFIER off S ...

  2. Javascript模式(第一章简介)------读书笔记

    一:模式 模式是一个通用问题的解决方案,可以提供一个更好的实践经验.有用的抽象化表示和解决一类问题的模板. 本书主要讨论如下三种类型的模式 1 设计模式:可复用面向对象软件的基础,包括singleto ...

  3. 【zz】MIT牛人解说数学体系

    作者:林达华 一.为什么要深入数学的世界 作为计算机的学生,我(原作者)没有任何企图要成为一个数学家.我学习数学的目 的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些. ...

  4. HTML5常用的方法

    1.html禁止手机页面放大缩小 在页面head中加入<meta name="viewport" content="width=device-width, init ...

  5. GUI(图形用户界面)

    ylbtech-Miscellaneos:GUI(图形用户界面) A,返回顶部 1, 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显 ...

  6. mysql 数据库视图迁移

    最近做一个项目,为了方便查询,建了好多的视图表,正式上线的时候需要把本地数据库迁移到服务器上. 按照常规方法: 1."导出sql","导入sql",发现视图没过 ...

  7. 注释驱动的 Spring cache 缓存介绍

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  8. 为 Docker Registry 增加 Nginx 前端

    其实Docker Registry 就是一个API backend,所以加一个Nginx前端有大大的好处,比如docker push 时增加用户名密码验证. 怎么加?请参考以下nginx配置 upst ...

  9. 帝国cms 页面统计

    <script src=[!--news.url--]e/public/ViewClick/?classid=[!--classid--]&id=[!--id--]&addcli ...

  10. Struts2:效验器——注解

    效验器三类: 编程式——Java代码 声明式——xml 注释法——@ 注解验证可以修饰属性的getter方法,也可以修饰执行方法Action中校验失败时,返回input逻辑视图 struts.xml ...