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的頁數》