本帖最后由 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操作
使用说明
基本操作
-
添加PDF文件:
- 点击"添加文件"按钮选择PDF文件
- 直接拖拽PDF文件到列表区域
-
管理文件列表:
- 单击选择文件
- Ctrl+A全选所有文件
- Delete键删除选中文件
- 点击"Del"按钮删除选中文件
- 点击"DelA"按钮清空所有文件
-
修改金额:
-
合并PDF:
- 点击"合并"按钮合并所有文件
- 点击"合并选中"按钮仅合并选中的文件
- 设置输出路径(默认为out.pdf)
- 勾选"并打印"可在合并后直接打开文件
界面说明
- 文件列表:显示已添加的PDF文件及其信息,支持拖拽添加文件
- 统计信息:实时显示文件数量、选中数量、总金额和选中金额
- 布局选择:提供多种发票排列布局选项(横向2x2、纵向2x2等)
- 操作按钮:提供文件管理和合并功能
- 路径设置:设置合并后的PDF保存路径
- 打印选项:提供"并打印"复选框和"打印"按钮,方便合并后直接打开文件
- 进度条:显示合并操作的进度
- 日志窗口:显示程序运行日志信息
核心功能实现
PDF金额识别
程序通过以下步骤识别PDF发票中的金额:
- 提取PDF文本与坐标信息
- 定位金额关键词("价税合计"、"合计"、"金额"、"¥"、"¥"、"小写")
- 使用正则表达式匹配关键词附近的金额数字
- 返回识别到的最大金额
PDF合并算法
- 根据选择的布局创建相应尺寸的页面(默认横向A4页面,842×595点)
- 按照布局要求将页面划分为多个区域,绘制分割线
- 按顺序将PDF发票缩放后放置在对应区域
- 自动计算缩放比例,保持原始比例
- 设置居中、偏左、偏右放置每个发票页面
注意事项
- 仅支持PDF格式的发票文件
- 合并后的PDF每页包含的发票数量取决于选择的布局
- 金额识别功能依赖于PDF中的文本内容,扫描件可能无法识别
- 程序会自动跳过重复添加的文件
- 双击金额列可直接修改金额值
- 双击文件名可打开文件所在目录
- 双击路径可复制文件路径到剪贴板
支持命令行参数
可查看MI2A4命令行参数帮助
MI2A4
使用方法: .\mi2a4.exe [路径1] [路径2] ... [输出文件名.pdf]
或者: .\mi2a4.exe [目录列表.txt]
默认输出文件名: out.pdf
-h: 查看帮助
--print: 合并后直接打开文件
.txt 格式:
每个目录占一行
第一行或最后一行如果是.pdf,会作为输出文件名
示例:
./差旅补助
./出行住宿
out1.pdf
快捷键
- Ctrl+A:全选所有文件
- Delete:删除选中的文件
技术细节
文件操作
- 支持拖拽添加多个PDF文件
- 自动过滤非PDF文件
- 自动检测并跳过重复文件
- 支持通过对话框选择文件
数据展示
- 文件列表显示:文件名、金额、修改日期、大小和路径
- 实时统计:文件数量、选中数量、总金额和选中金额
- 进度条显示合并操作进度
交互功能
|