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
この記事が気に入ったらサポートをしてみませんか?