程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#簡單實現office轉pdf、pdf轉圖片

C#簡單實現office轉pdf、pdf轉圖片

編輯:C#入門知識

國慶放假前,公司有個項目裡要用到office、pdf以及圖片的互轉,自己以前沒有接觸過,所以整理了網上林林總總的辦法,也算是總結出了最簡單有效的辦法:office -> pdf 應用Adobe Acrobat 8 Pro的一個PDFMakerAPI.dll程序集;pdf -> png(jpg,gif...)應用Ghostscript。下面詳述說明:

一、准備工作:

1.安裝Adobe Acrobat 8 Pro,本人安裝的是8.1.2版本,在你的安裝目錄下(例如我自己的:C:\Program Files\Adobe\Acrobat 8.0\PDFMaker\Common\)common目錄中找到PDFMakerAPI.dll程序集,拷貝出到項目中放DLL的文件夾(此文件夾為用戶保存DLL文件的文件夾,名稱以自己項目為准),並在項目裡對其添加引用。

2.安裝Ghostscript,本人安裝的是8.63版本,需要用的的其他DLL:FontBox-0.1.0-dev.dll,IKVM.GNU.Classpath.dll,IKVM.Runtime.dll,PDFBox-0.7.3.dll,其中IKVM.GNU.Classpath.dll,PDFBox-0.7.3.dll要在項目裡對其添加引用,其他兩個(4個dll均放到)放到DLL文件夾裡即可。

3.為Ghostscript配置Web.config:

<appSettings>
    <add key="GhostScriptView" value="C:/Program Files/gs/gs8.63/bin"/>
    <add key="GhostScriptArguments" value="-dSAFER -dBATCH -dNOPAUSE -r150 -sDEVICE=jpeg -dGraphicsAlphaBits=4"/>
</appSettings>

找到自己對應的Ghostscript安裝目錄,自行修改。

二、應用:

1.office -> pdf

引用命名空間:using PDFMAKERAPILib;關鍵代碼如下:

1 /// 

2 ///參數:docfile,源office文件絕對路徑及文件名(C:\office\myDoc.doc);printpath,pdf文件保存路徑(D:\myPdf);printFileName,保 

3 ///存pdf文件的文件名(myNewPdf.pdf) 

4 /// 

5   

6  objectmissing = System.Type.Missing; 

7  PDFMakerAppapp = new PDFMakerApp(); 

8  app.CreatePDF(docfile, printpath + printFileName, PDFMakerSettings.kConvertAllPages, false, true, true, missing);

2.pdf-> 圖片

引用命名空間:using org.pdfbox.pdmodel;關鍵代碼如下:

01 /// 

02 /// <param name="pdfFile">PDF文檔物理路徑</param> 

03 /// <param name="imgPath">轉換成的圖片文件的存放物理路徑</param> 

04 /// 

05        public static void PdfToImages(string pdfFile, string imgPath) 

06         { 

07             PDDocument doc = PDDocument.load(pdfFile); 

08             int pageCount = doc.getDocumentCatalog().getAllPages().size();//計算pdf文檔的總頁數 

09   

10             string pdfFileName = Path.GetFileName(pdfFile); 

11             int index = pdfFileName.LastIndexOf('.'); 

12             if (index != -1) 

13                 pdfFileName = pdfFileName.Substring(0, index); 

14   

15             string imgFile = Path.Combine(imgPath, pdfFileName);//轉換成的圖片文件 

16   

17             if (pageCount == 0) return; 

18             if (pageCount == 1) 

19             { 

20                 imgFile += ".png"; 

21                 if (File.Exists(imgFile)) 

22                 { 

23                     File.Delete(imgFile); 

24                 } 

25             } 

26             else

27             { 

28                 for (int i = 0; i < pageCount; i++) 

29                 { 

30                     string _imgFile = imgFile + (i + 1).ToString() + ".png"; 

31                     if (File.Exists(_imgFile)) 

32                     { 

33                         File.Delete(_imgFile); 

34                     } 

35                 } 

36                 imgFile += "%d.png"; 

37             } 

38   

39             ProcessStartInfo info = new ProcessStartInfo(); 

40             info.CreateNoWindow = true; 

41             info.WindowStyle = ProcessWindowStyle.Hidden; 

42             info.WorkingDirectory = System.Configuration.ConfigurationManager.AppSettings["GhostScriptView"]; 

43             info.Arguments = System.Configuration.ConfigurationManager.AppSettings["GhostScriptArguments"] + @" -sOutputFile=" + imgFile + "  " + pdfFile; 

44             info.FileName = @"gswin32c.exe"; 

45             Process subProcess = new Process(); 

46             subProcess.StartInfo = info; 

47             subProcess.Start(); 

48             subProcess.WaitForExit(int.MaxValue); 

49         }

完成上述幾步即可簡便完美的完成office到彩色圖片的轉換,大家不妨也試試。

3.總結和說明:

Acrobat 8 Pro需要激活和注冊;

Acrobat 8 Pro生成pdf的時候會有自己的虛擬打印機彈出框,當office文件為ppt或者xls的時候會打開文件然後再關閉,doc則不會;

office轉換的pdf存放路徑不要帶有中文;

最後:如有程序安裝包和DLL需求消息我就可以了,祝大家工作愉快

 

摘自:小寶LOVE繼艾斯

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved