2014/12/02

pdfファイルに一括してパスワードを設定するため、PDFTkをインストール

複数のpdfファイルに一括してパスワードを設定する事が
かなりの頻度で必要になったので、
手持ちのacrobatで何とかしようと思ったが、
9のstandardしかなく、バッチ処理に対応していなかった。


しょうがないので、フリーのツールを探すと
pdftkがメジャーなようで記事がたくさんあるので、とりあえずインストールしてみる。


# wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.i386.rpm
www.pdflabs.com の証明書(発行者: /C=US/O=DigiCert Inc/CN=DigiCert Secure Server CA)の検証に失敗しました:
  発行者の権限を検証できませんでした。
www.pdflabs.com に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。
SSL による接続が確立できません。


なるほど、
# wget --no-check-certificate https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.i386.rpm


保存完了したので、
# yum install --nogpgcheck pdftk-2*
署名無いので、--nogpgcheck で署名なしのオプションつけないと蹴られる。


インストール後の使い方

変換前ファイル mae.pdf
変換後ファイル(任意名称) ato.pdf
スタンプ      stamp.pdf
印刷のみ許可のオプション owner_pw ***** allow printing

pdftk mae.pdf stamp stamp.pdf output ato.pdf owner_pw ***** allow printing

当初、指定のフォルダにファイルを置き、cronで5分間隔で実行すればいいだろうと
考えていたのだが、
利用者から、cronでの自動化だと操作した感が無く、忘れそうだとの事だったので、
今回は、スクリプトシェルにして、phpで動作させた。

++++++ソース converter.sh++++++

#!/bin/sh
# PDFコンバート&パスワード保護 スクリプトシェル
#
#作業  ディレクトリ /home/storage1/AAA/ConvertPdf
#変換後 ディレクトリ /home/storage1/AAA/ConvertedPdf
#スタンプ /home/storage1/AAA//ConvertPdf/sourse/stamp.pdf


cd /home/storage1/AAA/ConvertPdf
for file in *.pdf; do pdftk $file stamp ./sourse/stamp.pdf output /home/storage1/AAA/ConvertedPdf/`date '+%Y-%m-%d-%H%M%S'_`$file owner_pw **** allow printing; done
rm *.pdf


+++++++++++++++++++++++++++

作業内容
ConvertPdfにあるpdfにstamp.pdfをして印刷のみ許可の状態にしたファイルを
先頭に日付を付けてConvertedPdfにコピーし、
ConvertPdfにあるpdfファイルを削除する。

phpに関して
 phpを動かす同じディレクトリにスクリプトシェルを置かないといけない模様。
 (chdirを使ったが、指定のディレクトリに上手く移動してくれないので、 あきらめた。)

shell_execをhtmlspecialcharsで括らないと、中身をうまく認識できないらしく、
スクリプトシェルが動かなかった。
unixのコマンドだとexecだけでも動くようだが、変数などを使っているので、駄目っぽい。


    $command = './converter.sh.sh';
    htmlspecialchars( shell_exec( $command ) ) ;
?>


あとは、form等でボタンをそれなりに作っておく。


動作試験をして、意図するように動いたので、
あとは、stamp等を調整して完了とする。