Class: HexaPDF::Type::Form

Inherits:
Stream show all
Defined in:
lib/hexapdf/type/form.rb

Overview

Represents a form XObject of a PDF document.

See: PDF1.7 s8.10

Constant Summary

Constants included from DictionaryFields

DictionaryFields::Boolean, DictionaryFields::PDFByteString, DictionaryFields::PDFDate

Constants inherited from Object

Object::NOT_DUPLICATABLE_CLASSES

Instance Attribute Summary collapse

Attributes inherited from Object

#data, #document, #must_be_indirect

Instance Method Summary collapse

Methods inherited from Stream

#must_be_indirect?, #raw_stream, #set_filter, #stream, #stream=, #stream_decoder, #stream_encoder, #stream_source

Methods inherited from Dictionary

#[], #[]=, define_field, #delete, #each, each_field, #empty?, field, #key?, #to_hash, #type

Methods inherited from Object

#<=>, #==, deep_copy, #deep_copy, #document?, #eql?, #gen, #gen=, #hash, #indirect?, #initialize, #inspect, #must_be_indirect?, #null?, #oid, #oid=, #type, #validate, #value, #value=

Constructor Details

This class inherits a constructor from HexaPDF::Object

Instance Attribute Details

#source_pathObject

Returns the path to the PDF file that was used when creating the form object.

This value is only set when the form object was created by using the image loading facility (i.e. when treating a single page PDF file as image) and not when the form object was created in any other way (i.e. manually created or already part of a loaded PDF file).



66
67
68
# File 'lib/hexapdf/type/form.rb', line 66

def source_path
  @source_path
end

Instance Method Details

#boxObject

Returns the rectangle defining the bounding box of the form.



69
70
71
# File 'lib/hexapdf/type/form.rb', line 69

def box
  self[:BBox]
end

#canvasObject

Returns the canvas for the form XObject.

The canvas object is cached once it is created so that its graphics state is correctly retained without the need for parsing its contents.

Note that a canvas can only be retrieved for initially empty form XObjects!



107
108
109
110
111
112
113
114
115
116
117
# File 'lib/hexapdf/type/form.rb', line 107

def canvas
  unless defined?(@canvas)
    unless stream.empty?
      raise HexaPDF::Error, "Cannot create a canvas for a form XObjects with contents"
    end
    @canvas = Content::Canvas.new(self)
    self.stream = @canvas.stream_data
    set_filter(:FlateDecode)
  end
  @canvas
end

#contentsObject

Returns the contents of the form XObject.

Note: This is the same as #stream but here for interface compatibility with Page.



76
77
78
# File 'lib/hexapdf/type/form.rb', line 76

def contents
  stream
end

#contents=(data) ⇒ Object

Replaces the contents of the form XObject with the given string.

Note: This is the same as #stream= but here for interface compatibility with Page.



83
84
85
# File 'lib/hexapdf/type/form.rb', line 83

def contents=(data)
  self.stream = data
end

#process_contents(processor) ⇒ Object

Processes the content streams associated with the page with the given processor object.

See: HexaPDF::Content::Processor



95
96
97
98
99
# File 'lib/hexapdf/type/form.rb', line 95

def process_contents(processor)
  self[:Resources] = {} if self[:Resources].nil?
  processor.resources = self[:Resources]
  Content::Parser.parse(contents, processor)
end

#resourcesObject

Returns the resource dictionary which is automatically created if it doesn’t exist.



88
89
90
# File 'lib/hexapdf/type/form.rb', line 88

def resources
  self[:Resources] ||= document.wrap({}, type: :XXResources)
end