办公文档水印批量处理工具 · PDF/Excel 流水线 预览图

办公文档水印批量处理工具 · PDF/Excel 流水线

水印按字符密度避让正文、电话邮箱列自动打码、线程池任务队列配进度轮询

源码/项目包 v1.0 # Python# Flask# 办公自动化

这个项目解决什么问题

办公岗位的单据处理痛点非常具体:合同、提单、报价单外发前要逐份加水印,订单 Excel 列名中英文混乱、日期五花八门、金额带 $ 和千分位不能直接求和,表格里还带着客户电话邮箱怕泄密。本项目把这些高频操作整合成一条流水线,并提供"生成演示文档"按钮——没有真实单据也能完整演示全流程。

核心亮点

  • 水印位置智能避让:不是简单全页糊满水印——先用 PyPDF2 的 visitor_text 回调收集每页文字坐标,把页面划成网格统计字符密度,水印自动跳过正文密集的格子,避免盖住关键内容(扫描件提取不到文字时自动退化为全页平铺)。
  • 敏感字段遮蔽:勾选一个开关,电话 / 邮箱列输出前自动打码成 138****5678、w***@demo.com,针对单据外发的防泄密场景。
  • 线程池任务队列 + 进度轮询:多文件处理走后台线程,前端每 800ms 轮询 /api/progress/<task_id> 实时刷新进度条,处理完成自动打包 ZIP,每个文件的结果与耗时都落盘到日志页可查。
  • 一键演示数据:reportlab 现场生成 3 份提单 PDF + 2 个中英文混乱列名的订单 Excel,课程汇报时零准备。

效果预览

首页上传与参数配置——水印文字 / 字号 / 角度 / 透明度 / 间距均可调:

界面示意

水印智能避让前后对比——开启后正文区域不再被水印遮挡:

水印避让对比

整体处理流程:上传 → 任务队列 → PDF/Excel 分流处理 → 进度轮询 → ZIP 打包:

处理流程

预览图基于演示数据渲染实际处理效果,界面示意以实际运行页面为准。

你将学到

  • Flask 异步任务的轻量实现:ThreadPoolExecutor + 全局任务字典 + 轮询接口(不必上 Celery)
  • PDF 的程序化操作:ReportLab 生成水印层、PyPDF2 逐页叠加 / 合并 / 按页码范围拆分
  • pandas 数据清洗套路:列名映射、去重、日期统一、金额数值化与合计
  • 如何把"批处理 + 进度反馈 + 流水日志"做成一个完整的 Web 工具

适合谁

需要完成"工具类 / Web 应用方向"毕业设计,或想积累 PDF/Excel 办公自动化实战经验的学习者。难度 ★★☆,代码中文注释齐全,跑通一遍即可理解全部流程。


交付内容:完整可运行源码、README.md(逐步运行方法与实现说明)、requirements.txt。

许可:个人使用,可用于自己的学习、课程实验与研究报告,请勿转售或公开传播。

Python 3
Flask + Bootstrap 5
PyPDF2
ReportLab
pandas
openpyxl
ThreadPoolExecutor + 全局字典

环境与步骤

pip install -r requirements.txt
pip install -r requirements.txt
python app.py          # 启动后浏览器打开 http://127.0.0.1:5000

没有文件?点首页的 「生成演示文档」 按钮,再勾选"智能避让"和"敏感字段遮蔽"上传即可看到全部效果。

注意事项

  • 内置「生成演示文档」按钮,没有真实单据也能跑完整个流程。

Q:没有真实单据能演示吗?

A:能。页面上有“生成演示文档”按钮,用 reportlab 现场造 3 份提单 PDF 加 2 个列名中英文混乱的订单 Excel,整条流水线零准备可跑。

Q:水印会不会盖住正文?

A:默认走智能避让:先用 PyPDF2 的 visitor_text 回调收集每页文字坐标,把页面划成网格统计字符密度,水印自动跳过正文密集的格子;扫描件提取不到文字时自动退化为全页平铺。

Q:电话和邮箱能自动打码吗?

A:勾选“敏感字段遮蔽”开关后,电话列输出成 138****5678、邮箱成 w***@demo.com,针对单据外发的防泄密场景。

Q:多文件会不会把页面卡死?

A:处理走后台线程池,前端每 800ms 轮询 /api/progress/<task_id> 刷新进度条,完成后自动打包 ZIP 下载,每个文件的结果与耗时在日志页可查。requirements 里的 celery 是注释掉的可选项,默认不需要。

购买评价(0)

暂无评价,购买后第一个来评价吧
相关商品
🍪 隐私提示 我们仅收集提供服务所必需的信息(详见《隐私政策》),不出售、不追踪。
¥69
立即购买