見出し画像

PDFにパスワードを掛けたい【数百枚のファイルを一瞬で処理】

PowerShellを使ってPDFファイルにパスワードを掛ける方法を解説します。

環境
 OS:Windows
 プログラム:PowerShell 5.1


1.QPDF のインストール

 PDFのパスワードを解除するためのツールQPDFをインストールします。
インストールは初めの一回だけ行います。

winget install QPDF


2.パスを通す

 qpdfがインストールされているフォルダをエクスプローラーで探して環境変数のPATHに追加します。

$ENV:Path+=";C:\Program Files\qpdf 11.6.3\bin"

だいたいが「C:\Program Files\qpdf 11.6.3\bin」などにあります。11.6.3がバージョン番号ですかね。この作業が地味に面倒なのでインストールはwingetじゃなくて普通にインストーラーをダウンロードして入れた方がいいかもしれません。インストーラーがパスを通してくれるハズなので。
管理者モードでこの作業をすると以後この作業の必要はなくなります。


3.パスワードを掛ける(ファイルが一つの場合)

 パスワードを掛けるときのコマンド例
開く用パスワードが12345678で管理者権限パスワードが87654321

qpdf --encrypt "12345678" "87654321" 256 -- input.pdf output.pdf

input.pdfが元ファイルで、output.pdfが処理後ファイルです。output.pdfを開くとパスワードが掛かっていることが分かります。


もう少し発展させて
印刷禁止、変更禁止、テキストコピー禁止にするときのコマンド例

qpdf --encrypt "12345678" "87654321" 256 --print=none --modify=none --extract=n -- input.pdf output.pdf


コマンド解説

qpdf --encrypt user-password owner-password key-length flags -- infilename outfilename

 --encrypt : --encrypt オプションの開始を意味します
 user-password : 閲覧用の文書を開く用パスワード
 owner-password : 管理者権限パスワード。PDFに印刷、更新、コピー等の許可を設定するパスワードです。
 key-length : キーの長さ 「256」を指定
 flags : 別記
 -- : 最後のハイフン2つ「--」で --encrypt オプションの終了を意味します

flagsについて
--print=[full/low/none] : 印刷アクセスを制御
  full : 完全な印刷が可能
  low : 低解像度の印刷のみを許可
  none : 印刷を許可しない
--modify=[full/annotate/form/assembly/none] : 変更アクセスを制御
  all : 完全な文書の変更を許可
  annotate : コメント作成およびフォームの操作を許可
  form : フォームフィールドの入力と署名を許可
  assembly : 文書のアセンブリのみを許可?
  none : 変更を許可しない
--extract=[y/n] : テキストの抽出を許可



大量のPDFファイルにパスワードを掛けたい場合

コマンドレットGet-ChildItemでファイル一覧を取得してパイプで渡してやれば一度に大量のPDFにパスワードを掛けることができます。
下のコマンド例では「c:\temp」フォルダのPDFファイルにパスワードを掛けて「c:\temp2」フォルダに保存しています。
「c:\temp」フォルダの中にファイルが100個や1000個あってもこの1行のコマンドで処理できます。

Get-ChildItem C:\temp -Filter *.pdf | %{qpdf --encrypt "12345678" "87654321" 256 -- $_ c:\temp2\$_}


#PowerShell #コマンドレット #PDF #パスワード付きPDF #業務効率化 #業務自動化 #プログラミング学習 #プログラミング初心者 #Windows



この記事が気に入ったらサポートをしてみませんか?