Class: WizRtf::Document
- Inherits:
-
Object
- Object
- WizRtf::Document
- Defined in:
- lib/wiz_rtf/document.rb
Overview
Rtf Document
Creates a new Rtf document specifing the format of the pages.
Example:
doc = WizRtf::Document.new do
text "A Example of Rtf Document", 'text-align' => :center, 'font-family' => 'Microsoft YaHei', 'font-size' => 48, 'font-bold' => true, 'font-italic' => true, 'font-underline' => true
image('h:\eahey.png')
page_break
text "A Table Demo", 'foreground-color' => WizRtf::Color::RED, 'background-color' => '#0f00ff'
table [[{content: WizRtf::Image.new('h:\eahey.png'),rowspan:4},{content:'4',rowspan:4},1,{content:'1',colspan:2}],
[{content:'4',rowspan:3,colspan:2},8],[11]], column_widths:{1=>100,2 => 100,3 => 50,4 => 50,5 => 50} do
add_row [1]
end
end doc.save(‘c:text.rtf’)
Instance Method Summary collapse
-
#color(*rgb) ⇒ Object
Sets the color for the text.
-
#font(name, family = nil, character_set = 0, prq = 2) ⇒ Object
Sets the Font for the text.
- #head(&block) ⇒ Object
-
#image(file) ⇒ Object
Puts a image into the current position within the document.
-
#initialize(options = {}, &block) ⇒ Document
constructor
A new instance of Document.
-
#line_break ⇒ Object
Writes a new line.
-
#page_break ⇒ Object
Writes a page interruption (new page).
-
#render(io) ⇒ Object
Outputs the Complete Rtf Document to a Generic Stream as a Rich Text Format (RTF) *
io
- The Generic IO to Output the RTF Document. -
#save(file) ⇒ Object
Outputs the complete Rtf Document to a file as a Rich Text Format (RTF) *
file
- file path and filename. -
#table(rows = [], options = {}, &block) ⇒ Object
Creates a new Table *
rows
- a table can be thought of as consisting of rows and columns. -
#text(str, styles = {}) ⇒ Object
This will add a string of
str
to the document, starting at the current drawing position.
Constructor Details
#initialize(options = {}, &block) ⇒ Document
Returns a new instance of Document.
26 27 28 29 30 31 32 |
# File 'lib/wiz_rtf/document.rb', line 26 def initialize( = {}, &block) @fonts = [] @colors = [] @parts = [] font 'Courier New' block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given? end |
Instance Method Details
#color(*rgb) ⇒ Object
Sets the color for the text.
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/wiz_rtf/document.rb', line 82 def color(*rgb) color = WizRtf::Color.new(*rgb) if index = @colors.index {|c| c.to_rgb_hex == color.to_rgb_hex} index += 1 else @colors << color index = @colors.size end index end |
#font(name, family = nil, character_set = 0, prq = 2) ⇒ Object
Sets the Font for the text.
72 73 74 75 76 77 78 79 |
# File 'lib/wiz_rtf/document.rb', line 72 def font(name, family = nil, character_set = 0, prq = 2) unless index = @fonts.index {|f| f.name == name} index = @fonts.size opts = WizRtf::Font::FONTS.detect {|f| f[:name] == name} @fonts << WizRtf::Font.new(index, opts[:name], opts[:family], opts[:character], opts[:prq]) end index end |
#head(&block) ⇒ Object
67 68 69 |
# File 'lib/wiz_rtf/document.rb', line 67 def head(&block) block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given? end |
#image(file) ⇒ Object
Puts a image into the current position within the document.
-
file
- image file path and filename.
115 116 117 |
# File 'lib/wiz_rtf/document.rb', line 115 def image(file) @parts << WizRtf::Image.new(file) end |
#line_break ⇒ Object
Writes a new line.
137 138 139 |
# File 'lib/wiz_rtf/document.rb', line 137 def line_break @parts << WizRtf::Cmd.new(:par) end |
#page_break ⇒ Object
Writes a page interruption (new page)
142 143 144 |
# File 'lib/wiz_rtf/document.rb', line 142 def page_break @parts << WizRtf::Cmd.new(:page) end |
#render(io) ⇒ Object
Outputs the Complete Rtf Document to a Generic Stream as a Rich Text Format (RTF)
-
io
- The Generic IO to Output the RTF Document
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/wiz_rtf/document.rb', line 36 def render(io) io.group do io.cmd :rtf, 1 io.cmd :ansi io.cmd :ansicpg, 2052 io.cmd :deff, 0 io.group do io.cmd :fonttbl @fonts.each do |font| font.render(io) end end io.group do io.cmd :colortbl io.delimit @colors.each do |color| color.render(io) end end @parts.each do |part| part.render(io) end end end |
#save(file) ⇒ Object
Outputs the complete Rtf Document to a file as a Rich Text Format (RTF)
-
file
- file path and filename.
63 64 65 |
# File 'lib/wiz_rtf/document.rb', line 63 def save(file) File.open(file, 'w') { |file| render(WizRtf::RtfIO.new(file)) } end |
#table(rows = [], options = {}, &block) ⇒ Object
Creates a new Table
-
rows
- a table can be thought of as consisting of rows and columns.
Options:
-
column_widths
- sets the widths of the Columns.
Example:
table [
[{content: WizRtf::Image.new('h:\eahey.png'),rowspan:4},{content:'4',rowspan:4},1,{content:'1',colspan:2}],
[{content:'4',rowspan:3,colspan:2},8],[11]
], column_widths:{1=>100,2 => 100,3 => 50,4 => 50,5 => 50} do
add_row [1]
end
132 133 134 |
# File 'lib/wiz_rtf/document.rb', line 132 def table(rows = [], = {}, &block) @parts << WizRtf::Table.new(rows, , &block) end |
#text(str, styles = {}) ⇒ Object
This will add a string of str
to the document, starting at the current drawing position.
Styles:
-
text-align
- sets the horizontal alignment of the text. optional values::left
,:center
,:right
-
font-family
- set the font family of the text. optional values: -
font-size
- set font size of the text. -
font-bold
- setting the value true for bold of the text. -
font-italic
- setting the value true for italic of the text. -
font-underline
- setting the value true for underline of the text.
Example:
text “A Example of Rtf Document”, ‘text-align’ => :center, ‘font-family’ => ‘Microsoft YaHei’, ‘font-size’ => 48, ‘font-bold’ => true, ‘font-italic’ => true, ‘font-underline’ => true
106 107 108 109 110 111 |
# File 'lib/wiz_rtf/document.rb', line 106 def text(str, styles = {}) styles['foreground-color'] = color(styles['foreground-color']) if styles['foreground-color'] styles['background-color'] = color(styles['background-color']) if styles['background-color'] styles['font-family'] = font(styles['font-family']) if styles['font-family'] @parts << WizRtf::Text.new(str, styles) end |