國慶放假前,公司有個項目裡要用到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繼艾斯