module PDF::Core
Public Instance Methods
encrypted_pdf_object(obj, key, id, gen, in_content_stream = false)
click to toggle source
Like pdf_object, but returns an encrypted result if required. For direct objects, requires the object identifier and generation number from the indirect object referencing obj.
@private
# File lib/prawn/security.rb, line 217 def encrypted_pdf_object(obj, key, id, gen, in_content_stream = false) case obj when Array '[' << obj.map do |e| encrypted_pdf_object(e, key, id, gen, in_content_stream) end.join(' ') << ']' when LiteralString obj = ByteString.new( Prawn::Document::Security.encrypt_string(obj, key, id, gen) ).gsub(/[\\\n\(\)]/) { |m| "\\#{m}" } "(#{obj})" when Time obj = obj.strftime('D:%Y%m%d%H%M%S%z').chop.chop + "'00'" obj = ByteString.new( Prawn::Document::Security.encrypt_string(obj, key, id, gen) ).gsub(/[\\\n\(\)]/) { |m| "\\#{m}" } "(#{obj})" when String pdf_object( ByteString.new( Prawn::Document::Security.encrypt_string(obj, key, id, gen) ), in_content_stream ) when ::Hash output = '<< ' obj.each do |k, v| unless k.is_a?(String) || k.is_a?(Symbol) raise PDF::Core::Errors::FailedObjectConversion, 'A PDF Dictionary must be keyed by names' end output << pdf_object(k.to_sym, in_content_stream) << ' ' << encrypted_pdf_object(v, key, id, gen, in_content_stream) << "\n" end output << '>>' when NameTree::Value pdf_object(obj.name) + ' ' + encrypted_pdf_object(obj.value, key, id, gen, in_content_stream) when PDF::Core::OutlineRoot, PDF::Core::OutlineItem encrypted_pdf_object(obj.to_hash, key, id, gen, in_content_stream) else # delegate back to pdf_object pdf_object(obj, in_content_stream) end end