lib/wiz_rtf/document.rb in wiz_rtf-0.6.7 vs lib/wiz_rtf/document.rb in wiz_rtf-0.6.8

- old
+ new

@@ -7,11 +7,11 @@ module WizRtf # = Rtf Document # # Creates a new Rtf document specifing the format of the pages. # == Example: - # + # ```ruby # 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' @@ -19,11 +19,11 @@ # [{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') - # + # ``` class Document def initialize(options = {}, &block) @fonts = [] @colors = [] @parts = [] @@ -39,19 +39,32 @@ io.cmd :ansi io.cmd :ansicpg, 2052 io.cmd :deff, 0 io.group do io.cmd :fonttbl - @fonts.each do |font| - font.render(io) + @fonts.each_with_index do |font, index| + io.group do + io.delimit do + io.cmd :f, index + io.cmd font.family + io.cmd :fprq, font.pitch + io.cmd :fcharset, font.character_set + io.write ' ' + io.write font.name + end + end end end io.group do io.cmd :colortbl io.delimit @colors.each do |color| - color.render(io) + io.delimit do + io.cmd :red, color.red + io.cmd :green, color.green + io.cmd :blue, color.blue + end end end @parts.each do |part| part.render(io) end @@ -67,15 +80,19 @@ def head(&block) block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given? end # Sets the Font for the text. - def font(name, family = nil, character_set = 0, prq = 2) + def font(name, family = nil, character_set = 0, pitch = 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]) + if opts + @fonts << WizRtf::Font.new(opts[:name], opts[:family], opts[:character], opts[:pitch]) + else + @fonts << WizRtf::Font.new(name, family, character_set, pitch) + end end index end # Sets the color for the text. @@ -92,11 +109,15 @@ # 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-family+ - set the font family of the text. optional values: 'Arial', 'Arial Black', 'Arial Narrow','Bitstream Vera Sans Mono', + # 'Bitstream Vera Sans','Bitstream Vera Serif','Book Antiqua','Bookman Old Style','Castellar','Century Gothic', + # 'Comic Sans MS','Courier New','Franklin Gothic Medium','Garamond','Georgia','Haettenschweiler','Impact','Lucida Console' + # 'Lucida Sans Unicode','Microsoft Sans Serif','Monotype Corsiva','Palatino Linotype','Papyrus','Sylfaen','Symbol' + # 'Tahoma','Times New Roman','Trebuchet MS','Verdana'. # * +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: @@ -119,17 +140,17 @@ # 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: - # + # ```ruby # 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 - # + # ``` def table(rows = [],options = {}, &block) @parts << WizRtf::Table.new(rows, options, &block) end # Writes a new line.