c#,将pdf文件转换成图片文件
本文采用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
c#,将pdf文件转换成图片文件相关推荐
- Python中将字节流文件转换成图片文件
Python中将字节流文件转换成图片文件 import urllib3 import os #PIL图像处理标准库 from PIL import Image from io import Bytes ...
- c#,将pdf文件转换成图片文件。
本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...
- C#,pdf文件转换成图片文件。
本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...
- xml文件转换成图片_怎样能把PDF文件转换成图片?
我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...
- xml文件转换成图片_如何把pdf文件转换成图片?
pdf文件怎么转成JPG图片呢?相信有不少人在迷惑,可能还在想着截图等操作来完成转换,但如果是截图成JPG图片后的效果可能很差,并没有之前pdf文件那么清楚.那这样往往打印出来的效果也不怎么理想,那怎 ...
- 一键批量PDF转换成图片文件
PDF文件转换成图片格式的文件,这需要用到PDF转换器的帮助了,现在很多PDF转换器都可以做到PDF转图片的功能,比如:okfone PDF转换大师 打开软件点击进入[PDF转文件] 在"操 ...
- 手机端怎么把PDF格式文件转换成图片
用过PDF文件的伙伴都知道,PDF文件格式可以将文字.字型.格式.颜色及独立于设备和分辨率的图形图像等封装在一个文件中,是我们工作中会经常用到的一种文件格式.如果是在手机中使用到PDF文件的话,需要将 ...
- 手机PDF文件转换成图片教程来了,PDF转换器推荐
手机PDF文件怎么转换成图片?你还在用截图的方式来将PDF文件转换成图片吗?虽然确实是一种转换的方法,但是使用过的都会发现转换出来的图片清晰度不高,那该如何高清转换呢?今天小编就给大家推荐一个比较好用 ...
- 如何把pdf文件转换成图片?
怎么把pdf文件转换成图片?在工作中我们经常跟PDF文件打交道,PDF文件的格式稳定,安全,好阅读的优点,给我们提供了极大的便利.但在提供便利的同时也会有所限制,比如在需要编辑PDF文件的时候,就会因 ...
最新文章
- 电子与通信工程专硕考分_2021西安电子科技大学电子与通信工程考研经验分享...
- 自定义编译gdal库
- 计算机应用基础参考答案,计算机应用基础与参考答案
- 安卓8.1 字体 ——现在6.0,7.0,8.0都可以体验
- Spring boot的put请求
- what kind of supervision will i do next semester?
- 关闭 VSCode 自动更新
- Qt基于TCP网络程序发包封包抽象
- 【Pytorch神经网络基础理论篇】 03 数据操作 + 数据预处理
- 动态规划之-最大子段和
- ASP.NET的錯誤類型及錯誤處理方式
- java restful开发规范_restful api 开发规范
- [译]理解Node.js事件驱动机制
- DenseNet 简介
- 编译原理第五章课后题
- 尚学堂__百战程序员__1573题------第一章 初始java
- 如何应用计算机键盘截图,怎么在电脑中使用键盘截图?
- 什么是外网IP、内网IP?
- 基因芯片与NGS区别[转载]
- ElasticSearch入门:使用ES来实现模糊查询功能