Namespace

Prawn

Public Instance Methods

EncryptedPdfObject(obj, key, id, gen, in_content_stream=false) click to toggle source

Like PdfObject, but returns an encrypted result if required. For direct objects, requires the object identifier and generation number from the indirect object referencing obj.

     # File lib/prawn/security.rb, line 198
198:   def EncryptedPdfObject(obj, key, id, gen, in_content_stream=false)
199:     case obj
200:     when Array
201:       "[" << obj.map { |e|
202:           EncryptedPdfObject(e, key, id, gen, in_content_stream)
203:       }.join(' ') << "]"
204:     when Prawn::LiteralString
205:       # FIXME: encrypted?
206:       obj = obj.gsub(/[\\\n\(\)]/) { |m| "\\#{m}" }
207:       "(#{obj})"
208:     when Time
209:       # FIXME: encrypted?
210:       obj = obj.strftime("D:%Y%m%d%H%M%S%z").chop.chop + "'00'"
211:       obj = obj.gsub(/[\\\n\(\)]/) { |m| "\\#{m}" }
212:       "(#{obj})"
213:     when String
214:       PdfObject(
215:         ByteString.new(Document::Security.encrypt_string(obj, key, id, gen)),
216:         in_content_stream)
217:     when Hash
218:       output = "<< "
219:       obj.each do |k,v|
220:         unless String === k || Symbol === k
221:           raise Prawn::Errors::FailedObjectConversion,
222:             "A PDF Dictionary must be keyed by names"
223:         end
224:         output << PdfObject(k.to_sym, in_content_stream) << " " <<
225:                   EncryptedPdfObject(v, key, id, gen, in_content_stream) << "\n"
226:       end
227:       output << ">>"
228:     when Prawn::NameTree::Value
229:       PdfObject(obj.name) + " " +
230:         EncryptedPdfObject(obj.value, key, id, gen, in_content_stream)
231:     else # delegate back to PdfObject
232:       PdfObject(obj, in_content_stream)
233:     end
234:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.