title: “影刀RPA PDF水印添加批量处理文档的完整方案”date: 2026-07-01author: 林焱影刀RPA PDF水印添加批量处理文档的完整方案给外发的PDF加水印防止文件被随意传播。报告、合同、资质文件都需要这个操作。一份两份手动加几十份靠影刀批量处理统一格式、省时省力。什么情况用什么必须加水印的场景外发给客户的报价单、方案书涉密的财务报表需要追踪谁泄露了文件个性化水印带收件人姓名内部流转文件标注机密“仅供内部使用”不需要的场景公开发布的文件水印没意义文件量极少手动加更快拼多多店群自动化报活动上架怎么做方法1用PyMuPDF添加文字水印推荐PyMuPDFfitz性能最好支持中文操作直观。【影刀操作】添加【Python】指令先安装importsubprocess subprocess.run([pip,install,PyMuPDF],capture_outputTrue)添加【Python】指令给单个PDF加水印importfitz# PyMuPDFimportosdefadd_text_watermark(input_path,output_path,watermark_text,opacity0.3,color(0.5,0.5,0.5),font_size60,rotation45): 给PDF每一页添加对角线文字水印 opacity: 透明度 0-1 color: RGB颜色 (R, G, B) 每个值0-1 docfitz.open(input_path)forpageindoc:page_widthpage.rect.width page_heightpage.rect.height# 在页面中间偏左、偏右各放一个水印positions[(page_width*0.3,page_height*0.5),(page_width*0.7,page_height*0.3),]forx,yinpositions:# 插入文本水印page.insert_text((x,y),watermark_text,fontsizefont_size,colorcolor,rotaterotation,overlayFalse# 放在内容下面)doc.save(output_path,garbage4,deflateTrue)doc.close()print(f已添加水印{output_path})# 单文件处理add_text_watermark(rC:\原始PDF\报价单.pdf,rC:\加水印PDF\报价单_水印.pdf,机密 · 仅供内部使用)添加【Python】指令批量处理文件夹importfitzimportos input_dirrC:\原始PDFoutput_dirrC:\加水印PDFos.makedirs(output_dir,exist_okTrue)success_count0fail_count0forfilenameinos.listdir(input_dir):ifnotfilename.endswith(.pdf):continueinput_pathos.path.join(input_dir,filename)output_pathos.path.join(output_dir,filename)try:add_text_watermark(input_path,output_path,仅供内部使用)success_count1exceptExceptionase:print(f处理失败{filename}原因{e})fail_count1print(f批量处理完成成功{success_count}个失败{fail_count}个)yda.set_variable(watermark_success,success_count)方法2个性化水印带收件人信息给不同人发送不同水印出现泄露时可以追踪来源。【影刀操作】添加【读取Excel】指令读取收件人列表添加【循环】指令遍历收件人在循环内添加【Python】指令importfitzimportos recipient_namecurrent_recipient[name]recipient_emailcurrent_recipient[email]# 个性化水印文字watermark_textf专属发送给{recipient_name}\n{recipient_email}input_pathrC:\原始PDF\项目报告.pdfoutput_pathfC:\\个人水印PDF\\项目报告_{recipient_name}.pdfdocfitz.open(input_path)forpageindoc:# 右下角加小字标注page.insert_text((page.rect.width-200,page.rect.height-30),f专属{recipient_name},fontsize8,color(0.7,0.7,0.7),overlayTrue)# 中间对角线大水印page.insert_text((page.rect.width*0.2,page.rect.height*0.5),recipient_name,fontsize70,color(0.85,0.85,0.85),rotate45,overlayFalse)doc.save(output_path)doc.close()print(f已生成{recipient_name}的专属版本)方法3图片水印logo水印品牌文件用公司logo做水印。【影刀操作】importfitzfromPILimportImageimportiodefadd_image_watermark(input_path,output_path,logo_path,opacity0.3):在PDF每页右下角添加图片水印docfitz.open(input_path)# 读取logo并降低透明度logoImage.open(logo_path).convert(RGBA)logo_w,logo_h100,50# 水印尺寸logologo.resize((logo_w,logo_h))# 调整透明度r,g,b,alogo.split()aa.point(lambdax:x*opacity)logoImage.merge(RGBA,(r,g,b,a))# 保存为字节流bufio.BytesIO()logo.save(buf,formatPNG)logo_bytesbuf.getvalue()forpageindoc:pwpage.rect.width phpage.rect.height# 右下角位置rectfitz.Rect(pw-logo_w-20,ph-logo_h-20,pw-20,ph-20)page.insert_image(rect,streamlogo_bytes,overlayTrue)doc.save(output_path)doc.close()有什么坑坑1中文水印乱码PyMuPDF默认字体不支持中文insert_text会显示方块。解决方法指定中文字体文件TEMU店群矩阵自动化运营核价报活动page.insert_text((x,y),text,fontfilerC:\Windows\Fonts\simhei.ttf,fontsize50)坑2原PDF已有版权保护加密的PDFPyMuPDF打开时报错PDF is encrypted。解决方法打开时提供密码doc fitz.open(path, passwordxxx)无密码的加密PDF无法直接处理。坑3水印挡住了内容水印太深把正文文字盖住了影响阅读。解决方法调低 opacity0.15-0.2最合适或者用 overlayFalse 把水印放在内容图层下面。坑4处理大PDF很慢300页的PDF加水印要1-2分钟。解决方法多进程并行处理用 multiprocessing.Pool 同时处理多个文件。总结PDF批量加水印首选PyMuPDF性能好、API简洁。关键要解决中文字体问题以及根据业务需求选择文字水印还是图片水印。个性化水印带收件人名字是防泄露追踪的好方法外发重要文件时强烈推荐。