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.