Qpdf : PDFにセキュリティを設定するVBA関数

TOP へ > Qpdf  > *


shi002_2048-0001-13_2048

概要

PDFにユーザーパスワード、オーナーパスワードを設定するVBA関数です。印刷、変更、取り出しの可否に関する詳細なセキュリティ情報の設定も行います。

難しいオプション名、形式、順番を気にせずに "Y" , "N" , "1" を指定するだけで設定出来ます。

Acrobat OLE を使わずに Qpdf を使用して行います。

Qpdf : PDFにセキュリティを設定するVBA関数

 

Qpdf とは

フリーソフト Qpdf を知らない人は先にコチラを御覧ください。

 

形式

 

引数

※以下を見る前に必ずコチラを先に見てください。

  1. 第1引数 : qpdfPara_Password( ) As String  (In)
    • qpdfPara_Password(0):ユーザーパスワードをセット
      PDF文書を開く時に使います。
      未設定は””。
    • qpdfPara_Password(1):オーナーパスワードをセット
      印刷制御、変更不可等のセキュリティ設定に使います。未設定は””。
  2. 第2引数 : qpdfPara_keyLength As Long  (In)
    キーの長さ : 40 , 128 , 256
    のいずれかが必須。
  3. 第3引数 : qpdfPara_Flags( ) As String  (In)
    • キーの長さ=40 の時
      • --print=[yn] : 印刷を
        qpdfPara_Flags(0) = "Y":許可する
        qpdfPara_Flags(0) = "N":許可しない
      • --modify=[yn] : 文書の変更を
        qpdfPara_Flags(1) = "Y":許可する
        qpdfPara_Flags(1) = "N":許可しない
      • --extract=[yn] : テキスト/グラフィックの抽出を
        qpdfPara_Flags(2) = "Y":許可する
        qpdfPara_Flags(2) = "N":許可しない
      • --annotate=[yn] : コメントとフォーム記入と署名
        qpdfPara_Flags(3) = "Y":許可する
        qpdfPara_Flags(3) = "N":許可しない
    • キーの長さ=128 の時
      • --accessibility=[yn] : 視覚障害者へのアクセス
        qpdfPara_Flags(0) = "Y" :許可する
        qpdfPara_Flags(0) = "N" :許可しない
      • --extract=[yn] : テキスト/グラフィックの抽出を
        qpdfPara_Flags(1) = "Y": 許可する
        qpdfPara_Flags(1) = "N": 許可しない
      • --print=print-opt : 印刷アクセスを制御
        qpdfPara_Flags(2) = "3"  下記の値

        1. full:"1".完全な印刷が可能
            高解像度の印刷を意味
        2. low:"2".低解像度の印刷のみを許可
        3. none:"3".印刷を許可しない
      • --modify=modify-opt : 変更アクセスを制御
        qpdfPara_Flags(3) = "5" 下記の値

        1. all:"1".完全な文書の変更を許可
        2. annotate:"2".コメント作成およびフォームの操作を許可
        3. form:"3".フォームフィールドの入力と署名を許可
        4. assembly:"4".文書のアセンブリのみを許可
        5. none:"5".変更を許可しない 
      • --cleartext-metadata : メタデータの暗号化を
        qpdfPara_Flags(4) = "Y":防ぐ
        qpdfPara_Flags(4) = "N":防がない
      • --use-aes=[yn] : AES 暗号化を
        qpdfPara_Flags(5) = "Y":使用する
        qpdfPara_Flags(5) = "N":使用しない
      • --force-V4 : V=4暗号化ハンドラを
        qpdfPara_Flags(6) = "Y": 使用する
        qpdfPara_Flags(6) = "N": 使用しない
    • キーの長さ=256 の時   
      • --accessibility=[yn] : 視覚障害者へのアクセス
        qpdfPara_Flags(0) = "Y" :許可する
        qpdfPara_Flags(0) = "N" :許可しない
      • --extract=[yn] : テキスト/グラフィックの抽出を
        qpdfPara_Flags(1) = "Y": 許可する
        qpdfPara_Flags(1) = "N": 許可しない
      • --print=print-opt : 印刷アクセスを制御
        qpdfPara_Flags(2) = "3"  下記の値

        1. full:"1".完全な印刷が可能
            高解像度の印刷を意味
        2. low:"2".低解像度の印刷のみを許可
        3. none:"3".印刷を許可しない
      • --modify=modify-opt : 変更アクセスを制御
        qpdfPara_Flags(3) = "5" 下記の値

        1. all:"1".完全な文書の変更を許可
        2. annotate:"2".コメント作成およびフォームの操作を許可
        3. form:"3".フォームフィールドの入力と署名を許可
        4. assembly:"4".文書のアセンブリのみを許可
        5. none:"5".変更を許可しない
      • cleartext-metadata : メタデータの暗号化を
        qpdfPara_Flags(4) = "Y":防ぐ
        qpdfPara_Flags(4) = "N":防がない
      • --use-aes=y : AES 暗号化の使用は256ビットキーでは常にオン
        qpdfPara_Flags(5) = "Y":固定 
      • --force-V4 : 256ビットでは利用不可
        qpdfPara_Flags(6) = "N":固定
      • --force-R5 : 非推奨のR=5暗号化を
        qpdfPara_Flags(7) = "Y":使用する
        qpdfPara_Flags(7) = "N":使用しない
  4. 第3引数:qpdfPara_InPdfPath As String  (In)
    入力のPDFファイルのフルパス
     
  5. 第4引数:qpdfPara_InPdfPassword As String  (In)
    入力のPDFファイルのユーザーパスワード。無ければ””。
  6. 第5引数:qpdfPara_OutPdfPath As String  (In)
    出力のPDFファイルのフルパス
  7. 第6引数:qpdfPara_OrverWrite As Boolean  (In)
    出力のPDFファイルが存在した時に上書きをするか?
    True:上書きをする
    False:上書きをしない
  8. 第7引数:strErr As String  (Out)
    エラーメッセージ。エラー無しは””

 

戻り値

無し。

 

関数 / サンプル





事前設定

  1. コチラを参考にQpdf のダウンロードとインストールを行う
  2. Qpdf.exe のフルパスをCON_QPDF_PATHにセット。
  3. デバッグモード:テスト時はgDebugMode = True。実運用時はgDebugMode = False にセット。
  4. Sub Main_Demo() 内のロジックで使わない部分はコメントにセット。
    特にqpdfPara_Flags(x) の編集部分は削除はしない。

サンプル

TEST-3.pdf にオーナーパスワード「abc」を設定し、PS-2T.pdf で出力します。セキュリティ設定は以下の通りです。

  1. キーの長さ:256
  2. 「視覚障害者へのアクセス」を許可する
  3. 「テキスト/グラフィックの抽」を許可しない
  4. 「印刷」を許可しない
  5. 「変更アクセス」まったく許可しない
  6. 「メタデータの暗号化」を防ぐ
  7. 「AES 暗号化の使用は256ビットキー」はオン
  8. 「V=4暗号化ハンドラ」使用しない
  9. 「非推奨のR=5暗号化」は使用する

 

 

結果

Qpdf : PDFにセキュリティを設定するVBA関数

 

注意

  1. オーナーパスワードが未設定の場合、印刷や変更のセキュリティ設定は無視されます。
  2. 全てのオプション1つ1つの動作確認はしてません。よって必ず結果を確認してから実運用する様にしてください。
  3. 入力PDFファイルと出力ファイルが時間のかかるネットワーク上に有る時は、RunCommandLine 内でのループ時間を少し長くし調整して下さい。
  4. Qpdf の各オプションはオプション名を間違わない限り、無視できる部分は無視して正常終了してしまう場合があります。

 

備考

  • Qpdf の「 --encrypt 」オプション内の設定は多く、設定をミスすることが有ります。そこで後々で変更しやすい形の関数を作りました。
  • 各設定の使い方が難しく判らない時は「キーの長さ」を40にして、簡単設定で使用しましょう。
  • VBAのShell 関数の第一引数の文字数に制限が有るみたいだが、255文字で無いことは確かです。それよりも大きい数値でもOKです。
  • VBAのDir 関数でもファイルの存在チックが出来ますがパス長が256文字以上に未対応です。そこで "Scripting.FileSystemObject" のFileExists を使ってファイルの存在チェックを行います。Dir 関数は使わない方がいいです。

 

PDFのセキュリティ

 

< Qpdf へ戻る >

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin