1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C# pdf文件转换成图片文件。

C# pdf文件转换成图片文件。

时间:2022-11-22 11:56:06

相关推荐

C# pdf文件转换成图片文件。

本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件。

开发环境:VS,.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(bine(imageDirectoryPath, i.ToString("0000") + "." + format.ToString()), format);pdfBitmap.Dispose();}}//关闭和释放相关COM对象 pdfDoc.Close();Marshal.ReleaseComObject(pdfRect);Marshal.ReleaseComObject(pdfPoint);Marshal.ReleaseComObject(pdfPage);Marshal.ReleaseComObject(pdfDoc);}

转自:/kongxianghai/archive//04/09/2438321.html

源代码敬上:/kongxianghai/Pdf2ImageWithAcrobat.rar

网上有一篇搜集的非常全的将Pdf文件转换成图片的各种方法,拿出来分享:

/u/0219/20/4888d128-3b77-47bc-aa21-cb02c014bc1f.html?84661

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。