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类,此类保存了一 ...
随机推荐
- Linux java环境安装
一.jdk yum 安装方法 1.wegt http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...
- 菜单伸缩Js控制
<div class="global_module procatalog"> <h3>产品分类</h3> <ul class=" ...
- Redis 64 steps
a memo for redis 64 operations start server in console: 1. D:\>cd redis64 2. D:\redis64>redis- ...
- SQLServer count函数、cross apply和outer apply、
1.COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)2.COUNT(*) 函数返回表中的记录数 select * from TABLE_1 T1 outer ap ...
- wampserver修改mysql默认字符集
[client] default-character-set=utf8 [mysqld]character_set_server = utf8 重启服务
- Winfrom 开发小技能
1.放弃进度条.动态进度图片等方式实现用户体验优化方式(主要是优化用户等待体验),建议使用方式? 答:对于From或者Control而言,其提供了Cursor属性设置即可. 例如: this.Curs ...
- Fastboot模式和Recovery模式
http://blog.csdn.net/luoshengyang/article/details/29688041 在回答第一个问题之前,我们先来看看Android设备从硬件到系统的结构,如图1所示 ...
- Eclipse插件安装方式及使用说明
拷贝安装方式 1.通过ECLIPSE_HOME\plugins安装 在eclipse的主目录ECLIPSE_HOME, 比如在我的机器上安装的目录是:ECLIPSE_HOME有一个plugins的目录 ...
- SQL Server中可能为null的变量逻辑运算的时候要小心
DECLARE @a int declare @b int IF(@a<>@b) print('@a<>@b') else print('@a=@b') ) print('b& ...
- 从委托到Lambda
写下这篇文章的时候已经是工作三年,突然发现自己从始至终都没有学习过任何东西,突然想学点东西又不知道从何而写那只能一个个基础重新学习. 委托 什么是委托? 委托是一个类,它定义了方法的类型,使得可以将方 ...