当前位置:编程学习 > C#/ASP.NET >>

C#简单实现office转pdf、pdf转图片

国庆放假前,公司有个项目里要用到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 P

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,