获取指定路径下所有PDF文件的总页数

时间:2024-03-07 20:37:02

在开发过程中遇见了这样一个问题,某个文件夹下包含了很多PDF文件,现在要统计这些文件的总页数,当然可以逐个打开,然后将页数累加起来,但是相对来说很麻烦,于是写了一个winform的程序,来实现页数的统计!

客户端界面:

选择按钮后台代码:

         /// <summary>
         /// 浏览目录
      /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPath_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog myDialog = new FolderBrowserDialog();
            myDialog.ShowNewFolderButton = false;
            myDialog.Description = "选择目录";
            if (myDialog.ShowDialog()==DialogResult.OK)
            {
                txtPath.Text = myDialog.SelectedPath;
            }
        }

获取页数按钮后台代码:

        /// <summary>
        /// 统计路径下所有PDF文件的页数
      /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            int pdfCounts = 0;
            if (String.IsNullOrEmpty(txtPath.Text))
            {
                MessageBox.Show("选择文件路径");
            }
            else
            {
                string[] pdfFiles = System.IO.Directory.GetFiles(txtPath.Text);
                foreach (string pdfFile in pdfFiles)
                {
                    pdfCounts = pdfCounts + GetPageCount(pdfFile);
                }
                txtCount.Text = pdfCounts.ToString();          
            }
        }
        /// <summary>
        /// 获取单个PDF文件的页数
      /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        private int GetPageCount(string filePath)
        {
            PDDocument document = null;
            PDDocumentInformation info = null;
            int pages = 0;
            try
            {
                document = PDDocument.load(filePath);
                info = document.getDocumentInformation();
                // 输出总页数
                pages = document.getNumberOfPages();

            }
            catch (Exception e)
            {
                string errorMessage = e.Message;
                return 0;
            }
            finally
            {
                if (null != document)
                    document.close();

            }
            return pages;
        
        }

这里需要注意:方法GetPageCount适用的前提是,需要引入IKVM.GNU.Classpath.dll和PDFBox-0.7.3.dll 这两个文件都可以在网上查找到!