/// <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. oracle备份工具exp-imp

    rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpmrpm -ivh http: ...

  2. CentOS MySQL 配置

    问题: MySQL安装后root用户无法连接,提示 ERROR 1045 (28000): Access denied for user ’root’@’localhost’ (using passw ...

  3. 12、Java中的接口

    接口:初期理解,可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.class用于定义类interface 用于定义接口. 接口定义时,格式特点:1,接口中常见定 ...

  4. javascript介绍

    1.javascript的简介 1.1javascript的特点 1.安全性(不允许方问本地硬盘),它可以做的是信息的动态交互. 2.跨平台.(只要是可以解释js的浏览器都可以执行,与平台无关) 1. ...

  5. python---set集合

    集合(set)是一个无序不重复元素的序列. #!/usr/bin/python3 student = ({'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}) p ...

  6. HDU 1789 Doing Homework again(贪心)

    Doing Homework again 这只是一道简单的贪心,但想不到的话,真的好难,我就想不到,最后还是看的题解 [题目链接]Doing Homework again [题目类型]贪心 & ...

  7. 【javascript 面试笔试】1、几道笔试题

    今天想起来几道javascript的面试题,大家做做看看,有别的思路可以在下面写出来,大家交流一下 (1) 将多维数组转化成一个一位数组,例如[1,[2,3],[4,5,[6,7]]]转化成[1,2, ...

  8. oracle ||,

    || oracle数据库中的 ||称为 "字符串连接符" 用于连接查询结果,如下: select trade_id,accept_date from A; ------------ ...

  9. linux中mysql如何设置为开机启动

    开机启动命令 chkconfig mysqld on 查询是否设置为开机启动命令 chkconfig --list mysqld 结果为 mysqld 0:关闭 1:关闭 2:启动 3:启动 4:启动 ...

  10. 说说无耻的商河水木清华开发商2013"交房

    说说无耻的水木清华开发商2013"交房" 我买的是22号楼,合同里写的是2011年6月30号前交房.4月28我手机响了,电话那边说是水木清华的,29号交房.说交房通知书已经EMS发 ...