Module: Prawn
- Extended by:
- Prawn
- Included in:
- Prawn
- Defined in:
- lib/prawn/stamp.rb,
lib/prawn/core.rb,
lib/prawn/font.rb,
lib/prawn/text.rb,
lib/prawn/errors.rb,
lib/prawn/images.rb,
lib/prawn/outline.rb,
lib/prawn/document.rb,
lib/prawn/encoding.rb,
lib/prawn/font/afm.rb,
lib/prawn/font/ttf.rb,
lib/prawn/graphics.rb,
lib/prawn/repeater.rb,
lib/prawn/text/box.rb,
lib/prawn/core/page.rb,
lib/prawn/core/text.rb,
lib/prawn/name_tree.rb,
lib/prawn/reference.rb,
lib/prawn/font/dfont.rb,
lib/prawn/images/jpg.rb,
lib/prawn/images/png.rb,
lib/prawn/pdf_object.rb,
lib/prawn/byte_string.rb,
lib/prawn/measurements.rb,
lib/prawn/document/span.rb,
lib/prawn/graphics/dash.rb,
lib/prawn/graphics/color.rb,
lib/prawn/literal_string.rb,
lib/prawn/core/object_store.rb,
lib/prawn/document/snapshot.rb,
lib/prawn/document/internals.rb,
lib/prawn/graphics/cap_style.rb,
lib/prawn/document/column_box.rb,
lib/prawn/graphics/join_style.rb,
lib/prawn/document/annotations.rb,
lib/prawn/document/bounding_box.rb,
lib/prawn/document/destinations.rb,
lib/prawn/graphics/transparency.rb,
lib/prawn/document/page_geometry.rb,
lib/prawn/document/graphics_state.rb,
lib/prawn/graphics/transformation.rb
Overview
transformation.rb: Implements rotate, translate, skew, scale and a generic
transformation_matrix
Copyright January 2010, Michael Witrant. All Rights Reserved.
This is free software. Please see the LICENSE and COPYING files for details.
Defined Under Namespace
Modules: Configurable, Core, Encoding, Errors, Graphics, Images, Measurements, NameTree, Stamp, Text Classes: ByteString, Document, Font, LiteralString, Outline, OutlineItem, OutlineRoot, Reference, Repeater
Constant Summary collapse
- BASEDIR =
The base source directory for Prawn as installed on the system
File.(File.join(dir, '..', '..'))
- VERSION =
"0.8.4"
Instance Attribute Summary collapse
-
#debug ⇒ Object
Whe set to true, Prawn will verify hash options to ensure only valid keys are used.
Class Method Summary collapse
-
.PdfObject(obj, in_content_stream = false) ⇒ Object
Serializes Ruby objects to their PDF equivalents.
-
.Reference(*args, &block) ⇒ Object
:nodoc:.
Instance Method Summary collapse
Instance Attribute Details
#debug ⇒ Object
Whe set to true, Prawn will verify hash options to ensure only valid keys are used. Off by default.
Example:
>> Prawn::Document.new(:tomato => "Juicy")
Prawn::Errors::UnknownOption:
Detected unknown option(s): [:tomato]
Accepted options are: [:page_size, :page_layout, :left_margin, ...]
47 48 49 |
# File 'lib/prawn/core.rb', line 47 def debug @debug end |
Class Method Details
.PdfObject(obj, in_content_stream = false) ⇒ Object
Serializes Ruby objects to their PDF equivalents. Most primitive objects will work as expected, but please note that Name objects are represented by Ruby Symbol objects and Dictionary objects are represented by Ruby hashes (keyed by symbols)
Examples:
PdfObject(true) #=> "true"
PdfObject(false) #=> "false"
PdfObject(1.2124) #=> "1.2124"
PdfObject("foo bar") #=> "(foo bar)"
PdfObject(:Symbol) #=> "/Symbol"
PdfObject(["foo",:bar, [1,2]]) #=> "[foo /bar [1 2]]"
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/prawn/pdf_object.rb', line 31 def PdfObject(obj, in_content_stream = false) case(obj) when NilClass then "null" when TrueClass then "true" when FalseClass then "false" when Numeric then String(obj) when Array "[" << obj.map { |e| PdfObject(e, in_content_stream) }.join(' ') << "]" when Prawn::LiteralString obj = obj.gsub(/[\\\n\(\)]/) { |m| "\\#{m}" } "(#{obj})" when Time obj = obj.strftime("D:%Y%m%d%H%M%S%z").chop.chop + "'00'" obj = obj.gsub(/[\\\n\(\)]/) { |m| "\\#{m}" } "(#{obj})" when Prawn::ByteString "<" << obj.unpack("H*").first << ">" when String obj = "\xFE\xFF" + obj.unpack("U*").pack("n*") unless in_content_stream "<" << obj.unpack("H*").first << ">" when Symbol if (obj = obj.to_s) =~ /\s/ raise Prawn::Errors::FailedObjectConversion, "A PDF Name cannot contain whitespace" else "/" << obj end when Hash output = "<< " obj.each do |k,v| unless String === k || Symbol === k raise Prawn::Errors::FailedObjectConversion, "A PDF Dictionary must be keyed by names" end output << PdfObject(k.to_sym, in_content_stream) << " " << PdfObject(v, in_content_stream) << "\n" end output << ">>" when Prawn::Reference obj.to_s when Prawn::NameTree::Node PdfObject(obj.to_hash) when Prawn::NameTree::Value PdfObject(obj.name) + " " + PdfObject(obj.value) when Prawn::OutlineRoot, Prawn::OutlineItem PdfObject(obj.to_hash) else raise Prawn::Errors::FailedObjectConversion, "This object cannot be serialized to PDF" end end |
Instance Method Details
#verify_options(accepted, actual) ⇒ Object
:nodoc:
49 50 51 52 53 54 55 56 57 |
# File 'lib/prawn/core.rb', line 49 def (accepted, actual) #:nodoc: return unless debug || $DEBUG unless (act=Set[*actual.keys]).subset?(acc=Set[*accepted]) raise Prawn::Errors::UnknownOption, "\nDetected unknown option(s): #{(act - acc).to_a.inspect}\n" << "Accepted options are: #{accepted.inspect}" end yield if block_given? end |