環境:
* Mac OS X Snow Leopard (MacBook Air [MC506J/A])
* Ruby 1.8.7
* Prawn 0.8.4

Prawn::Document::Security モジュールの encrypt_document メソッドで設定できる。
こんな感じ。


#!/usr/bin/env ruby
$KCODE='u'
 
require 'rubygems'
require 'prawn'
require 'prawn/security'
 
pdf = Prawn::Document.new
 
pdf.text "Hello, world"
pdf.encrypt_document :permissions => {
  :print_document => false,
#  :modify_document => false,
  :modify_contents => false,
  :copy_contents   => false,
  :modify_annotations => false,
}
 
pdf.render_file("ps.pdf")

ドキュメント Module: Prawn::Document::Security には modify_document というパラメータが紹介されているがこれを指定するとエラーが発生する。ちなみにドキュメントのバージョンは0.10.2だけど、0.8.4でも0.10.2でも同じくエラー発生。

解決策を探してたら、

「:modify_document」でなく「:modify_contents」が正しそう

prawn/security :permissions - noritsuguの日記

ということらしい。。。

prawnのソースコードをすぐに参照できるところに置いといたほうがいいかも。

出力されたPDFファイルは、Adobe Reader 9 のメニューから [文書] → [セキュリティ] → [セキュリティプロパティを表示] → [詳細を表示] でセキュリティ情報が見れる。

見てみるとこんな感じ。

セキュリティ方法: パスワードによるセキュリティ
文書を開くパスワード: はい
権限パスワード: はい
暗号化レベル 40-bit RC4

他の項目については以下の表にまとめてみた。
それぞれのパラメータを true に設定した際にどの項目が変化するかがわかるように書いてある。
4つのパラメータ全部に false を指定すると以下の表の項目がすべて「許可しない」状態になる。

 print_documentmodify_contentscopy_contentsmodify_annotations
印刷高解像度許可しない許可しない許可しない
文書の変更許可しない許可許可しない許可しない
注釈許可しない許可しない許可しない許可
フォームフィールドの入力と署名許可しない許可許可しない許可
文書アセンブリ許可しない許可許可しない許可しない
内容のコピー許可しない許可しない許可許可しない
アクセシビリティを有効にする許可しない許可しない許可許可しない
ページの抽出許可しない許可しない許可しない許可しない

項目の意味とかは以下のページが参考になる。

* PDFファイルのセキュリティ設定例
* PDF文書情報設定 セキュリティについて | ブレインセラーズ・ドットコム

《 PDFファイルのセキュリティ設定項目一覧 》
#セキュリティ設定項目説明
(1)セキュリティ方法 「セキュリティなし」の他、「パスワードによるセキュリティ」「デジタルID(証明書)によるセキュリティ」等。
(2)互換性があるバージョン 暗号化方法の種類。
「Acrobat 3.0およびそれ以降」は40-bit RC4、「Acrobat 5.0およびそれ以降」及び「Acrobat 6.0およびそれ以降」は128-bit RC4、「Acrobat 7.0およびそれ以降」は128-bit AES。
(3)文書を開くパスワード PDFファイルを開く(参照する)際に入力するパスワード。
(4)権限パスワード PDFファイルのセキュリティ設定を変更する際に入力するパスワード。
(5)印刷 印刷できるレベルの設定、許可しない/低解像度のみ印刷許可/任意の解像度で印刷許可 が設定可能。
(6)文書の変更 文書の編集操作可否。
(7)文書アセンブリ ページの挿入/削除/回転、しおりとサムネールの作成の可否。
(8)内容のコピーと抽出 内容の選択/コピーの可否
(9)アクセシビリティのための内容の抽出 視覚に障碍を持つユーザに対して、スクリーンリーダ(読み上げ)の利用可否。
(10)ページの抽出 ページの抽出可否。
(11)注釈 注釈の追加/編集の可否。
(12)フォームフィールドの入力
(注1)
フォームに対する入力可否。
(13)署名
(注1)
既存の署名フィールドへの署名可否。
(14)テンプレートページの作成
(注1) (注2)
コンテンツの動的な作成等に利用するテンプレートページの作成の可否。
  1. (注1)「セキュリティ方法」に「パスワード」、「互換性があるバージョン」に「Acrobat 5.0~」を選択した場合のみ設定可能です。
  2. (注2)Adobe Acrobat にのみ表示/設定可能なセキュリティ項目です。
PDF文書情報設定 セキュリティについて | ブレインセラーズ・ドットコム

tags: Ruby Prawn zurazure

Posted by NI-Lab. (@nilab)