跳到主要内容

PDF加水印

可调用节点 v2.0.1

批量给 PDF 添加文字或图片水印,支持字体/字号/颜色/位置/角度/透明度自定义,中文水印自动安装系统字体,基于 pdfcpu 实现,支持右键选中 PDF 一键批量加水印、定时任务自动加水印、被其他脚本联动调用

脚本能力

直接启动支持 右键启动支持 快捷键启动支持 超级复制启动不支持 定时任务支持 可被其他脚本调用 依赖其他脚本 图形化启动界面支持

基于 pdfcpu 批量给 PDF 添加文字 / 图片水印,支持位置 / 字体 / 字号 / 颜色 / 角度 / 透明度自定义,中文水印自动安装系统字体,生成副本不覆盖原文件。


📖 简介

本工具基于 pdfcpu,通过不忙脚本盒子自动生成的配置窗口设置水印样式,无需任何手写界面。配置完成后,在文件资源管理器中选中 PDF 文件,右键即可一键批量添加水印;也可设为定时任务自动执行,或被其他脚本联动调用。

✨ 核心特性

  • 文字 + 图片双水印:一键切换文字水印或图片水印(PNG/JPG)
  • 中文开箱即用:pdfcpu 核心字体不含中文字形,脚本检测到中文时自动从 Windows 系统字体目录安装宋体 / 黑体 / 楷体等,无需手动配置
  • 一键批量:右键选中多个 PDF,全部自动添加水印
  • 样式自定义:位置(上 / 下 / 左 / 右 / 居中)、字体、字号、颜色、边距、旋转角度均可调
  • 斜向铺满:沿页面对角线斜跨整页的水印效果,经典水印样式
  • 透明度可调:默认 30%,低透明度叠加在内容上方,不遮挡正文
  • 生成副本:默认生成 _水印 副本,绝不覆盖原文件(可切换为覆盖模式)
  • 右键菜单集成:选中 PDF → 右键 → 一键加水印
  • 定时任务:在盒子里设定时间自动批量加水印,无人值守
  • 脚本联动:可被其他脚本作为节点调用,返回处理结果
  • 基于 pdfcpu:成熟 PDF 引擎,处理高效稳定

脚本演示

PDF加水印演示


📦 安装方法

  • 通过不忙脚本盒子安装(推荐)

    • 下载并安装 不忙脚本盒子

    • 打开不忙脚本盒子 → 脚本市场 → 搜索 「PDF加水印」

    • 点击「安装」

✅ 推荐使用不忙脚本盒子安装、盒子会自动为脚本配置环境、依赖、并提供右键、快捷键、定时任务、脚本联动等能力


🚀 使用方式

通过不忙脚本盒子安装后,可通过以下方式使用「PDF加水印」功能:

  • 一键添加水印(日常使用)

    • 在文件管理器中选中一个或多个 PDF 文件

    • 右键点击,选择「PDF加水印」

    • 盒子自动弹出配置窗口,按需调整水印文字 / 字体 / 位置 / 透明度等(不调整则用上次的配置)

    • 点击「执行」,脚本自动批量添加水印

  • 定时任务

    • 打开「不忙脚本盒子」→ 定时任务 → 新建任务

    • 选择 「PDF加水印」,在表单里选定要处理的 PDF 文件与水印参数

    • 设定执行时间(每天 / 每周 / 固定间隔等),到点自动运行、无人值守

  • 脚本联动(节点)

    • 其他脚本可通过盒子调用「PDF加水印」为 PDF 批量加水印

    • 执行完成后返回 output_paths(成功文件列表)与 failed_paths(失败文件列表)

  • 快捷键操作

    • 为脚本设置全局快捷键

    • 选中 PDF 文件,按下快捷键即可快速添加水印

✅ 配置由盒子自动记忆上次填写的值,无需每次重复设置


🖥️ 环境要求

项目 要求
操作系统 Windows 10+(64位)
运行环境 python3.8, pdfcpu

📝 说明

  • 中文字体:需要中文水印时,脚本会自动安装系统字体(宋体/黑体/楷体/仿宋/微软雅黑/等线);若使用英文/数字水印也可选择 pdfcpu 核心字体(Helvetica 等)
  • 图片水印:在配置窗口「水印类型 = 图片水印」时填写本地 PNG/JPG 图片的路径
  • 斜向铺满与旋转角度互斥:勾选「斜向铺满」后水印沿对角线斜跨整页,关闭后可自定义旋转角度
  • 定时任务 / 联动调用不弹配置窗口:按默认值或你预设的参数无人值守运行

节点脚本(开发者阅读)

本脚本声明了 [bmscriptsbox.node],可被其他脚本联动调用。调用时按 /api/link 传入 data.target_pathsparams(缺省用 TOML 默认值),脚本无人值守执行并回传信封:

import json, sys, requests

payload = json.load(open(sys.argv[1], encoding="utf-8"))
api_base = payload["environment"]["api_base"]
target = payload["data"]["target_paths"][0]

r = requests.post(f"{api_base}/api/link", json={
    "script_id": "7fb00902-812b-44ad-b45e-b923a01d5ce1",
    "data": {"target_paths": [target]},
    "params": {"text": "内部资料", "position": "c", "opacity": 0.3},
}, timeout=3600)
body = r.json()
if body.get("success") and body["result"].get("code") == 0:
    output_paths = body["result"]["output_paths"]  # 成功文件列表
    failed_paths = body["result"]["failed_paths"]  # 失败文件列表

返回业务键:

类型 说明
output_paths list 加水印后生成/覆盖的 PDF 路径列表
failed_paths list 处理失败的 PDF 路径列表

免责声明

所有脚本由用户通过开源仓库自行发布。本站仅提供索引服务,"不忙脚本盒子"仅提供展示与安装服务。请在使用前仔细核实脚本内容,作者不对其安全性、准确性及适用性作任何保证。

脚本推荐