Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔒 PDF加密

基于 pdfcpu 批量给 PDF 加密上锁:支持打开密码(打开需密码)与权限密码(免密打开、可限制打印/复制),固定 AES-256 加密,加密后自动校验确认真实上锁。密码不会保存,每次运行都需重新输入。


✨ 核心特性

  • 两种加密方式
    • 打开密码加密:打开文件需输入密码,只需设置一个用户密码;权限固定为全部权限,打开后不受限制
    • 权限密码加密:文件可免密打开,但打印/复制等权限受保护;可选择「禁止打印」「禁止复制」「禁止打印和复制」「禁止全部权限」,更改权限需输入权限密码
  • 固定 AES-256:pdfcpu 默认、官方推荐最高安全,无需手动配置算法
  • 一键批量:选中多个 PDF,一次全部加密
  • 生成副本:默认生成 _加密 副本,绝不覆盖原文件(可切换为覆盖模式)
  • 自动校验:加密完成后自动校验(打开密码模式:带密码可开/无密码不可开;权限密码模式:免密可开+权限受限),确认真实生效
  • 密码不落盘:每次运行都需输入密码,密码不会写入任何配置文件
  • 盒子生成参数窗口:运行前由不忙脚本盒子自动弹出参数窗口,选择加密方式、输入密码即可
  • 右键菜单集成:配置一次,永久生效。选中 PDF → 右键 → 一键加密
  • 支持定时任务:可创建定时任务,按预设参数自动批量加密
  • 可作为节点:可被其他脚本联动调用(详见「节点脚本」)

脚本演示

PDF加密演示


📦 安装方法

本脚本的运行环境、依赖组件及图形化窗口均依赖「不忙脚本盒子」,建议仅通过盒子安装和使用。

前置条件:安装好 不忙脚本盒子

  • 打开盒子 → 脚本市场 → 搜索 「PDF加密」
  • 点击「安装」

✅ 盒子会自动为脚本配置环境、依赖(pdfcpu),并提供右键、快捷键、定时任务能力。


🚀 使用方式

  • 直接启动(在盒子中选文件运行)

    • 在盒子里点击「PDF加密」脚本卡片
    • 在弹出窗口的「PDF文件」处选择要加密的 PDF(可多选)
    • 选择加密方式输入密码(打开密码模式填用户密码;权限密码模式填权限密码并选择要禁止的权限)
    • 选择输出方式(生成副本 / 覆盖原文件),点击「执行」
    • 脚本自动为每个 PDF 加密并校验,终端窗口显示处理进度
  • 右键启动(日常使用)

    • 在文件管理器中选中一个或多个 PDF 文件
    • 右键点击,选择「PDF加密」
    • 在弹出的参数窗口中确认密码与选项,点击「执行」
  • 快捷键启动

    • 为脚本设置全局快捷键
    • 选中 PDF 文件,按下快捷键即可快速加密
  • 定时任务

    • 在盒子中为该脚本新建定时任务,填写「PDF文件」与加密参数(密码、权限、输出方式)
    • 到点后盒子自动按预设参数批量加密

✅ 盒子会记住上次填写的参数并自动回填,每次仅需确认密码即可。


💡 使用提示

  • 密码安全:加密密码仅在本次运行有效,不会写入任何配置文件。密码丢失将无法打开加密文件(或无法修改权限),也无法找回,请妥善记录
  • 打开密码加密:设置的用户密码即打开密码,所有者密码自动与用户密码相同;权限固定为全部权限(打开后即可正常打印/复制)
  • 权限密码加密:文件可免密打开,打印/复制等权限按所选生效;更改权限需输入权限密码(该密码不用于打开文件)
  • 密码限制:pdfcpu 不支持密码包含空格,程序会提前拦截
  • 重复加密:对已加密的 PDF 再次加密会报错(需先解密),程序会给出明确提示
  • 权限说明:「禁止全部权限」为最严(仅可查看);「禁止打印和复制」为安全默认
  • 定时任务密码:定时任务需在创建时填写密码,密码仅保存在该任务配置中,请确保运行环境安全
  • 校验机制:加密后自动校验确保加密真实生效(见「核心特性 · 自动校验」)

🔗 节点脚本(开发者阅读)

本脚本已声明为节点(node enabled = true),可被其他盒子脚本通过 /api/link 同步调用。

返回业务键(信封顶层平铺):

类型 说明
output_paths list 加密后生成/覆盖的文件路径列表
success_count str 成功数量
failed_count str 失败数量

调用示例:

import json, sys, requests

payload = json.load(open(sys.argv[1], encoding="utf-8"))
env = payload["environment"]

r = requests.post(f"{env['api_base']}/api/link", json={
    "script_id": "df347e13-f917-46e2-9a16-4ea814c5acee",
    "data": {"target_paths": ["C:/a.pdf", "C:/b.pdf"]},
    "params": {
        "encrypt_type": "open",
        "user_password": "your-password",
        "mode": "copy",
    },
}, timeout=3600)
body = r.json()
if not body.get("success") or body["result"].get("code") != 0:
    raise RuntimeError(body.get("message") or body["result"].get("msg"))
outputs = body["result"]["output_paths"]

节点模式下脚本无人值守运行,不弹窗、不等待按键;缺少密码等参数时返回 code != 0 与错误说明。


🖥️ 环境要求

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

About

PDF加密上锁脚本 | 基于 pdfcpu 批量加密,支持打开密码(打开需密码)与权限密码(免密打开,可禁止打印/禁止复制/禁止打印和复制/禁止全部权限),固定 AES-256,加密后自动校验确认真实上锁,支持右键一键批量加密、定时任务批量加密,可作为节点被其他脚本调用

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages