Module: Prawn::Stamp
- Included in:
 - Document
 
- Defined in:
 - lib/prawn/stamp.rb
 
Overview
The Prawn::Stamp module is used to create content that will be included multiple times in a document. Using a stamp has three advantages over creating content anew each time it is placed on the page:
i.   faster document creation
ii.  smaller final document
iii. faster display on subsequent displays of the repeated
element because the viewer application can cache the rendered
results
Example:
pdf.create_stamp("my_stamp") {
  pdf.fill_circle([10, 15], 5)
  pdf.draw_text("hello world", :at => [20, 10])
}
pdf.stamp("my_stamp")
  Stable API collapse
- 
  
    
      #create_stamp(name, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Creates a re-usable stamp named
name. - 
  
    
      #stamp(name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Renders the stamp named
nameto the page raisesPrawn::Errors::InvalidNameif name.empty? raisesPrawn::Errors::UndefinedObjectNameif no stamp has been created with this name. - 
  
    
      #stamp_at(name, point)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Renders the stamp named
nameat a position offset from the initial coords at which the elements of the stamp was created. 
Instance Method Details
#create_stamp(name, &block) ⇒ Object
Creates a re-usable stamp named name
raises Prawn::Errors::NameTaken if a stamp already exists in this document with this name raises Prawn::Errors::InvalidName if name.empty?
Example:
pdf.create_stamp("my_stamp") {
  pdf.fill_circle([10, 15], 5)
  pdf.draw_text("hello world", :at => [20, 10])
}
  
      78 79 80 81 82  | 
    
      # File 'lib/prawn/stamp.rb', line 78 def create_stamp(name, &block) dictionary = create_stamp_dictionary(name) state.page.stamp_stream(dictionary, &block) end  | 
  
#stamp(name) ⇒ Object
Renders the stamp named name to the page raises Prawn::Errors::InvalidName if name.empty? raises Prawn::Errors::UndefinedObjectName if no stamp has been created with this name
Example:
pdf.create_stamp("my_stamp") {
  pdf.fill_circle([10, 15], 5)
  pdf.text("hello world", :at => [20, 10])
}
pdf.stamp("my_stamp")
  
      42 43 44 45 46 47  | 
    
      # File 'lib/prawn/stamp.rb', line 42 def stamp(name) dictionary_name, dictionary = stamp_dictionary(name) renderer.add_content "/#{dictionary_name} Do" update_annotation_references dictionary.data[:Annots] state.page.xobjects.merge!(dictionary_name => dictionary) end  | 
  
#stamp_at(name, point) ⇒ Object
Renders the stamp named name at a position offset from the initial coords at which the elements of the stamp was created
Example:
pdf.create_stamp("circle") do
  pdf.fill_circle([0, 0], 25)
end
# draws a circle at 100, 100
pdf.stamp_at("circle", [100, 100])
See stamp() for exceptions that might be raised
      62 63 64  | 
    
      # File 'lib/prawn/stamp.rb', line 62 def stamp_at(name, point) translate(point[0], point[1]) { stamp(name) } end  |