PDF中所有者密码去除的一种方法(批量处理)
最近下载了大量的知网硕士论文,我想将多篇硕士论文整合成一个PDF文件,打印出来学习。在整合时发现,知网硕士论文PDF是加了密的,该密码为所有者密码,即禁用了如打印、编辑、复制等权限,不影响用户对该PDF的阅读,所以我要想办法去除该密码。首先想到的是Advanced PDF Password Recovery这款软件,经过操作后发现密码是可以去除,但是使用Adobe Acrobat PDF打开时显示有错误,所以也无法将多个PDF文件整合成单个。(这个错误好像是因为Advanced PDF Password Recovery采用的暴力破解,直接将PDF文件中的某个权限设置参数擦除了,但是未能填写新的内容,导致了PDF文件的结构出现异常,具体的我也不专业,可以大模型查一下)。后来发现通过浏览器打开PDF,然后在打印选项中选择另存为PDF,就可以将密码去除,可是这么多文件,我不能一一用浏览器打开再另存,所以就需要进行批量操作。后来用过不断查询,了解到可以使用qpdf软件对PDF的部分权限进行解除,同时也不影响整个PDF结构,同时还可以进行批量操作。经过使用千问大模型不断打磨,最终形成了这段批量处理的代码,如图 1所示。

图 1资料列表
1.使用说明
1)运行环境
表 1 运行环境
序号 | 变量名 | 变量值 |
1 | 操作系统 | Windows(我自己实验的版本是Windows11) |
2 | 权限解除软件 | qpdf(qpdf-12.3.2) |
2)在运行代码前需要安装qpdf软件;
3)在batch_proc_pdf.ps1中编辑加密PDF文件路径、解密PDF保存路径以及qpdf软件安装路径,如图 2所示

图 2相关路径设置
4)上述操作完成后,点击“一键解密PDF.bat”文件,即可实现去除PDF的所有者权限
2.使用注意事项
1)batch_proc_pdf.ps1是PowerShell代码,可以复制到PowerShell中直接运行,但是如果直接运行,windows会“闪退”。
l为什么会“闪退”?
Windows 默认的 PowerShell 执行策略是 Restricted(受限),这意味着系统禁止直接运行任何 .ps1 脚本文件。但是在 PowerShell 终端里粘贴代码并回车时,系统将其视为“手动输入的命令”而不是“执行外部脚本文件”,因此不受执行策略的限制。
l如何解决这个问题?
只需要创建一个 .bat(批处理)文件来启动.ps1 脚本即可,这样强制绕过Windows的限制。
2)batch_proc_pdf.ps1保存时一定要选择UTF-8 BOM格式,可以使用记事本打开,再另存为,选择UTF-8 BOM编码格式,如图 3所示

图 3 ps1编码格式设置
3.资料链接
通过网盘分享的文件:PDF所有者密码去除资料.zip
链接: https://pan.baidu.com/s/1Bhyv_uSSi3vALOpJ3L4SOQ?pwd=ry58 提取码: ry58
夜雨聆风