PDF发票合并工具
本帖最后由 YzHCAt 于 2026-3-12 18:50 编辑https://gitee.com/yzhcat/mi2a4-gui/releases/
## 功能特点
- **PDF发票管理**:支持添加、删除PDF文件列表
- **发票金额识别**:自动识别PDF发票中的金额信息
- **批量合并**:将多个PDF发票合并到一个文件中
- **多种布局选项**:支持多种发票排列布局,每页可容纳不同数量的发票
- **拖拽支持**:支持直接拖拽PDF文件到程序界面
- **金额统计**:实时显示总金额和选中金额
- **文件信息展示**:显示文件名、金额、修改日期、大小和路径
- **交互式操作**:支持双击编辑金额、复制路径、打开文件所在目录等操作
- **打印功能**:支持合并后直接打开PDF文件,需要使用pdf阅读器打印
## 技术架构
- **前端界面**:使用aardio开发Windows GUI界面
- **后端处理**:使用Python处理PDF文件
- **PDF处理**:基于PyMuPDF(fitz)库进行PDF操作
## 使用说明
### 基本操作
1. **添加PDF文件**:
- 点击"添加文件"按钮选择PDF文件
- 直接拖拽PDF文件到列表区域
2. **管理文件列表**:
- 单击选择文件
- Ctrl+A全选所有文件
- Delete键删除选中文件
- 点击"Del"按钮删除选中文件
- 点击"DelA"按钮清空所有文件
3. **修改金额**:
- 双击列表中的金额项进行修改
4. **合并PDF**:
- 点击"合并"按钮合并所有文件
- 点击"合并选中"按钮仅合并选中的文件
- 设置输出路径(默认为out.pdf)
- 勾选"并打印"可在合并后直接打开文件
### 界面说明
- **文件列表**:显示已添加的PDF文件及其信息,支持拖拽添加文件
- **统计信息**:实时显示文件数量、选中数量、总金额和选中金额
- **布局选择**:提供多种发票排列布局选项(横向2x2、纵向2x2等)
- **操作按钮**:提供文件管理和合并功能
- **路径设置**:设置合并后的PDF保存路径
- **打印选项**:提供"并打印"复选框和"打印"按钮,方便合并后直接打开文件
- **进度条**:显示合并操作的进度
- **日志窗口**:显示程序运行日志信息
## 核心功能实现
### PDF金额识别
程序通过以下步骤识别PDF发票中的金额:
1. 提取PDF文本与坐标信息
2. 定位金额关键词("价税合计"、"合计"、"金额"、"¥"、"¥"、"小写")
3. 使用正则表达式匹配关键词附近的金额数字
4. 返回识别到的最大金额
### PDF合并算法
1. 根据选择的布局创建相应尺寸的页面(默认横向A4页面,842×595点)
2. 按照布局要求将页面划分为多个区域,绘制分割线
3. 按顺序将PDF发票缩放后放置在对应区域
4. 自动计算缩放比例,保持原始比例
5. 设置居中、偏左、偏右放置每个发票页面
## 注意事项
- 仅支持PDF格式的发票文件
- 合并后的PDF每页包含的发票数量取决于选择的布局
- 金额识别功能依赖于PDF中的文本内容,扫描件可能无法识别
- 程序会自动跳过重复添加的文件
- 双击金额列可直接修改金额值
- 双击文件名可打开文件所在目录
- 双击路径可复制文件路径到剪贴板
## 支持命令行参数
可查看MI2A4命令行参数帮助
(https://gitee.com/yzhcat/mi2-a4)
使用方法: .\mi2a4.exe [路径1] [路径2] ... [输出文件名.pdf]
或者: .\mi2a4.exe [目录列表.txt]
默认输出文件名: out.pdf
-h: 查看帮助
--print: 合并后直接打开文件
*.txt 格式:
每个目录占一行
第一行或最后一行如果是*.pdf,会作为输出文件名
示例:
./差旅补助
./出行住宿
out1.pdf
## 快捷键
- **Ctrl+A**:全选所有文件
- **Delete**:删除选中的文件
## 技术细节
### 文件操作
- 支持拖拽添加多个PDF文件
- 自动过滤非PDF文件
- 自动检测并跳过重复文件
- 支持通过对话框选择文件
### 数据展示
- 文件列表显示:文件名、金额、修改日期、大小和路径
- 实时统计:文件数量、选中数量、总金额和选中金额
- 进度条显示合并操作进度
### 交互功能
- 双击金额列可修改金额
- 双击文件名打开文件所在目录
- 双击路径复制到剪贴板
- 支持单选、多选和全选操作
- 支持合并后直接打开或打印PDF文件
https://gitee.com/yzhcat/mi2a4-gui/releases/ 本帖最后由 YzHCAt 于 2026-3-16 13:35 编辑
lrt721122 发表于 2026-3-15 13:34
试用导入104张发票,出现以下情况,向楼主反馈一下:①文件修改时间引用全部是错误的,2026年1月27日的日期 ...
第一个问题是日期format和时区的问题,晚点会修复一下;PDF发票中的金额识别步骤
提取PDF文本与坐标信息
定位金额关键词("价税合计"、"合计"、"金额"、"¥"、"小写")
使用正则表达式匹配关键词附近的金额数字
返回识别到的最大金额
如果小数点位置格式有问题可能会截断。
所以出问题的金额可以双击金额修改。 试用导入104张发票,出现以下情况,向楼主反馈一下:①文件修改时间引用全部是错误的,2026年1月27日的日期,到软件内显示全部是2026年23月27日;②1~42张发票金额全部正确,精确到0.01元,从第43份开始全部是向下取整精确到1元了,如5.98显示与计算时直接是5,4.11变成4等 现在电子发票多了,非常实用 感谢,这个确实很需要! 这个很好,下来用用,谢谢!! 很实用的软件,下载试一试。 赞。能实现这个功能可真的太方便了 谢谢,这个功能很实用。 应该是个报账小神器了,先用用看 已收藏, 这个挺好,报销好用