如何用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
相关产品推荐
相关产品推荐

