c#,将pdf文件转换成图片文件。
来源:互联网 发布:问答软件名字 编辑:程序博客网 时间:2024/04/27 10:42
本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件。
开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0。
工程中添加COM引用:Adobe Acrobat 9.0 Type Library(必须装了Adobe Acrobat9.0才会有)。
思路:
1、需要用到的COM对象:
1)CAcroPDDoc:Acrobat文档对象。
2)CAcroPDPage:页对象。
3)CAcroRect:用来描述页中一个矩形区域的对象。
4)CAcroPoint:实际上代表的是Size。
2、转换过程:
1)打开文档。
2)取出每一页。
3)获取每一页的大小,生成一个表示该页的矩形区域。
4)将当前页的指定区域编码成图片,并且复制到剪贴板中。
5)将剪贴板中的图片取出,保存为图片文件。
转换函数代码:
public static void ConvertPdf2Image(string pdfFilePath, string imageDirectoryPath, int beginPageNum, int endPageNum, ImageFormat format, double zoom = 1) { Acrobat.CAcroPDDoc pdfDoc = null; Acrobat.CAcroPDPage pdfPage = null; Acrobat.CAcroRect pdfRect = null; Acrobat.CAcroPoint pdfPoint = null; //1) //生成操作Pdf文件的Com对象 pdfDoc = (Acrobat.CAcroPDDoc)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.PDDoc", ""); //检查输入参数 if (!pdfDoc.Open(pdfFilePath)) { throw new FileNotFoundException(string.Format("源文件{0}不存在!", pdfFilePath)); } if (!Directory.Exists(imageDirectoryPath)) { Directory.CreateDirectory(imageDirectoryPath); } if (beginPageNum <= 0) { beginPageNum = 1; } if (endPageNum > pdfDoc.GetNumPages() || endPageNum <= 0) { endPageNum = pdfDoc.GetNumPages(); } if (beginPageNum > endPageNum) { throw new ArgumentException("参数\"beginPageNum\"必须小于\"endPageNum\"!"); } if (format == null) { format = ImageFormat.Png; } if (zoom <= 0) { zoom = 1; } //转换 for (int i = beginPageNum; i <= endPageNum; i++) { //2) //取出当前页 pdfPage = (Acrobat.CAcroPDPage)pdfDoc.AcquirePage(i - 1); //3) //得到当前页的大小 pdfPoint = (Acrobat.CAcroPoint)pdfPage.GetSize(); //生成一个页的裁剪区矩形对象 pdfRect = (Acrobat.CAcroRect)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.Rect", ""); //计算当前页经缩放后的实际宽度和高度,zoom==1时,保持原比例大小 int imgWidth = (int)((double)pdfPoint.x * zoom); int imgHeight = (int)((double)pdfPoint.y * zoom); //设置裁剪矩形的大小为当前页的大小 pdfRect.Left = 0; pdfRect.right = (short)imgWidth; pdfRect.Top = 0; pdfRect.bottom = (short)imgHeight; //4) //将当前页的裁剪区的内容编成图片后复制到剪贴板中 pdfPage.CopyToClipboard(pdfRect, 0, 0, (short)(100 * zoom)); //5) IDataObject clipboardData = Clipboard.GetDataObject(); //检查剪贴板中的对象是否是图片,如果是图片则将其保存为指定格式的图片文件 if (clipboardData.GetDataPresent(DataFormats.Bitmap)) { Bitmap pdfBitmap = (Bitmap)clipboardData.GetData(DataFormats.Bitmap); pdfBitmap.Save( Path.Combine(imageDirectoryPath, i.ToString("0000") + "." + format.ToString()), format); pdfBitmap.Dispose(); } } //关闭和释放相关COM对象 pdfDoc.Close(); Marshal.ReleaseComObject(pdfRect); Marshal.ReleaseComObject(pdfPoint); Marshal.ReleaseComObject(pdfPage); Marshal.ReleaseComObject(pdfDoc); }
代码:
http://download.csdn.net/download/kongxh_1981/9161481
网上有一篇搜集的非常全的将Pdf文件转换成图片的各种方法,拿出来分享:
http://topic.csdn.net/u/20120219/20/4888d128-3b77-47bc-aa21-cb02c014bc1f.html?84661
0 0
- 转c#,将pdf文件转换成图片文件
- c#,将pdf文件转换成图片文件。
- JAVA 将图片转换成pdf文件
- 将pdf文件转换成jpg图片
- 怎样将PDF文件转换成jpg图片的方法
- 怎样将图片制作转换成PDF文件
- 小技巧—如何将pdf文件转换成图片
- 怎样将图片整理转换成一个pdf文件
- 如何将PDF文件转换成清晰的图片
- 图片转换PDF文件
- 用IrfanView将图片文件转换为PDF文件(由图片创建PDF文件)
- 免费将pdf文件转换成word
- 如何将PDF转换成PPT文件
- 如何将PDF转换成PPT文件
- 如何将PDF文件转换成Excel
- 怎么将pdf文件转换成excel
- 如何将ppt转换成pdf文件
- 如何将Word转换成PDF文件
- 第六周项目二数据结构之自建算法库——链栈
- c#,使用WMI对象获取系统的DPI。
- 设计模式分类
- 如何查看设备序列号和设备标识?(有三种方法)
- sitemesh入门总结
- c#,将pdf文件转换成图片文件。
- 对象与继承
- 天涯明月刀 题八
- HDU 4436 str2int
- 第6周项目3-括号的匹配
- X210烧写linux系统
- hdu4750Count The Pairs 并查集
- xUtils 源码解析
- HDU 4433 locker