本文采用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文件转换成图片文件相关推荐

  1. Python中将字节流文件转换成图片文件

    Python中将字节流文件转换成图片文件 import urllib3 import os #PIL图像处理标准库 from PIL import Image from io import Bytes ...

  2. c#,将pdf文件转换成图片文件。

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

  3. C#,pdf文件转换成图片文件。

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

  4. xml文件转换成图片_怎样能把PDF文件转换成图片?

    我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...

  5. xml文件转换成图片_如何把pdf文件转换成图片?

    pdf文件怎么转成JPG图片呢?相信有不少人在迷惑,可能还在想着截图等操作来完成转换,但如果是截图成JPG图片后的效果可能很差,并没有之前pdf文件那么清楚.那这样往往打印出来的效果也不怎么理想,那怎 ...

  6. 一键批量PDF转换成图片文件

    PDF文件转换成图片格式的文件,这需要用到PDF转换器的帮助了,现在很多PDF转换器都可以做到PDF转图片的功能,比如:okfone PDF转换大师 打开软件点击进入[PDF转文件] 在"操 ...

  7. 手机端怎么把PDF格式文件转换成图片

    用过PDF文件的伙伴都知道,PDF文件格式可以将文字.字型.格式.颜色及独立于设备和分辨率的图形图像等封装在一个文件中,是我们工作中会经常用到的一种文件格式.如果是在手机中使用到PDF文件的话,需要将 ...

  8. 手机PDF文件转换成图片教程来了,PDF转换器推荐

    手机PDF文件怎么转换成图片?你还在用截图的方式来将PDF文件转换成图片吗?虽然确实是一种转换的方法,但是使用过的都会发现转换出来的图片清晰度不高,那该如何高清转换呢?今天小编就给大家推荐一个比较好用 ...

  9. 如何把pdf文件转换成图片?

    怎么把pdf文件转换成图片?在工作中我们经常跟PDF文件打交道,PDF文件的格式稳定,安全,好阅读的优点,给我们提供了极大的便利.但在提供便利的同时也会有所限制,比如在需要编辑PDF文件的时候,就会因 ...

最新文章

  1. 电子与通信工程专硕考分_2021西安电子科技大学电子与通信工程考研经验分享...
  2. 自定义编译gdal库
  3. 计算机应用基础参考答案,计算机应用基础与参考答案
  4. 安卓8.1 字体 ——现在6.0,7.0,8.0都可以体验
  5. Spring boot的put请求
  6. what kind of supervision will i do next semester?
  7. 关闭 VSCode 自动更新
  8. Qt基于TCP网络程序发包封包抽象
  9. 【Pytorch神经网络基础理论篇】 03 数据操作 + 数据预处理
  10. 动态规划之-最大子段和
  11. ASP.NET的錯誤類型及錯誤處理方式
  12. java restful开发规范_restful api 开发规范
  13. [译]理解Node.js事件驱动机制
  14. DenseNet 简介
  15. 编译原理第五章课后题
  16. 尚学堂__百战程序员__1573题------第一章 初始java
  17. 如何应用计算机键盘截图,怎么在电脑中使用键盘截图?
  18. 什么是外网IP、内网IP?
  19. 基因芯片与NGS区别[转载]
  20. ElasticSearch入门:使用ES来实现模糊查询功能

热门文章

  1. MacDown语法总结
  2. makefile进入子文件夹执行make
  3. 《深度学习原理与TensorFlow实践》喻俨,莫瑜
  4. swoole创建多人多房间聊天室三
  5. matlab函数输出语句,matlab两种输出语句分别是什么
  6. 奔驰更新道路救援APP,融入了AR技术
  7. SAP CRM的市场营销(Marketing)管理简介(VI)
  8. 跟我学python之mysql操作详解 一、查询操作
  9. python range函数返回的是什么,python关于range函数总结
  10. 我去看Linkin Park演唱会