尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
用 PyPDF2 + reportlab 批量给多份装修合同 PDF 加骑缝水印和页码(附完整代码)
做装修项目最怕两件事合同版本混乱、纸质件被调包。把多份合同 PDF 统一加上骑缝水印 连续页码既能防篡改又能让归档一目了然。本文用一个纯 Python 脚本读完即可跑。为什么不用在线工具装修合同含业主姓名、电话、身份证号、房屋地址属于敏感个人信息。丢给第三方网站处理有泄露风险。本地用PyPDF2reportlab就能搞定零外传。环境pipinstallPyPDF2 reportlab核心思路用reportlab生成一张透明水印 PDF含水印文字 页码占位。用PyPDF2的PdfWriter把水印叠到每一页上merge_page。页码用PdfReader逐页计数写入页脚。遍历整个文件夹批量处理。完整代码importosimportglobfromPyPDF2importPdfReader,PdfWriterfromreportlab.pdfgenimportcanvasfromreportlab.lib.pagesizesimportA4 WATERMARK麦序子 · 装修合同 · 机密defmake_stamp(text,page_no,total,outstamp.pdf):生成单页水印(透明背景) pdf含斜向水印文字与页码。ccanvas.Canvas(out,pagesizeA4)c.setFillAlpha(0.18)# 透明不挡正文c.setFont(Helvetica-Bold,26)c.saveState()c.translate(A4[0]/2,A4[1]/2)c.rotate(45)c.drawCentredString(0,0,text)c.restoreState()# 页脚页码c.setFillAlpha(0.9)c.setFont(Helvetica,9)c.drawString(40,20,f{page_no}/{total})c.save()returnoutdefadd_watermark(src,dst):readerPdfReader(src)writerPdfWriter()totallen(reader.pages)fori,pageinenumerate(reader.pages,1):stampmake_stamp(WATERMARK,i,total)swPdfReader(stamp)page.merge_page(sw.pages[0])writer.add_page(page)withopen(dst,wb)asf:writer.write(f)print(f已处理:{os.path.basename(src)}-{dst}({total}页))defbatch(folder,out_dir):os.makedirs(out_dir,exist_okTrue)forpathinglob.glob(os.path.join(folder,*.pdf)):nameos.path.splitext(os.path.basename(path))[0]add_watermark(path,os.path.join(out_dir,f{name}_wm.pdf))if__name____main__:batch(rD:/合同原始,rD:/合同归档)三个常见坑中文水印乱码reportlab默认 Helvetica 不带中文字形。注册STSong-LightAdobe 自带 CJK 字体或换用matplotlib出图再叠才能正常显示中文水印。merge_page 后内容被盖setFillAlpha调低到 0.15 左右水印只做底纹不挡签字区。大文件慢逐页merge_page是 CPU 活几百页的合同建议多进程分桶处理别一把梭。小结本地批量加水印 页码几百份合同十分钟归档完敏感信息不出本机。需要把清单计价表也一起标准化归档可以参考 maixuzi.cn/resources/ 上的装修文档处理思路。
RELATED

相关推荐

AI编程工具IDE/CLI/插件专栏:CLI初识与IDE对比,TaoToken统一Key接入实践

AI编程工具IDE/CLI/插件专栏:CLI初识与IDE对比,TaoToken统一Key接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/7 14:13:11
昇腾NPU推理的“开源之光”:vLLM-Ascend架构设计与生态全景剖析——从ACL图引擎到硬件可插拔的TaoToken实践

昇腾NPU推理的“开源之光”:vLLM-Ascend架构设计与生态全景剖析——从ACL图引擎到硬件可插拔的TaoToken实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/7 14:13:11
2025 AI编程工具选型指南:用TaoToken统一Key打通Cline MCP与Windsurf BYOK

2025 AI编程工具选型指南:用TaoToken统一Key打通Cline MCP与Windsurf BYOK

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/7 14:13:11
MORE NEWS

更多资讯

📰

学习通刷课脚本全解析:Selenium自动化播放与FontTools字体解密实战

简介:一套基于 Python 的学习通自动刷课脚本源码,面向希望借助自动化完成平台课程任务、减少重复点击的学习者,也适合想在 Selenium 浏览器操作和 fonttools 字体处理上做实践参考的 Python 开发者。资源包共 27 个文件、约 2.41MB&#xff0…

📰

Obsidian图文写作流水线:从Workflow到Skill,Token成本直降七成

1. 从Workflow到Skill:一次被Token账单逼出来的架构调整去年下半年我开始用Obsidian搭自己的图文写作流水线,核心诉求很简单:把零散的素材、大纲、配图说明、发布文案串成一条自动化的链路。最开始我走的是Workflow路线——用插件把多个动作串…

📰

零依赖纯文本知识库:用文件夹+Git搭建永不过期的个人笔记系统

caveman 是我最近一直挂在嘴边的一个小项目代号,外号叫“穴居人方案”。圈子里偶尔看到叫 caveman 的工具或开源项目,思路大多差不多:把知识管理这件事打回原形,不用花哨的 App,不用云端数据库,就用文件夹、…

📰

Obsidian插件Superpowers详解:从安装配置到高效文本编辑技巧

1. 为什么 Obsidian 玩家都在聊 Superpowers如果你是个 Obsidian 重度用户,最近逛社区或插件市场时应该会频繁撞见“Superpowers”这个名字。它不是一个让你在笔记里写代码开外挂的神秘工具,而是一个把 Obsidian 原生的文本编辑、搜索、滚动、书签这些基…

📰

ARCGIS学习笔记(一):计算几何中面积被禁用?用TaoToken统一Key跑通Python面积求和

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

玩转 OpenClaw:用 Skill 系统搭建专属 AI 工作流的 TaoToken 实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬