高效率办公PDF批量处理:批量合并多文件夹中相同文件名为独立PDF,咕嘎同名文件合并系统应用案例

简介: 咕嘎批量合并系统专为办公归档设计,支持跨多级文件夹扫描PDF/图片,按文件名完全相同或关键字自动分组,一键合并为单个PDF。适配合同、发票、课件、图纸等场景,效率提升10倍以上。

项目背景介绍
在日常办公、财务归档、工程图纸整理、教务资料汇总中,经常会遇到这样的场景:文件夹A、文件夹B、文件夹C 里都有 合同正文.pdf、附件1.pdf、签字页.pdf或者多个目录里都有同名图片 张三.jpg、李四.png传统做法:手动一个个打开 → 拖进合并工具 → 命名保存.缺点非常明显:同名文件多、目录深,容易漏合并、动排序错乱、重复劳动、效率极低本系统基于 WPF + iText7(或 iTextSharp),实现:跨多个文件夹扫描PDF/图片按「文件名完全相同」或「包含关键字」分组、每组同名文件自动按顺序合并为1个PDF、输出 {原名}.pdf,批量一次性完成。

咕嘎批量相同文件名的文件合并PDF系统
腾讯网盘:https://share.weiyun.com/NGEBdMaI
百度网盘: https://pan.baidu.com/s/1Qh8WcemlIehGcyg3MkZ2RA?pwd=8888

适用于:
合同正文+附件合并
发票+凭证扫描件归档
课件/作业/论文章节整合
工程图纸多版本汇总

详细步骤

  1. 环境准备
    安装 Visual Studio(WPF 桌面开发)
    .NET 6 / .NET Framework 4.8 均可
    NuGet 安装 PDF 合并库(二选一):

    iText7(推荐)

    Install-Package itext7

或老版 iTextSharp

Install-Package iTextSharp
图片合并需先把 JPG/PNG 转成 PDF 页,再并入。

  1. 设计 WPF 界面(MainWindow.xaml)

  2. 核心逻辑代码(MainWindow.xaml.cs)
    4.1 扫描并分组同名文件
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Windows;

namespace GugaSameNamePdfMerger
{
public partial class MainWindow : Window
{
private string rootDir;
private string outDir;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void BtnSelectRoot_Click(object sender, RoutedEventArgs e)
    {
        var dlg = new System.Windows.Forms.FolderBrowserDialog();
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            rootDir = dlg.SelectedPath;
            TxtRoot.Text = rootDir;
        }
    }

    private void BtnSelectOut_Click(object sender, RoutedEventArgs e)
    {
        var dlg = new System.Windows.Forms.FolderBrowserDialog();
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            outDir = dlg.SelectedPath;
            TxtOut.Text = outDir;
        }
    }

    private void BtnStart_Click(object sender, RoutedEventArgs e)
    {
        if (string.IsNullOrEmpty(rootDir) || string.IsNullOrEmpty(outDir))
        {
            MessageBox.Show("请先选择扫描目录和输出目录");
            return;
        }

        // 支持的文件
        var exts = new[] { ".pdf", ".jpg", ".jpeg", ".png" };
        var files = Directory.GetFiles(rootDir, "*.*", SearchOption.AllDirectories)
                            .Where(f => exts.Contains(Path.GetExtension(f).ToLower()))
                            .ToList();

        // 分组:Key=文件名(不含路径)
        var groups = new Dictionary<string, List<string>>();

        foreach (var f in files)
        {
            var key = ChkExact.IsChecked == true
                ? Path.GetFileName(f)
                : Path.GetFileNameWithoutExtension(f);

            if (!groups.ContainsKey(key))
                groups[key] = new List<string>();

            groups[key].Add(f);
        }

        foreach (var g in groups.Where(x => x.Value.Count > 1))
        {
            try
            {
                var outFile = Path.Combine(outDir, g.Key + ".pdf");
                PdfMergeHelper.MergeFiles(g.Value, outFile);
                TxtLog.AppendText($"合并成功:{g.Key}({g.Value.Count}个文件)\n");
            }
            catch (Exception ex)
            {
                TxtLog.AppendText($"失败:{g.Key} -> {ex.Message}\n");
            }
        }

        TxtLog.AppendText("全部处理完成。\n");
    }
}

}
4.2 PDF 合并辅助类(iText7)
using System.Collections.Generic;
using System.IO;
using iText.Kernel.Pdf;
using iText.PdfMerger;

public static class PdfMergeHelper
{
public static void MergeFiles(List inputs, string outputPdf)
{
// 图片先转PDF临时文件
var realPdfs = new List();
foreach (var f in inputs.OrderBy(x => x))
{
if (Path.GetExtension(f).ToLower() == ".pdf")
realPdfs.Add(f);
else
realPdfs.Add(ImageToPdfTemp(f));
}

    using var writer = new PdfWriter(outputPdf);
    using var merged = new PdfDocument(writer);
    var merger = new PdfMerger(merged);

    foreach (var pdf in realPdfs)
    {
        using var reader = new PdfReader(pdf);
        using var doc = new PdfDocument(reader);
        merger.Merge(doc, 1, doc.GetNumberOfPages());
    }

    merged.Close();

    // 清理临时图片PDF
    foreach (var t in realPdfs)
        if (t != outputPdf && t.EndsWith(".tmpimg.pdf"))
            File.Delete(t);
}

private static string ImageToPdfTemp(string img)
{
    var tmp = img + ".tmpimg.pdf";
    using var writer = new PdfWriter(tmp);
    using var doc = new PdfDocument(writer);
    var page = doc.AddNewPage();
    var imgData = iText.IO.Image.ImageDataFactory.Create(img);
    var image = new iText.Layout.Element.Image(imgData);
    image.SetFixedPosition(0, 0, page.GetPageSize().GetWidth());
    new iText.Layout.Document(doc).Add(image);
    return tmp;
}

}
完整代码
MainWindow.xaml:界面布局
MainWindow.xaml.cs:目录选择 + 同名分组 + 调用合并
PdfMergeHelper.cs:PDF/图片合并核心
(上面已给出可运行骨架,正式项目补 using 即可)
代码解释
分组逻辑
精确模式:按 文件名.后缀 完全一样分组
模糊模式:按 文件名不含后缀 包含关系分组
跨目录扫描
SearchOption.AllDirectories 支持多级子目录
合并顺序
默认按路径排序,避免乱序;可后续扩展为“按页码/时间/序号” 图片支持
JPG/PNG 先转临时 PDF 页,再走统一合并管道

输出命名

每组输出 {同名}.pdf,不覆盖源文件

注意事项
文件名冲突
输出目录不要和源目录混用,建议单独“合并结果”文件夹
图片方向
扫描件旋转方向可能异常,可加 EXIF 修正
大文件内存
上千个文件建议分批合并,或开子目录并发
加密PDF
加密文件需先解密再合并
排序规则
默认字符串排序,1 10 2 会乱;可加自然排序算法
权限问题
程序需对源目录有读权限、输出目录有写权限
适用场景总结
✅ 多文件夹同名 PDF 批量合一
✅ 同名图片+PDF 混合合并
✅ 合同 / 发票 / 课件 / 图纸归档
✅ 替代手工拖拽,效率提升 10 倍以上
咕嘎批量相同文件名的文件合并PDF系统,适合“文件分散、同名多、要归整”的办公自动化场景,配合定时任务可做成无人值守流水线。

相关文章
|
机器学习/深度学习 文字识别 Shell
高效率办公PDF批量处理:批量OCR识别PDF区域文字内容,用PDF内容批量改名或导出表格的货物运单应用案例
针对铁路货运物流单存档需求,本项目基于WPF与飞桨OCR技术,实现批量图片多区域文字识别与自动重命名。用户可自定义识别区域,系统提取关键信息(如车号、批次号)并生成规范文件名,提升档案管理效率与检索准确性,支持PDF及图像文件处理。
1591 48
|
编解码 文字识别 自然语言处理
如何使用OCR技术批量识别图片中的文字并重命名文件,OCR 技术批量识别图片中的文字可能出现的错误
### 简介 【批量识别图片内容重命名】工具可批量识别图片中的文字并重命名文件,方便高效处理大量图片。然而,OCR 技术面临字符识别错误(如形近字混淆、生僻字识别不佳)、格式错误(段落错乱、换行问题)和语义理解错误等挑战。为提高准确性,建议提升图片质量、选择合适的 OCR 软件及参数,并结合自动校对与人工审核,确保最终文本的正确性和完整性。
3053 12
如何使用OCR技术批量识别图片中的文字并重命名文件,OCR 技术批量识别图片中的文字可能出现的错误
|
文字识别 Serverless 开发工具
【全自动改PDF名】批量OCR识别提取PDF自定义指定区域内容保存到 Excel 以及根据PDF文件内容的标题来批量重命名
学校和教育机构常需处理成绩单、报名表等PDF文件。通过OCR技术,可自动提取学生信息并录入Excel,便于统计分析和存档管理。本文介绍使用阿里云服务实现批量OCR识别、内容提取、重命名及导出表格的完整步骤,包括开通相关服务、编写代码、部署函数计算和设置自动化触发器等。提供Python示例代码和详细操作指南,帮助用户高效处理PDF文件。 链接: - 百度网盘:[链接](https://pan.baidu.com/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866) - 腾讯网盘:[链接](https://share.weiyun.com/a77jklXK)
3232 5
|
文字识别
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
该软件是一款OCR身份证识别工具,能批量处理图片,自动提取身份证信息并导出为Excel。支持百度网盘和腾讯云盘下载。用户界面直观,操作简单,适合新手。识别过程包括:打开图片、一键识别、导出结果。特别注意,此程序仅适用于身份证识别,不适用于其他类型的图片识别。
2808 1
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
|
文字识别 测试技术 数据安全/隐私保护
案例:批量区域识别内容重命名,批量识别扫描PDF区域内容识别重命名,批量识别图片区域内容重命名图片修改图片名字,批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域内容提取重命名
该内容介绍了如何使用区域识别重命名软件高效整理图片,例如将图片按时间及内容重命名,适用于简历、单据等识别。文中提供了软件下载链接(百度云盘和腾讯网盘),并列出软件使用的几个关键条件,包括文字清晰、文件名长度限制等。示例展示了银行单据和公司工作单据的识别情况。文章还提及OCR技术在图片文字识别中的应用,强调了识别率、误识率和用户友好性等评估指标。如有类似需求,读者可留言或下载软件测试,并提供图片以获取定制的识别方案。
1503 2
|
云安全 安全 网络安全
|
7天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
2008 1
|
14天前
|
JSON 程序员 数据格式
最新版Notepad++下载、安装、配置保姆级教程(附官网安装包)
Notepad++ 是一款免费开源、轻量快速的 Windows 文本编辑器,支持多标签、语法高亮、代码折叠与宏录制,体积小、启动快、资源占用低,兼容 x64/x32/ARM 架构,是程序员和文字工作者的高效利器。
3195 0
|
13天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
2288 44

热门文章

最新文章