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://www.cnblogs.com/kongxianghai/archive/2012/04/09/2438321.html

源代碼敬上:http://files.cnblogs.com/kongxianghai/Pdf2ImageWithAcrobat.rar

?

網上有一篇搜集的非常全的將Pdf文件轉換成圖片的各種方法,拿出來分享:

http://topic.csdn.net/u/20120219/20/4888d128-3b77-47bc-aa21-cb02c014bc1f.html?84661?

轉載于:https://www.cnblogs.com/hyqs/articles/4453852.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259025.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259025.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259025.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android進程間通信

一.Linux系統進程間通信有哪些方式&#xff1f; 1.socket&#xff1b; 2.name pipe命名管道&#xff1b; 3.message queue消息隊列&#xff1b; 4.singal信號量&#xff1b; 5.share memory共享內存&#xff1b; 二.Java系統的通信方式是什么&#xff1f; 1.socket; 2.name pip…

最新的一些開源face alignment及評價

dlib &#xff1a;https://github.com/davisking/dlib/tree/v18.18 評價&#xff1a;速度快&#xff0c;可商用&#xff0c;有些時候不太準確 2. CLM-framework: https://github.com/TadasBaltrusaitis/CLM-framework 評價:很準確&#xff0c;不可商用 3. Face Detection…

1048 石子歸并

1048 石子歸并 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold 題目描述 Description有n堆石子排成一列&#xff0c;每堆石子有一個重量w[i], 每次合并可以合并相鄰的兩堆石子&#xff0c;一次合并的代價為兩堆石子的重量和w[i]w[i1]。問安排怎樣的合并順序&#xf…

internetreadfile讀取數據長度為0_【完結】TensorFlow2.0 快速上手手冊

大家好&#xff0c;這是專欄《TensorFlow2.0》的第五篇文章&#xff0c;我們對專欄《TensorFlow2.0》進行一個總結。我們知道全新的TensorFlow2.0 Alpha已經于2019年3月被發布&#xff0c;新版本對TensorFLow的使用方式進行了重大改進&#xff0c;為了滿足各位AI人對TensorFlow…

Facial Landmark Detection(人臉特征點檢測)

原文地址&#xff1a;http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作為計算機視覺研究員&#xff0c;我們很早就開始研究人臉。人臉分析領域最廣為人知的就是人臉識別&#xff08;face recognition&#xff09;.但是為了識別一幅圖像中的人臉&…

cpu卡操作協議iso14443協議

http://baike.baidu.com/link?url3mef2ZMRoNuBrVLA2HpEh8xrBtzACdIi5nIDUsMyVkA8OulIXGWgswvFcTiBfh_B轉載于:https://www.cnblogs.com/shuenjian901/p/3496331.html

Python 字符串的內置函數

方法描述string.capitalize()把字符串的第一個字符大寫string.center(width)返回一個原字符串居中,并使用空格填充至長度 width 的新字符串string.count(str, beg0, endlen(string))返回 str 在 string 里面出現的次數&#xff0c;如果 beg 或者 end 指定則返回指定范圍內 str …

Java中的Error和Exceptiond的異同點

Error和Exception的異同點&#xff1a; &#xff08;1&#xff09;Error類和Exception類都繼承超類Java.lang.Throwable &#xff08;2&#xff09;Error&#xff1a;一般指與虛擬機相關的問題&#xff0c;如系統崩潰&#xff0c;內存溢出等。對于這類錯誤&#xff0c;僅靠程序…

python算法題_python基本算法題(一)

1、3位水仙花數計算 "3位水仙花數”是指一個三位整數&#xff0c;其各位數字的3次方和等于該數本身。 例如&#xff1a; ABC是一個“3位水仙花數”&#xff0c;則&#xff1a;A的3次方&#xff0b;B的3次方&#xff0b;C的3次方 ABC。 使用Python&#xff0c;輸出所有的3…

虛擬機環境下安裝ESX不能安裝虛擬系統解決方案

在虛擬機環境&#xff08;ESX、workstation等&#xff09;下安裝ESX或workstation等虛擬機&#xff0c;在虛擬機上再安裝操作系統&#xff0c;會提示“虛擬系統不能啟動&#xff0c;直到你配置了外部虛擬機&#xff08;vmware esx in a virtual machine requires the outer vir…

superviseddescent (SDM C++11實現)環境配置

今天試著用了一下SDM的C11實現&#xff0c;本來以為挺簡單的&#xff0c;可是配置環境還是花了一些時間。為了給自己留下一些記憶&#xff0c;特把配置過程記錄下來。 這個實現是C11的版本&#xff0c;是一個通用版本&#xff0c;里面包含了很多的功能&#xff0c;比如函數的最…

1008: University

臺州ACM&#xff1a;1008: University Description 在大學里&#xff0c;非常多單詞都是一詞多義。偶爾在文章里還要用引申義。這困擾Redraiment非常長的時間。 他開始搜集那些單詞的全部意義。他發現了一些規律&#xff0c;比如 “a”能用“e”來取代, “c”能用“f”來取代……

Android 5.1 API 22 所有sdk文件下載地址

開源中國的 IT 公司開源軟件整理計劃介紹 https://dl-ssl.google.com/android/repository/docs-22_r01.ziphttp://dl.google.com/android/repository/android-22_r01.ziphttps://dl-ssl.google.com/android/repository/samples-22_r05.ziphttps://dl-ssl.google.com/android/re…

python圖形小游戲代碼_手把手制作Python小游戲:俄羅斯方塊(一)

手把手制作Python小游戲&#xff1a;俄羅斯方塊1大家好&#xff0c;新手第一次寫文章&#xff0c;請多多指教 A.準備工作&#xff1a; 這里我們運用的是Pygame庫&#xff0c;因為Python沒有內置&#xff0c;所以需要下載 如果沒有pygame&#xff0c;可以到官網下載 pygame官網&…

關于Git使用的一些心得

2019獨角獸企業重金招聘Python工程師標準>>> 本篇稍微記錄下Git使用的一些心得。 對Git的使用&#xff0c;應該是從搭建自己的博客開始的。當時看到開源中國推薦的一篇基于碼云hexo搭建自己博客的文章。所以就花了一天時間鼓搗了下博客。 順帶整理下目前能看到我寫的…

Dlib機器學習庫安裝

昨天使用了一下dlib的人臉檢測功能&#xff0c;效果出奇的好。下面給出dlib整個的安裝過程和使用指導。 下載安裝 我們可以從dlib的官網下載最新的版本&#xff0c;我的是dlib18.18.然后我們需要使用cmake編譯dlib庫和examples示例。 當然前提是你要按照好cmake和opencv。 …

struts2上傳

今天在使用struts2上傳的過程中無意發現,struts2上傳一個文件大小為0字節的文本竟然會報錯FileNotFoundException,嘗試了好久也沒找到答案,最后只能判斷文件的大小后上傳,至于文件字節為0的怎么處理就看各位了 struts2上傳java源碼 1 package com.jzgx.web.action;2 3 import j…

BitSet之為什么用long保存信息

BitSet內部使用long[] words來保存位信息。咋看之下并不理解原因&#xff0c;在解讀set(int bitIndex)之后似乎有了一些領悟。 public void set(int bitIndex) { if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " bitIndex); //用來計…

ipv4地址是幾位二進制數_幾張思維導圖,讓你清楚的知道ip地址怎么回事?

網絡工程中&#xff0c;ip地址是必須要了解的內容&#xff0c;今天我們用幾張思維導圖來給大家詳細講解IP地址。一、什么是IP地址在生活中我們使用具有上網功能的電子設備都有IP地址&#xff0c;就跟每個人都有自己的名字一樣。IP地址分為IPV4 IPV6&#xff0c;我們所說的的IP地…

《關系營銷2.0——社交網絡時代的營銷之道》一檢查拼寫和語法

本節書摘來異步社區《關系營銷2.0——社交網絡時代的營銷之道》一書中的第2章&#xff0c;作者&#xff1a; 【美】Mari Smith 譯者&#xff1a; 張猛 , 于宏 , 趙俐 責編&#xff1a; 陳冀康, 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 檢查拼寫和語法 關系營銷2…