web-dev-qa-db-ja.com

PowerShell(またはCMD)でPDFパスワード)を削除する

これは、 このUbuntuの質問 の例示的な重複です。

パスワードを使用して暗号化されたPDFファイルがいくつかあります。これは簡単にするためにすべてのPDFで同じです。 。これらのファイルを永続的なアーカイブに保存するときにパスワードを保持する理由も、ファイルを開くたびにパスワードを入力する理由もありません。

リンクされたQ&Aを使用して、PDFファイルからパスワードを取り除くDockerベースのソリューションを構築できますまたは同じことが可能かどうかをここで尋ねることができますWindows10で。

いくつかのパッケージが必要な場合は、chocoにアクセスできます。

私はそれをしたと思います

ステップ1: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は何もしません。

それに応じて質問を修正しますただし、スクリプトはパスワードを想定していますISすべてのファイルで同じ