/// <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. Linux java环境安装

    一.jdk yum 安装方法 1.wegt http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...

  2. 菜单伸缩Js控制

    <div class="global_module procatalog"> <h3>产品分类</h3> <ul class=" ...

  3. Redis 64 steps

    a memo for redis 64 operations start server in console: 1. D:\>cd redis64 2. D:\redis64>redis- ...

  4. SQLServer count函数、cross apply和outer apply、

    1.COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)2.COUNT(*) 函数返回表中的记录数 select *   from TABLE_1 T1 outer ap ...

  5. wampserver修改mysql默认字符集

    [client] default-character-set=utf8 [mysqld]character_set_server = utf8 重启服务

  6. Winfrom 开发小技能

    1.放弃进度条.动态进度图片等方式实现用户体验优化方式(主要是优化用户等待体验),建议使用方式? 答:对于From或者Control而言,其提供了Cursor属性设置即可. 例如: this.Curs ...

  7. Fastboot模式和Recovery模式

    http://blog.csdn.net/luoshengyang/article/details/29688041 在回答第一个问题之前,我们先来看看Android设备从硬件到系统的结构,如图1所示 ...

  8. Eclipse插件安装方式及使用说明

    拷贝安装方式 1.通过ECLIPSE_HOME\plugins安装 在eclipse的主目录ECLIPSE_HOME, 比如在我的机器上安装的目录是:ECLIPSE_HOME有一个plugins的目录 ...

  9. SQL Server中可能为null的变量逻辑运算的时候要小心

    DECLARE @a int declare @b int IF(@a<>@b) print('@a<>@b') else print('@a=@b') ) print('b& ...

  10. 从委托到Lambda

    写下这篇文章的时候已经是工作三年,突然发现自己从始至终都没有学习过任何东西,突然想学点东西又不知道从何而写那只能一个个基础重新学习. 委托 什么是委托? 委托是一个类,它定义了方法的类型,使得可以将方 ...