C#編寫ASP.NET Core的Web API並部署到IIS上的詳細教程(API用於準確獲取Word/Excel/PPT/PDF的頁數)3 -獲取PPT和PDF的頁數

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章