PDF密码保护

use*_*069 2 windows-7 pdf passwords

我正在尝试用密码保护一个大型 pdf 集合,每个 PDF 文件有一个密码。我想为每个 PDF 设置一个随机且唯一的密码,并在设置时跟踪它们。

我正在寻找一些自动化,既可以设置随机密码,又可以将它们存储在 csv 或文本文件中以备将来参考。

gla*_*len 6

使用 PDF 工具包,pdftk. 它是开源的,可在 Windows 和 linux 上运行。您可以从这里的示例中添加密码、加密和修改权限,如下所示

使用 128 位强度(默认值)加密 PDF 并保留所有权限(默认值)

pdftk mydoc.pdf output mydoc.128.pdf owner_pw foopass
Run Code Online (Sandbox Code Playgroud)

同上,只是打开PDF需要密码

pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz
Run Code Online (Sandbox Code Playgroud)

同上,除了允许打印(打开PDF后)

pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz allow printing
Run Code Online (Sandbox Code Playgroud)

然后,为了对大量文件自动执行此操作,您需要创建一个批处理文件(或 powershell)进行迭代。由于 pdftk 都是命令行,所以这应该不难。我编写并测试了以下批处理文件。有用:

@ECHO OFF

setlocal EnableDelayedExpansion
md out
for /f %%G in ('dir /b "*.pdf"') do (
    call:_pwgen passwd
    pdftk %%G output out/%%G user_pw !passwd!
    echo '%%G', '!passwd!' >> out/passwords.csv
)

goto :EOF

:_pwgen passwd
setlocal ENABLEEXTENSIONS
set _RNDLength=8
set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
set _Str=%_Alphanumeric%987654321
set passwd=%~1
:_LenLoop
if not "%_Str:~18%"=="" set _Str=%_Str:~9%& set /A _Len+=9& GOTO :_LenLoop
set _tmp=%_Str:~9,1%
set /A _Len=_Len+_tmp
set _count=0
set _RndAlphaNum=
:_loop
set /a _count+=1
set _RND=%Random%
set /A _RND=_RND%%%_Len%
set _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!
if !_count! lss %_RNDLength% goto _loop
set passwd=!_RndAlphaNum!
endlocal&set %~1=%passwd%
GOTO:EOF
Run Code Online (Sandbox Code Playgroud)

感谢此处关于如何在批处理文件中生成随机密码的其他讨论。