网站首页/ 信息中心/ 档案百科/

从零搭建可直接落地的档案水印系统 零门槛完整实操指南

发布时间:2026年06月28日 19:05:08 浏览量:0

一、环境准备

1. 安装Python解释器

如果你的设备已经安装Python 3.8及以上版本,可以直接跳过本步骤。不同系统安装方式如下:

2. 安装项目依赖

安装完成后打开终端(Windows按Win+R输入cmd回车打开),执行以下命令安装所有需要的依赖:

```pip install pillow pymupdf ```

如果出现网络超时,换用国内镜像源安装:

```pip install pillow pymupdf -i https://pypi.tuna.tsinghua.edu.cn/simple ```

二、编写系统核心代码

在你电脑任意位置新建一个空白文件夹,新建一个名为watermark.py的文件,将以下完整代码直接复制进去,所有自定义配置都标注在文件开头,可直接修改:

```python import os from PIL import Image, ImageDraw, ImageFont import fitz pymupdf 处理PDF -- 可修改配置项 -- WATERMARK_TEXT = "内部档案 请勿外传" OPACITY = 0.3 透明度,范围0-1,数值越小越透明 ANGLE = 30 水印旋转角度 SPACING = 150 水印之间的间距,单位像素 FONT_SIZE = 50 水印字体大小 - def get_system_font(): """自动适配不同系统默认中文字体""" import platform sys_name = platform.system() if sys_name == "Windows": return "C:/Windows/Fonts/simhei.ttf" elif sys_name == "Darwin": MacOS return "/Library/Fonts/PingFang.ttc" else: Linux return "/usr/share/fonts/truetype/wqy/wqy-microhei.ttc" def add_watermark_to_image(image_path, output_path): img = Image.open(image_path).convert("RGBA") width, height = img.size 创建水印画布 watermark = Image.new("RGBA", img.size, (0,0,0,0)) draw = ImageDraw.Draw(watermark) 加载字体 font = ImageFont.truetype(get_system_font(), FONT_SIZE, encoding="utf-8") 计算单个水印尺寸 left, top, right, bottom = draw.textbbox((0,0), WATERMARK_TEXT, font=font) text_width = right - left text_height = bottom - top 铺满画布绘制水印 for i in range(-SPACING, width + SPACING, text_width + SPACING): for j in range(-SPACING, height + SPACING, text_height + SPACING): draw.text((i, j), WATERMARK_TEXT, font=font, fill=(255, 0, 0, int(255 OPACITY))) 旋转水印 watermark = watermark.rotate(ANGLE, expand=0) 合并原图和水印 result = Image.alpha_composite(img, watermark) result = result.convert("RGB") result.save(output_path) def add_watermark_to_pdf(pdf_path, output_path): doc = fitz.open(pdf_path) watermark_doc = fitz.open() font_path = get_system_font() for page in doc: new_page = watermark_doc.new_page(width=page.rect.width, height=page.rect.height) new_page.show_pdf_page(new_page.rect, doc, page.number) 计算水印铺满页面 page_width = new_page.rect.width page_height = new_page.rect.height text_width = FONT_SIZE len(WATERMARK_TEXT) 0.6 text_height = FONT_SIZE 添加平铺水印 for i in range(-int(SPACING), int(page_width + SPACING), int(text_width + SPACING)): for j in range(-int(SPACING), int(page_height + SPACING), int(text_height + SPACING)): new_page.insert_text( (i, j), WATERMARK_TEXT, fontfile=font_path, fontsize=FONT_SIZE, color=(1, 0, 0), opacity=OPACITY, rotate=ANGLE ) watermark_doc.save(output_path) watermark_doc.close() doc.close() if __name__ == "__main__": 创建输入输出文件夹 base_dir = os.path.dirname(os.path.abspath(__file__)) input_dir = os.path.join(base_dir, "input") output_dir = os.path.join(base_dir, "output") os.makedirs(input_dir, exist_ok=True) os.makedirs(output_dir, exist_ok=True) 批量处理所有文件 for filename in os.listdir(input_dir): file_path = os.path.join(input_dir, filename) if not os.path.isfile(file_path): continue ext = filename.split(".")[-1].lower() output_path = os.path.join(output_dir, filename) if ext in ["jpg", "png", "jpeg"]: print(f"正在处理图片:{filename}") add_watermark_to_image(file_path, output_path) elif ext == "pdf": print(f"正在处理PDF:{filename}") add_watermark_to_pdf(file_path, output_path) print("所有档案处理完成!") ```

三、运行使用系统

1. 预处理待加水印的档案

从零搭建可直接落地的档案水印系统 零门槛完整实操指南

在你存放watermark.py的文件夹下,系统会自动创建名为input的文件夹,把所有需要添加水印的档案文件放入支持.jpg.png.pdf三种格式,系统会自动批量处理所有文件。

2. 修改自定义配置(可选)

如果需要修改水印内容、透明度、角度,直接用记事本打开watermark.py,修改文件开头的配置变量即可:

3. 运行生成带水印档案

打开终端,进入存放watermark.py的文件夹,执行以下命令:

```python watermark.py ```

等待执行完成后,打开同目录下的output文件夹,就能得到所有添加好水印的档案文件。

四、常见问题解决

档案整理外包服务怎么选不踩坑?看完这篇直接省几万
档案整理外包服务怎么选不踩坑?看完这篇直接省几万
你是不是年底一到就头大?行政岗要理全年的资质、合同、办事档案,人事岗要整理半人高的员工档案,自己理吧,熬3个大夜都理不完,还容易分类错、漏文件,后面要用的时候找半天找不到。找档案整理外包服务吧,又怕找...
2026年06月28日 19:05:08
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818