这是 this Ubuntu question .

我有一些PDF文件已经发送给我,用密码加密,这恰好是相同的所有PDF为简单。当我将这些文件存储在永久性档案中时,我没有理由保留密码,也没有理由每次打开这些文件时都键入密码。

我可以使用链接的Q&A构建一个基于Docker的解决方案来从pdf文件中删除密码,或者我可以在这里询问Windows 10是否也可以这样做。

我有机会 choco 如果我需要一些包裹。

最佳回复

我想我做到了

第一步:使用 qpdf .

作为巧克力用户

choco install qpdf

其次,使用下面的PowerShell脚本(我无法并行化它,因为PS给了我一个错误)。每个文件需要几秒钟

$children = Get-ChildItem # Save files in a variable. Piping the rest of the script from Get-ChildItem was a bad idea on first execution
$children | ForEach-Object {
           Write-Debug "Working on $_.Name"; #Doesn't actually display a lot
           $fileName =[System.IO.Path]::GetFileNameWithoutExtension($_.Name); #Strip name, we will append "tmp"
           $ext =[System.IO.Path]::GetExtension($_.Name);
           $tempFile = $fileName + "_tmp" +  $ext; # Append "_tmp"
           Move-Item -Path $_.Name -Destination $tempFile; "Move the file to a temporary location
           qpdf --password=[THE-PASSWORD] --decrypt $tempFile $_.Name; #Use qpdf to decrypt it, save in original location
           Remove-Item $tempFile #Remove temporary file
 }

我非常有信心将脚本疯狂地运行到生产环境中,因为我有一个强大的备份,我必须恢复它几次。

建议周围所有人在现场运行前进行备份。

如果文件未加密,qpdf将不会执行任何操作。

我会相应地修改这个问题,但是脚本假设所有文件的密码都是相同的