Class: HexaPDF::Type::Form
- Inherits:
-
Stream
- Object
- Object
- Dictionary
- Stream
- HexaPDF::Type::Form
- 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
-
#source_path ⇒ Object
Returns the path to the PDF file that was used when creating the form object.
Attributes inherited from Object
#data, #document, #must_be_indirect
Instance Method Summary collapse
-
#box ⇒ Object
Returns the rectangle defining the bounding box of the form.
-
#canvas ⇒ Object
Returns the canvas for the form XObject.
-
#contents ⇒ Object
Returns the contents of the form XObject.
-
#contents=(data) ⇒ Object
Replaces the contents of the form XObject with the given string.
-
#process_contents(processor, original_resources: nil) ⇒ Object
Processes the content stream of the form XObject with the given processor object.
-
#resources ⇒ Object
Returns the resource dictionary which is automatically created if it doesn’t exist.
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, define_type, #delete, #each, each_field, #empty?, field, #key?, #to_h, type, #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_path ⇒ Object
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).
68 69 70 |
# File 'lib/hexapdf/type/form.rb', line 68 def source_path @source_path end |
Instance Method Details
#box ⇒ Object
Returns the rectangle defining the bounding box of the form.
71 72 73 |
# File 'lib/hexapdf/type/form.rb', line 71 def box self[:BBox] end |
#canvas ⇒ Object
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!
117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/hexapdf/type/form.rb', line 117 def canvas document.cache(@data, :canvas) do 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) canvas end end |
#contents ⇒ Object
Returns the contents of the form XObject.
Note: This is the same as #stream but here for interface compatibility with Page.
78 79 80 |
# File 'lib/hexapdf/type/form.rb', line 78 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.
85 86 87 |
# File 'lib/hexapdf/type/form.rb', line 85 def contents=(data) self.stream = data end |
#process_contents(processor, original_resources: nil) ⇒ Object
Processes the content stream of the form XObject with the given processor object.
The original_resources
argument has to be set to a page’s resources if this form XObject is processed as part of this page.
See: HexaPDF::Content::Processor
100 101 102 103 104 105 106 107 108 109 |
# File 'lib/hexapdf/type/form.rb', line 100 def process_contents(processor, original_resources: nil) processor.resources = if self[:Resources] self[:Resources] elsif original_resources original_resources else document.wrap({}, type: :XXResources) end Content::Parser.parse(contents, processor) end |
#resources ⇒ Object
Returns the resource dictionary which is automatically created if it doesn’t exist.
90 91 92 |
# File 'lib/hexapdf/type/form.rb', line 90 def resources self[:Resources] ||= document.wrap({}, type: :XXResources) end |