pdf 切割成圖片的方法
/// <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 切割成圖片的方法的更多相关文章
- C#pdf 切割成图片
引用 using Ghostscript.NET;using Ghostscript.NET.Rasterizer; 需要安装 exe文件 public static GhostscriptVersi ...
- PdfReader按页将PDF切割成多个PDF
private MemoryStream GetNewPdfByPageNum(PdfReader pdfReader, int pageNum) { MemoryStream memoryStrea ...
- 如何用ABBYY把PDF转换成PPT
在电子科技迅速发展的今天,文件格式转换并不是什么稀罕事,因为现在都是电子化办公,出现很多文件格式,但是不同的场合需要的格式不同,所以常常需要进行文件格式的转换.PDF转换成PPT也是众多文件格式转换中 ...
- oracle 字符串切割成结果集方法
oracle字符串切割几种方式 方法一: SELECT COLUMN_VALUE FROM TABLE(SYS.ODCIVARCHAR2LIST('1','2','3','4','5')); 方法二: ...
- ABBYY把pdf转换成word的方法
有时候我们在网上下载的资料文献是PDF格式文档,遇到喜欢的字句总忍不住想要收藏起来,但是PDF文档不同于普通的Word文档可以直接进行复制粘贴,需要下载安装相关的编辑工具,才能对文字内容进行编辑.倒不 ...
- 利用jpedal进行pdf转换成jpeg,jpg,png,tiff,tif等格式的图片
项目中运用到pdf文件转换成image图片,开始时使用pdfbox开源库进行图片转换,但是转换出来的文件中含有部分乱码的情况.下面是pdfBox 的pdf转换图片的代码示例. try{ String ...
- C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)
原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...
- php 将pdf转成图片且将图片拼接
说明: 1.pdf转图片通过安装php扩展imagick实现. 2.由于windows扩展安装的一系列问题,建议在linux环境开发,windows大伙可以尝试安装. 3.为Centos 安装Imag ...
- Android中将一个图片切割成多个图片
有种场景,我们想将一个图片切割成多个图片.比如我们在开发一个拼图的游戏,就首先要对图片进行切割. 以下是封装好的两个类,可以实现图片的切割.仅供参考和学习. 一个是ImagePiece类,此类保存了一 ...
随机推荐
- oracle备份工具exp-imp
rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpmrpm -ivh http: ...
- CentOS MySQL 配置
问题: MySQL安装后root用户无法连接,提示 ERROR 1045 (28000): Access denied for user ’root’@’localhost’ (using passw ...
- 12、Java中的接口
接口:初期理解,可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.class用于定义类interface 用于定义接口. 接口定义时,格式特点:1,接口中常见定 ...
- javascript介绍
1.javascript的简介 1.1javascript的特点 1.安全性(不允许方问本地硬盘),它可以做的是信息的动态交互. 2.跨平台.(只要是可以解释js的浏览器都可以执行,与平台无关) 1. ...
- python---set集合
集合(set)是一个无序不重复元素的序列. #!/usr/bin/python3 student = ({'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}) p ...
- HDU 1789 Doing Homework again(贪心)
Doing Homework again 这只是一道简单的贪心,但想不到的话,真的好难,我就想不到,最后还是看的题解 [题目链接]Doing Homework again [题目类型]贪心 & ...
- 【javascript 面试笔试】1、几道笔试题
今天想起来几道javascript的面试题,大家做做看看,有别的思路可以在下面写出来,大家交流一下 (1) 将多维数组转化成一个一位数组,例如[1,[2,3],[4,5,[6,7]]]转化成[1,2, ...
- oracle ||,
|| oracle数据库中的 ||称为 "字符串连接符" 用于连接查询结果,如下: select trade_id,accept_date from A; ------------ ...
- linux中mysql如何设置为开机启动
开机启动命令 chkconfig mysqld on 查询是否设置为开机启动命令 chkconfig --list mysqld 结果为 mysqld 0:关闭 1:关闭 2:启动 3:启动 4:启动 ...
- 说说无耻的商河水木清华开发商2013"交房
说说无耻的水木清华开发商2013"交房" 我买的是22号楼,合同里写的是2011年6月30号前交房.4月28我手机响了,电话那边说是水木清华的,29号交房.说交房通知书已经EMS发 ...