C#代码实现获取PDF文件的页数

 更新时间:2026年03月20日 08:27:37   作者:2501_93070778  
计算 PDF 文件的页数在许多场景中都十分重要,本文将介绍如何使用 C#,借助 Spire.PDF for .NET 获取 PDF 文件的页数,有需要的小伙伴可以了解下

计算 PDF 文件的页数在许多场景中都十分重要,例如确定文档长度、整理内容结构以及评估打印需求。除了通过 PDF 阅读器查看页数信息外,你还可以通过编程方式自动完成这一任务。本文将介绍如何使用 C#,借助 Spire.PDF for .NET 获取 PDF 文件的页数。

安装 Spire.PDF for .NET

首先,你需要在 .NET 项目中添加 Spire.PDF for .NET 软件包中包含的 DLL 文件作为引用。这些 DLL 文件可以通过指定链接下载,或者通过 NuGet 进行安装。

PM> Install-Package Spire.PDF

在 C# 中获取 PDF 文件的页数

Spire.PDF for .NET 提供了 PdfDocument.Pages.Count 属性,无需打开 PDF 文件即可快速统计其页数。具体步骤如下:

  • 创建一个 PdfDocument 对象。
  • 使用 PdfDocument.LoadFromFile() 方法加载示例 PDF 文件。
  • 通过 PdfDocument.Pages.Count 属性统计 PDF 文件的页数。
  • 输出结果并关闭 PDF 文档。

示例代码如下:

using Spire.Pdf;

namespace GetNumberOfPages
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 对象
            PdfDocument pdf = new PdfDocument();

            // 加载示例 PDF 文件
            pdf.LoadFromFile("Contract.pdf");

            // 获取 PDF 文件的页数
            int PageNumber = pdf.Pages.Count;
            Console.WriteLine("该 PDF 文件共有 {0} 页", PageNumber);

            // 关闭 PDF 文档
            pdf.Close();
        }
    }
}

知识扩展

C#判断pdf文档的页数

        /// <summary>
        /// 获取pdf文档的页数
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns>-1表示文件不存在</returns>
        public static int GetPDFofPageCount(string filePath)
        {
            int count = -1;//-1表示文件不存在
            if (File.Exists(filePath))
            {
                using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    StreamReader reader = new StreamReader(fs);
                    //从流的当前位置到末尾读取流
                    string pdfText = reader.ReadToEnd();
                    Regex rgx = new Regex(@"/Type\s*/Page[^s]");
                    MatchCollection matches = rgx.Matches(pdfText);
                    count = matches.Count;
                }
            }
            return count;
        }

C#获取pdf文档的页数

  /// <summary>
        /// 获取pdf文档的页数
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns>-1表示文件不存在</returns>
        public static int GetPDFofPageCount(string filePath)
        {
            int count = -1;//-1表示文件不存在
            if (File.Exists(filePath))
            {
                using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    StreamReader reader = new StreamReader(fs);
                    //从流的当前位置到末尾读取流
                    string pdfText = reader.ReadToEnd();
                    Regex rgx = new Regex(@"/Type\s*/Page[^s]");
                    MatchCollection matches = rgx.Matches(pdfText);
                    count = matches.Count;
                }
            }
            return count;
        }

使用iTextSharp获取PDF文件的总页数

public class pdfPage : PdfPageEventHelper
{              
    public override void OnEndPage(PdfWriter writer, Document doc)
    {
        iTextSharp.text.Rectangle page = doc.PageSize;
        //PdfPTable EndTable = new PdfPTable(2);
        PdfPTable EndTable = new PdfPTable(2);
        EndTable.DefaultCell.Padding = 2f;
        EndTable.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
        iTextSharp.text.Font smallfont2 = FontFactory.GetFont(FontFactory.HELVETICA, "CP1250", 10);
        PdfPCell stopka1 = new PdfPCell(new Phrase("Left column - not important", smallfont2));
        stopka1.BorderWidthLeft = 0;
        stopka1.BorderWidthBottom = 0;
        stopka1.BorderWidthRight = 0;
        stopka1.HorizontalAlignment = Element.ALIGN_LEFT;
        stopka1.VerticalAlignment = Element.ALIGN_MIDDLE;
        PdfPCell stopka2 = new PdfPCell(new Phrase("Page " + doc.PageNumber + "/", smallfont2));
        stopka2.BorderWidthLeft = 0;
        stopka2.BorderWidthBottom = 0;
        stopka2.BorderWidthRight = 0;
        stopka2.HorizontalAlignment = Element.ALIGN_RIGHT;
        stopka2.VerticalAlignment = Element.ALIGN_MIDDLE;
        EndTable.AddCell(stopka1);
        EndTable.AddCell(stopka2);
        EndTable.TotalWidth = page.Width - doc.LeftMargin - doc.RightMargin;
        EndTable.WriteSelectedRows(0, -1, doc.LeftMargin, EndTable.TotalHeight + doc.BottomMargin - 45, writer.DirectContent);
    }
   } 

到此这篇关于C#代码实现获取PDF文件的页数的文章就介绍到这了,更多相关C#获取PDF页数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#构造函数详解

    C#构造函数详解

    本文详细讲解了C#中的构造函数,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C# 抓取网页内容的方法

    C# 抓取网页内容的方法

    C# 抓取网页内容的方法,需要的朋友可以参考一下
    2013-04-04
  • C#中如何利用正则表达式判断字符

    C#中如何利用正则表达式判断字符

    这篇文章主要介绍了C#中利用正则表达式判断字符的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • WPF利用CommunityToolkit.Mvvm实现级联选择器

    WPF利用CommunityToolkit.Mvvm实现级联选择器

    这篇文章主要介绍了WPF如何利用CommunityToolkit.Mvvm实现级联选择器,文中的示例代码讲解详细,对我们的学习或工作有一定帮助,需要的小伙伴可以参考一下
    2023-12-12
  • 详解C#中有趣的 SourceGenerator生成器

    详解C#中有趣的 SourceGenerator生成器

    源生成器是Roslyn编译器的一个强大特性,允许开发者在编译阶段注入自定义代码,本文通过一个实例探究源生成器的使用方法及其在AOT场景的应用,并利用WinDbg工具深入分析Roslyn的内部机制
    2024-10-10
  • 使用C#代码在PDF文档中添加、删除和替换图片

    使用C#代码在PDF文档中添加、删除和替换图片

    在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文 将介绍如何在.NET平台使用C#代码在PDF文档中添加、删除和替换图片,需要的朋友可以参考下
    2025-04-04
  • c#创建vc可调用的com组件方法分享

    c#创建vc可调用的com组件方法分享

    本文详细阐述如何用C#创建一个COM组件,并能用VC6.0等调用,大家参考使用
    2013-12-12
  • c#数字图像处理的3种方法示例分享

    c#数字图像处理的3种方法示例分享

    这篇文章主要介绍了c#数字图像处理的3种方法示例,需要的朋友可以参考下
    2014-02-02
  • C#中使用闭包与意想不到的坑详解

    C#中使用闭包与意想不到的坑详解

    这篇文章主要给大家介绍了关于C#中使用闭包与意想不到的坑,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • WinForm中快捷键与组合按键的设置方法

    WinForm中快捷键与组合按键的设置方法

    WinForm中快捷键与组合按键的设置,第一种方法。。代码复杂,操作简单的快捷键,另外一种简单快捷键的方法,大家可以参考下
    2013-02-02

最新评论