Class: Origami::Page
- Inherits:
-
Dictionary
- Object
- Hash
- Dictionary
- Origami::Page
- Includes:
- ResourcesHolder, StandardObject
- Defined in:
- lib/origami/page.rb,
lib/origami/graphics/xobject.rb
Overview
class ContentStream
Defined Under Namespace
Modules: Format Classes: AdditionalActions, BoxColorInformation, BoxStyle, NavigationNode
Constant Summary
Constants included from StandardObject
StandardObject::DEFAULT_ATTRIBUTES
Constants inherited from Dictionary
Constants included from Object
Instance Attribute Summary
Attributes inherited from Dictionary
#names_cache, #strings_cache, #xref_cache
Attributes included from Object
#file_offset, #generation, #no, #objstm_offset, #parent
Instance Method Summary collapse
-
#add_annotation(*annotations) ⇒ Object
Add an Annotation to the Page.
-
#add_flash_application(swfspec, params = {}) ⇒ Object
Embed a SWF Flash application in the page.
-
#annotations ⇒ Object
Returns the array of Annotation objects of the Page.
-
#content_streams ⇒ Object
Returns an Array of ContentStreams for the Page.
-
#draw_image ⇒ Object
TODO :nodoc:.
-
#draw_line(from, to, attr = {}) ⇒ Object
See ContentStream#draw_line.
-
#draw_polygon(coords = [], attr = {}) ⇒ Object
See ContentStream#draw_polygon.
-
#draw_rectangle(x, y, width, height, attr = {}) ⇒ Object
See ContentStream#draw_rectangle.
-
#each_annotation ⇒ Object
Iterate through each Annotation of the Page.
-
#each_content_stream ⇒ Object
Iterates over all the ContentStreams of the Page.
-
#initialize(hash = {}, parser = nil) ⇒ Page
constructor
A new instance of Page.
-
#onClose(action) ⇒ Object
Will execute an action when the page is closed.
-
#onNavigateBackward(action) ⇒ Object
Will execute an action when navigating backward from this page.
-
#onNavigateForward(action) ⇒ Object
Will execute an action when navigating forward from this page.
-
#onOpen(action) ⇒ Object
Will execute an action when the page is opened.
-
#paint_shading(shade) ⇒ Object
TODO :nodoc:.
- #pre_build ⇒ Object
-
#render(engine) ⇒ Object
:nodoc:.
-
#set_dash_pattern(pattern) ⇒ Object
See ContentStream#set_dash_pattern.
-
#set_fill_color(color) ⇒ Object
See ContentStream#set_fill_color.
-
#set_line_cap(cap) ⇒ Object
See ContentStream#set_line_cap.
-
#set_line_join(join) ⇒ Object
See ContentStream#set_line_join.
-
#set_line_width(width) ⇒ Object
See ContentStream#set_line_width.
-
#set_stroke_color(color) ⇒ Object
See ContentStream#set_stroke_color.
-
#set_text_char_spacing(char_spacing) ⇒ Object
See ContentStream#set_text_char_spacing.
-
#set_text_font(_font, _size) ⇒ Object
TODO :nodoc:.
-
#set_text_leading(leading) ⇒ Object
See ContentStream#set_text_leading.
-
#set_text_pos(tx, ty) ⇒ Object
See ContentStream#set_text_pos.
-
#set_text_rendering(rendering) ⇒ Object
See ContentStream#set_text_rendering.
-
#set_text_rise(rise) ⇒ Object
See ContentStream#set_text_rise.
-
#set_text_scale(scaling) ⇒ Object
See ContentStream#set_text_scale.
-
#set_text_word_spacing(word_spacing) ⇒ Object
See ContentStream#set_text_word_spacing.
-
#write(text, attr = {}) ⇒ Object
See ContentStream#write.
Methods included from ResourcesHolder
#add_colorspace, #add_extgstate, #add_font, #add_pattern, #add_properties, #add_resource, #add_shading, #add_xobject, #colorspaces, #each_colorspace, #each_extgstate, #each_font, #each_pattern, #each_property, #each_resource, #each_shading, #each_xobject, #extgstates, #fonts, #patterns, #properties, #resources, #shadings, #xobjects
Methods included from StandardObject
Methods inherited from Dictionary
#[], #[]=, add_type_signature, #cast_to, #copy, #delete, guess_type, hint_type, #key?, #map!, #merge, parse, #to_h, #to_obfuscated_str, #to_s
Methods included from FieldAccessor
#method_missing, #respond_to_missing?
Methods included from Object
#<=>, #cast_to, #copy, #document, #export, included, #indirect?, #indirect_parent, #logicalize, #logicalize!, #native_type, parse, #post_build, #reference, #set_document, #set_indirect, skip_until_next_obj, #solve, #to_o, #to_s, #type, typeof, #version_required, #xrefs
Constructor Details
#initialize(hash = {}, parser = nil) ⇒ Page
Returns a new instance of Page.
570 571 572 573 574 |
# File 'lib/origami/page.rb', line 570 def initialize(hash = {}, parser = nil) super(hash, parser) set_indirect(true) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Origami::FieldAccessor
Instance Method Details
#add_annotation(*annotations) ⇒ Object
Add an Annotation to the Page.
613 614 615 616 617 618 619 620 621 622 623 624 |
# File 'lib/origami/page.rb', line 613 def add_annotation(*annotations) unless annotations.all?{|annot| annot.is_a?(Annotation) or annot.is_a?(Reference)} raise TypeError, "Only Annotation objects must be passed." end self.Annots ||= [] annotations.each do |annot| annot.solve[:P] = self if self.indirect? self.Annots << annot end end |
#add_flash_application(swfspec, params = {}) ⇒ Object
Embed a SWF Flash application in the page.
650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 |
# File 'lib/origami/page.rb', line 650 def add_flash_application(swfspec, params = {}) = { windowed: false, transparent: false, navigation_pane: false, toolbar: false, pass_context_click: false, activation: Annotation::RichMedia::Activation::PAGE_OPEN, deactivation: Annotation::RichMedia::Deactivation::PAGE_CLOSE, flash_vars: nil } .update(params) annot = create_richmedia(:Flash, swfspec, ) add_annotation(annot) annot end |
#annotations ⇒ Object
Returns the array of Annotation objects of the Page.
643 644 645 |
# File 'lib/origami/page.rb', line 643 def annotations self.each_annotation.to_a end |
#content_streams ⇒ Object
Returns an Array of ContentStreams for the Page.
606 607 608 |
# File 'lib/origami/page.rb', line 606 def content_streams self.each_content_stream.to_a end |
#draw_image ⇒ Object
TODO :nodoc:
464 465 466 |
# File 'lib/origami/graphics/xobject.rb', line 464 def draw_image raise NotImplementedError end |
#draw_line(from, to, attr = {}) ⇒ Object
See ContentStream#draw_line.
469 470 471 |
# File 'lib/origami/graphics/xobject.rb', line 469 def draw_line(from, to, attr = {}) last_content_stream.draw_line(from, to, attr); self end |
#draw_polygon(coords = [], attr = {}) ⇒ Object
See ContentStream#draw_polygon.
474 475 476 |
# File 'lib/origami/graphics/xobject.rb', line 474 def draw_polygon(coords = [], attr = {}) last_content_stream.draw_polygon(coords, attr); self end |
#draw_rectangle(x, y, width, height, attr = {}) ⇒ Object
See ContentStream#draw_rectangle.
479 480 481 |
# File 'lib/origami/graphics/xobject.rb', line 479 def draw_rectangle(x, y, width, height, attr = {}) last_content_stream.draw_rectangle(x, y, width, height, attr); self end |
#each_annotation ⇒ Object
Iterate through each Annotation of the Page.
629 630 631 632 633 634 635 636 637 638 |
# File 'lib/origami/page.rb', line 629 def each_annotation annots = self.Annots return enum_for(__method__) { annots.is_a?(Array) ? annots.length : 0 } unless block_given? return unless annots.is_a?(Array) annots.each do |annot| yield(annot.solve) end end |
#each_content_stream ⇒ Object
Iterates over all the ContentStreams of the Page.
585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 |
# File 'lib/origami/page.rb', line 585 def each_content_stream contents = self.Contents return enum_for(__method__) do case contents when Array then contents.length when Stream then 1 else 0 end end unless block_given? case contents when Stream then yield(contents) when Array then contents.each { |stm| yield(stm.solve) } end end |
#onClose(action) ⇒ Object
Will execute an action when the page is closed.
687 688 689 690 691 692 693 694 695 696 |
# File 'lib/origami/page.rb', line 687 def onClose(action) unless action.is_a?(Action) or action.is_a?(Reference) raise TypeError, "An Action object must be passed." end self.AA ||= Page::AdditionalActions.new self.AA.C = action self end |
#onNavigateBackward(action) ⇒ Object
Will execute an action when navigating backward from this page.
715 716 717 718 719 720 721 722 723 724 |
# File 'lib/origami/page.rb', line 715 def onNavigateBackward(action) #:nodoc: unless action.is_a?(Action) or action.is_a?(Reference) raise TypeError, "An Action object must be passed." end self.PresSteps ||= NavigationNode.new self.PresSteps.PA = action self end |
#onNavigateForward(action) ⇒ Object
Will execute an action when navigating forward from this page.
701 702 703 704 705 706 707 708 709 710 |
# File 'lib/origami/page.rb', line 701 def onNavigateForward(action) #:nodoc: unless action.is_a?(Action) or action.is_a?(Reference) raise TypeError, "An Action object must be passed." end self.PresSteps ||= NavigationNode.new self.PresSteps.NA = action self end |
#onOpen(action) ⇒ Object
Will execute an action when the page is opened.
673 674 675 676 677 678 679 680 681 682 |
# File 'lib/origami/page.rb', line 673 def onOpen(action) unless action.is_a?(Action) or action.is_a?(Reference) raise TypeError, "An Action object must be passed." end self.AA ||= Page::AdditionalActions.new self.AA.O = action self end |
#paint_shading(shade) ⇒ Object
TODO :nodoc:
489 490 491 |
# File 'lib/origami/graphics/xobject.rb', line 489 def paint_shading(shade) last_content_stream.paint_shading(shade) end |
#pre_build ⇒ Object
576 577 578 579 580 |
# File 'lib/origami/page.rb', line 576 def pre_build self.Resources = Resources.new.pre_build unless self.has_key?(:Resources) super end |
#render(engine) ⇒ Object
:nodoc:
452 453 454 455 456 457 458 459 460 461 |
# File 'lib/origami/graphics/xobject.rb', line 452 def render(engine) #:nodoc: contents = self.Contents contents = [ contents ] unless contents.is_a? Array contents.each do |stream| stream = stream.cast_to(ContentStream) unless stream.is_a? ContentStream stream.render(engine) end end |
#set_dash_pattern(pattern) ⇒ Object
See ContentStream#set_dash_pattern.
544 545 546 |
# File 'lib/origami/graphics/xobject.rb', line 544 def set_dash_pattern(pattern) last_content_stream.set_dash_pattern(pattern); self end |
#set_fill_color(color) ⇒ Object
See ContentStream#set_fill_color.
534 535 536 |
# File 'lib/origami/graphics/xobject.rb', line 534 def set_fill_color(color) last_content_stream.set_fill_color(color); self end |
#set_line_cap(cap) ⇒ Object
See ContentStream#set_line_cap.
554 555 556 |
# File 'lib/origami/graphics/xobject.rb', line 554 def set_line_cap(cap) last_content_stream.set_line_cap(cap); self end |
#set_line_join(join) ⇒ Object
See ContentStream#set_line_join.
559 560 561 |
# File 'lib/origami/graphics/xobject.rb', line 559 def set_line_join(join) last_content_stream.set_line_join(join); self end |
#set_line_width(width) ⇒ Object
See ContentStream#set_line_width.
549 550 551 |
# File 'lib/origami/graphics/xobject.rb', line 549 def set_line_width(width) last_content_stream.set_line_width(width); self end |
#set_stroke_color(color) ⇒ Object
See ContentStream#set_stroke_color.
539 540 541 |
# File 'lib/origami/graphics/xobject.rb', line 539 def set_stroke_color(color) last_content_stream.set_stroke_color(color); self end |
#set_text_char_spacing(char_spacing) ⇒ Object
See ContentStream#set_text_char_spacing.
529 530 531 |
# File 'lib/origami/graphics/xobject.rb', line 529 def set_text_char_spacing(char_spacing) last_content_stream.set_text_char_spacing(char_spacing); self end |
#set_text_font(_font, _size) ⇒ Object
TODO :nodoc:
494 495 496 |
# File 'lib/origami/graphics/xobject.rb', line 494 def set_text_font(_font, _size) raise NotImplementedError end |
#set_text_leading(leading) ⇒ Object
See ContentStream#set_text_leading.
504 505 506 |
# File 'lib/origami/graphics/xobject.rb', line 504 def set_text_leading(leading) last_content_stream.set_text_leading(leading); self end |
#set_text_pos(tx, ty) ⇒ Object
See ContentStream#set_text_pos.
499 500 501 |
# File 'lib/origami/graphics/xobject.rb', line 499 def set_text_pos(tx, ty) last_content_stream.set_text_pos(tx, ty); self end |
#set_text_rendering(rendering) ⇒ Object
See ContentStream#set_text_rendering.
509 510 511 |
# File 'lib/origami/graphics/xobject.rb', line 509 def set_text_rendering(rendering) last_content_stream.set_text_rendering(rendering); self end |
#set_text_rise(rise) ⇒ Object
See ContentStream#set_text_rise.
514 515 516 |
# File 'lib/origami/graphics/xobject.rb', line 514 def set_text_rise(rise) last_content_stream.set_text_rise(rise); self end |
#set_text_scale(scaling) ⇒ Object
See ContentStream#set_text_scale.
519 520 521 |
# File 'lib/origami/graphics/xobject.rb', line 519 def set_text_scale(scaling) last_content_stream.set_text_scale(scaling); self end |
#set_text_word_spacing(word_spacing) ⇒ Object
See ContentStream#set_text_word_spacing.
524 525 526 |
# File 'lib/origami/graphics/xobject.rb', line 524 def set_text_word_spacing(word_spacing) last_content_stream.set_text_word_spacing(word_spacing); self end |
#write(text, attr = {}) ⇒ Object
See ContentStream#write.
484 485 486 |
# File 'lib/origami/graphics/xobject.rb', line 484 def write(text, attr = {}) last_content_stream.write(text, attr); self end |