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.前言
  • 2.获取PPT页数的代码
  • 3.获取PDF页数的代码
  • 4.后记

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的类,如下图:
C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)3 -获取PPT和PDF的页数_第1张图片
代码如下:

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;
        }

        /// 
        /// 关闭PPT的方法
        /// 
        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死进程
        /// 
        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的类,如下图:
C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)3 -获取PPT和PDF的页数_第2张图片
代码如下:

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的页数》

你可能感兴趣的:(C#,.NET)