
✨博文简介:日常办公遇到Excel转PDF+添加水印需求,WPS该功能需付费98元会员,不想为单次刚需付费,于是手写Python脚本实现全套功能,完全免费、无水印、可自定义、支持批量处理,亲测完美落地,刚需开发者/打工人直接抄作业!
日常打工,总会遇到各种奇葩且刚需的办公需求,今天就和大家分享一个刚刚落地的实用小项目,完美解决办公付费痛点,手把手教大家白嫖Excel转PDF加水印功能!
一、业务需求背景
今天领导安排了一个简单的办公任务:将多张Excel报表文件导出为PDF格式,并且所有导出的PDF文件,统一添加自定义文字水印,用于内部资料保密使用。
第一时间想到用最便捷的WPS办公软件来实现,毕竟自带Excel转PDF、文档加水印功能,操作简单无需复杂操作。
但打开功能的瞬间直接傻眼了!
WPS普通用户仅支持基础的文件格式转换,Excel导出PDF+自定义添加水印的组合功能,必须开通年度会员才可使用,会员年费刚好98元。
说实话,单纯为了这一次的临时办公需求,花98元开通会员属实太不划算,纯纯浪费成本。作为一名开发人员,能代码解决的绝不付费,思索再三决定自己动手,开发一个轻量化小程序,免费实现同款功能!
二、方案选型与优势
对比了网上各类工具、在线转换网站后,最终选择Python脚本实现该需求,相比付费工具、在线网站,优势拉满:
-
零成本免费使用:无需会员、无隐藏收费,永久免费
-
无多余水印:仅自定义添加自己需要的保密水印,无工具自带广告水印
-
高度自定义:可自由修改水印文字、颜色、透明度、角度、位置
-
本地离线运行:无需上传文件,杜绝资料泄露,适配办公保密场景
-
支持批量处理:单次可转换多个Excel文件,效率远超手动操作
三、完整实现代码(亲测可用)
本次脚本主要依赖 win32com 实现Excel转PDF,PyPDF2 + reportlab 实现PDF自定义水印,所有依赖均可一键安装,Windows环境完美适配。
1. 安装依赖库
pip install pywin32 PyPDF2 reportlab
2. 完整可运行源码
import os import win32com.client from PyPDF2 import PdfReader, PdfWriter from reportlab.pdfgen import canvas from reportlab.lib.units import inch # ====================== 可自定义配置项 ====================== # Excel文件路径、输出PDF路径、水印文字可自行修改 EXCEL_PATH = "test.xlsx" # 待转换的Excel文件 PDF_TEMP_PATH = "temp.pdf" # 临时无水印PDF OUTPUT_PDF_PATH = "output.pdf" # 最终带水印的PDF WATERMARK_TEXT = "内部资料 禁止外传" # 自定义水印文字 # ============================================================ def excel_to_pdf(excel_path, pdf_path): """Excel文件导出为PDF文件""" excel = win32com.client.Dispatch("Excel.Application") excel.Visible = False # 后台静默运行,不弹出窗口 excel.DisplayAlerts = False # 关闭弹窗提示 try: workbook = excel.Workbooks.Open(os.path.abspath(excel_path)) # 完整保留Excel排版格式,自适应页面 for sheet in workbook.Worksheets: sheet.PageSetup.FitToPagesWide = 1 sheet.PageSetup.FitToPagesTall = 0 workbook.ExportAsFixedFormat(0, os.path.abspath(pdf_path)) print(f"✅ Excel转PDF成功:{pdf_path}") except Exception as e: print(f"❌ 转换失败:{str(e)}") finally: workbook.Close() excel.Quit() def create_watermark(watermark_text, watermark_pdf_path="watermark.pdf"): """生成自定义水印PDF模板""" c = canvas.Canvas(watermark_pdf_path) c.setFont("Helvetica", 50) # 水印字体大小 c.setFillColor(0.8, 0.8, 0.8, 0.4) # 浅灰色、40%透明度 # 平铺斜向水印,全覆盖页面 width, height = c._pagesize for x in range(0, int(width), 200): for y in range(0, int(height), 200): c.saveState() c.translate(x, y) c.rotate(45) # 水印倾斜45度 c.drawCentredString(0, 0, watermark_text) c.restoreState() c.save() return watermark_pdf_path def add_pdf_watermark(pdf_path, watermark_path, output_path): """为PDF批量添加水印""" reader = PdfReader(pdf_path) writer = PdfWriter() watermark_reader = PdfReader(watermark_path) watermark_page = watermark_reader.pages[0] # 给每一页添加水印 for page in reader.pages: page.merge_page(watermark_page) writer.add_page(page) # 保存最终文件 with open(output_path, "wb") as f: writer.write(f) print(f"✅ 水印添加完成,最终文件:{output_path}") if __name__ == "__main__": # 1. Excel转PDF excel_to_pdf(EXCEL_PATH, PDF_TEMP_PATH) # 2. 生成水印模板 water_file = create_watermark(WATERMARK_TEXT) # 3. 给PDF添加水印 add_pdf_watermark(PDF_TEMP_PATH, water_file, OUTPUT_PDF_PATH) # 清理临时文件(可选) os.remove(PDF_TEMP_PATH) os.remove(water_file) print("🎉 全部任务完成!成功免费实现Excel导出PDF+加水印,省下98元会员费!")
四、使用教程
将需要转换的Excel文件放在脚本同级目录,修改代码中 EXCEL_PATH 为你的文件名;
自定义修改 WATERMARK_TEXT 水印文字,可根据需求调整字体大小、透明度、颜色;
运行脚本,自动完成 Excel转PDF→生成水印→添加水印→清理缓存 全流程;
运行完成后,同级目录下 output.pdf 即为最终带水印的成品文件。
五、踩坑总结 & 优化点
1. 网上很多在线转换工具,要么限制文件大小,要么强制带平台水印,部分工具还会泄露办公机密,本地脚本运行更安全;
2. 部分开源脚本只能单一转PDF或单一加水印,本次脚本整合全套功能,一站式解决需求;
3. 脚本可二次优化,修改后可实现批量文件夹内所有Excel文件转换加水印,适配大量办公报表处理场景;
4. 全程无任何付费项,一次编写,永久复用,彻底告别WPS会员付费刚需。
六、总结
这次小小的开发实践,直接省下98元WPS年度会员费用,同时实现了更灵活、更安全、无广告的办公功能。对于程序员来说,这就是代码的魅力,日常办公的各类付费小功能,大多都能通过极简的代码实现白嫖!
小程序可以点击excel导出PDF加带自定义水印此链接进行下载!或直接拷贝(https://download.csdn.net/download/guse1125/93732846?spm=1001.2014.3001.5503)
双击可以运行,如有问题,随时私信!
需要批量处理版本脚本的小伙伴可以评论区留言,私信我免费领取!💪





