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

來源:互聯網
上載者:User

僅為了收藏,備用。原地址是:http://www.cnblogs.com/bach-gould 

 

國慶放假前,公司有個項目裡要用到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存放路徑不要帶有中文

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.