C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)3 -获取PPT和PDF的页数
1.前言
本文是接:
《C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)1 -环境准备及创建项目》
《C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)2 -获取Word的页数》
的第三篇。
由于整个系列介绍得很详细,篇幅较长,所以分成多篇博文进行叙述。个人建议从第一篇博文开始阅读。
2.获取PPT页数的代码
获取PPT页数的业务代码同Word一样,我也单独封装成一个Service,其提供如下三种方法:
- 打开PPT,读取页数;
- 关闭PPT,退出PPT程序;
- 杀掉PPT的死进程;
在项目的Service文件夹下,添加PPTReader.cs的类,如下图:
代码如下:
using System;
namespace DocReaderWebAPIDemo.Service
{
public class PPTReader
{
public static int getPPTPageNum(String path)
{
int pageNum = 0;
Microsoft.Office.Interop.PowerPoint.Application myPPTApplication = null;
Microsoft.Office.Interop.PowerPoint.Presentation myPPTPresentation = null;
try
{
//启动PPT程序
myPPTApplication = new Microsoft.Office.Interop.PowerPoint.Application();
//打开文件
myPPTPresentation = myPPTApplication.Presentations.Open(
path, Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
//文件页数
pageNum = myPPTPresentation.Slides.Count;
}
catch (Exception e)
{
throw e;
}
finally
{
//关闭文件,退出PPT程序
ClosePPT(myPPTApplication, myPPTPresentation);
}
return pageNum;
}
/// <summary>
/// 关闭PPT的方法
/// </summary>
public static void ClosePPT(Microsoft.Office.Interop.PowerPoint.Application pptApplication, Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation)
{
if (pptPresentation != null)
{
pptPresentation.Close();
}
if (pptApplication != null)
{
pptApplication.Quit();
}
GC.Collect();
KillProcess();
}
/// 杀掉PPT死进程
/// </summary>
private static void KillProcess()
{
//PowerPoint.Application跟Excel不一样,获取不到Hwnd,所以直接通过进程名称杀掉所有死进程
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("POWERPNT"); //得到所有Word进程
foreach (System.Diagnostics.Process p in ps)
{
p.Kill(); //关闭进程
}
}
}
}
3.获取PDF页数的代码
获取PDF页数的代码较为简单,同样是在项目的Service文件夹下,添加PDFReader.cs的类,如下图:
代码如下:
using System;
using iTextSharp.text.pdf;
namespace DocReaderWebAPIDemo.Service
{
public class PDFReader
{
public static int getPdfPageNum(String path)
{
int pageNum = 0;
PdfReader reader = new PdfReader(path);
pageNum = reader.NumberOfPages;
reader.Close();
return pageNum;
}
}
}
4.后记
下一篇:
《C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)4 -获取Excel的页数》