PDF批量解密

PDF批量解密

背景:

下载了一堆单页pdf文件,开开心心地去合并,不料竟然每一页都有密码,约1000+个文件,一个一个去用smallpdf解密也不现实,于是就有了下边的这些操作!

下载

我有个朋友……

帮朋友下一本书(链接,朋友告诉我单页pdf可以下载,能不能写个脚本批量下载了,我想既然单页可以下载,那分析一波下载url,或许有解,然后合并一下可能就完事,工作量不大。爽快答应!

打开网站,发现单页pdf的url长这个样子https://kawajun.meclib.jp/store_deve_catalog/book/pdf/0005.pdf,改了个页数,用IDM试了一下,可以下载,简直太好了,不得不感叹网站的友好,于是,用py把链接打出来,在IDM上从剪切板导入链接批量下载。

# https://kawajun.meclib.jp/store_deve_catalog/book/pdf/0005.pdf
for i in range(1, 1153):
print("https://kawajun.meclib.jp/store_deve_catalog/book/pdf/"+ str(i).zfill(4)+'.pdf')

解密

shell脚本

合并时候遇到了有加密口令的问题,于是乎开始Google解决方案,最终在github上找到了dalao的unlock-pdf项目。

#!/bin/bash

if [[ $# == 1 ]]; then
input_dir=$1
else
echo "Usage: $0 {input_dir}"
exit 255
fi

output_dir="${input_dir}.decrypted"
mkdir -p $output_dir

for fn in `ls -1 $input_dir`
do
qpdf --decrypt ${input_dir}/$fn ${output_dir}/$fn
done

将下列代码保存为.sh文件,windows平台打开的话,需要用WSL或者下载一个Git,就可以支持shell脚本。

安装qpdf

当然,这个脚本是依赖于一个软件qpdf,如果采用brew安装的话,因为网络的原因,速度可能要慢一点,所以直接去官网下载。

Windows平台:将D:\qpdf-9.1.1\bin添加到环境变量,即可安装成功。

开始

将所有pdf文件放入inputfile目录下。

此时的目录结构应该为

----unlock-pdf.sh
----inputfile
-------test1.pdf
-------test2.pdf

打开Git bash

./unlock-pdf.sh inputfile/

这样,就开始自动解密。

解密完成后,会生成一个.decrypted文件夹,每个解密后的pdf文件都会在这里。