You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用iTextSharp获取PDF总页数并在列表控件展示后汇总到TextBox

解决方案:批量获取PDF页数并汇总展示

一、核心问题分析

你当前的代码每次循环都会覆盖pdfPages.Text的值,最终只显示最后一个PDF的页数;且仅将文件路径添加到ListBox,未关联对应的页数信息,无法满足批量展示和汇总需求。

二、实现代码示例

1. 使用ListBox展示带页数的PDF信息

直接拼接文件路径与页数添加到列表,同时累加总页数:

int totalPages = 0;
listBox1.Items.Clear(); // 清空原有列表内容

// 处理PDF文件
foreach (string file in files)
{
    string fullPath = Path.GetFullPath(file);
    // 使用using自动释放PdfReader资源,避免内存泄漏
    using (PdfReader pdfReader = new PdfReader(file))
    {
        int pageCount = pdfReader.NumberOfPages;
        // 将路径和页数关联后添加到ListBox
        listBox1.Items.Add($"{fullPath} - 页数:{pageCount}");
        totalPages += pageCount; // 累加总页数
    }
}

// 处理目录项(保留原逻辑)
foreach (string dir in dirs)
{
    listBox1.Items.Add($"[目录] {dir}");
}

// 显示所有PDF的总页数
pdfPages.Text = totalPages.ToString();

2. 使用DataGridView展示更规范的结构化信息

先配置DataGridView列,再逐行添加文件路径和页数:

// 初始化DataGridView列(若未在设计器提前配置)
dataGridView1.Columns.Clear();
dataGridView1.Columns.Add("FilePath", "文件路径");
dataGridView1.Columns.Add("PageCount", "页数");
// 让页数列右对齐,更美观
dataGridView1.Columns["PageCount"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

int totalPages = 0;
dataGridView1.Rows.Clear();

// 处理PDF文件
foreach (string file in files)
{
    string fullPath = Path.GetFullPath(file);
    using (PdfReader pdfReader = new PdfReader(file))
    {
        int pageCount = pdfReader.NumberOfPages;
        dataGridView1.Rows.Add(fullPath, pageCount);
        totalPages += pageCount;
    }
}

// 处理目录项(可选)
foreach (string dir in dirs)
{
    dataGridView1.Rows.Add($"[目录] {dir}", "-");
}

// 显示总页数
pdfPages.Text = $"总页数:{totalPages}";

三、关键注意事项

  • 必须用using包裹PdfReader,确保资源自动释放,避免内存泄漏
  • 循环过程中持续累加总页数,而非每次覆盖文本框内容
  • 若需区分文件与目录,可在列表项中添加[目录]标识,方便识别

内容的提问来源于stack exchange,提问作者john smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:57:22