wiz_rtf 0.5.5 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/wiz_rtf/color.rb +43 -4
- data/lib/wiz_rtf/document.rb +23 -13
- data/lib/wiz_rtf/font.rb +53 -2
- data/lib/wiz_rtf/text.rb +2 -1
- data/lib/wiz_rtf/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 750294995f94f17825b1d378fdad60a6adb2bfaf
|
4
|
+
data.tar.gz: e1cddfe7fb6e8365ef0d32e03749c2efcd4e3e98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca22e903392cf22fb1c17fe9ac2e44e8701f1e7850d71a6d7a6f8202659521c67bb19884083387d5693203e2b644da5e520b955e0c8f8bea7bdd40f7af98a962
|
7
|
+
data.tar.gz: 721f1d84373e322543bc94ec831c6ca616c81293fad2fcb99e340d72e3e64afb2bb52ab2fc58ea6098fe732d384eff708b1054923ad2f21812f48ada0e7311ce
|
data/README.md
CHANGED
@@ -21,11 +21,11 @@ Or install it yourself as:
|
|
21
21
|
## Usage
|
22
22
|
```ruby
|
23
23
|
doc = WizRtf::Document.new do
|
24
|
-
text "学生综合素质报告",
|
24
|
+
text "学生综合素质报告", 'text-align' => :center, 'font-family' => 'Microsoft YaHei', 'font-size' => 48, 'font-bold' => true, 'font-italic' => true, 'font-underline' => true
|
25
25
|
image('h:\eahey.png')
|
26
26
|
page_break
|
27
|
-
text "A Table Demo"
|
28
|
-
table [[{content:'
|
27
|
+
text "A Table Demo", 'foreground-color' => WizRtf::Color::RED, 'background-color' => '#0f00ff'
|
28
|
+
table [[{content: WizRtf::Image.new('h:\eahey.png'),rowspan:4},{content:'4',rowspan:4},1,{content:'1',colspan:2}],
|
29
29
|
[{content:'4',rowspan:3,colspan:2},8],[11]], column_widths:{1=>100,2 => 100,3 => 50,4 => 50,5 => 50} do
|
30
30
|
add_row [1]
|
31
31
|
end
|
data/lib/wiz_rtf/color.rb
CHANGED
@@ -7,10 +7,48 @@
|
|
7
7
|
module WizRtf
|
8
8
|
class Color
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
RED = '#FF0000'
|
11
|
+
YELLOW = '#FFFF00'
|
12
|
+
LIME = '#00FF00'
|
13
|
+
CYAN = '#00FFFF'
|
14
|
+
BLUE = '#0000FF'
|
15
|
+
MAGENTA = '#FF00FF'
|
16
|
+
MAROON = '#800000'
|
17
|
+
OLIVE = '#808000'
|
18
|
+
GREEN = '#008000'
|
19
|
+
TEAL = '#008080'
|
20
|
+
NAVY = '#000080'
|
21
|
+
PURPLE = '#800080'
|
22
|
+
WHITE = '#FFFFFF'
|
23
|
+
SILVER = '#C0C0C0'
|
24
|
+
GRAY = '#808080'
|
25
|
+
BLACK = '#000000'
|
26
|
+
|
27
|
+
def initialize(*rgb)
|
28
|
+
case rgb.size
|
29
|
+
when 1
|
30
|
+
from_rgb_hex(rgb.first)
|
31
|
+
when 3
|
32
|
+
from_rgb(*rgb)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def from_rgb_hex(color)
|
37
|
+
color = '#%.6x' % color if color.is_a? Integer
|
38
|
+
rgb = color[1,7].scan(/.{2}/).map{ |c| c.to_i(16) }
|
39
|
+
from_rgb(*rgb)
|
40
|
+
end
|
41
|
+
|
42
|
+
def from_rgb(*rgb)
|
43
|
+
@red, @green, @blue = rgb
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_rgb
|
47
|
+
[@red, @green, @blue]
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_rgb_hex
|
51
|
+
"#" + to_rgb.map {|c| "%02X" % c }.join
|
14
52
|
end
|
15
53
|
|
16
54
|
def render(io)
|
@@ -20,5 +58,6 @@ module WizRtf
|
|
20
58
|
io.cmd :blue, @blue
|
21
59
|
end
|
22
60
|
end
|
61
|
+
|
23
62
|
end
|
24
63
|
end
|
data/lib/wiz_rtf/document.rb
CHANGED
@@ -10,28 +10,38 @@ module WizRtf
|
|
10
10
|
@fonts = []
|
11
11
|
@colors = []
|
12
12
|
@parts = []
|
13
|
-
font
|
14
|
-
font 1, 'fmodern', 'Courier New', 0, 1
|
15
|
-
font 2, 'fnil', '宋体', 2, 2
|
16
|
-
color 0, 0, 0
|
17
|
-
color 255, 0, 0
|
18
|
-
color 255, 0, 255
|
13
|
+
font 'Courier New'
|
19
14
|
block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given?
|
20
15
|
end
|
21
16
|
|
22
|
-
def head
|
23
|
-
|
17
|
+
def head(&block)
|
18
|
+
block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given?
|
24
19
|
end
|
25
20
|
|
26
|
-
def font(
|
27
|
-
@fonts
|
21
|
+
def font(name, family = nil, character_set = 0, prq = 2)
|
22
|
+
unless index = @fonts.index {|f| f.name == name}
|
23
|
+
index = @fonts.size
|
24
|
+
opts = WizRtf::Font::FONTS.detect {|f| f[:name] == name}
|
25
|
+
@fonts << WizRtf::Font.new(index, opts[:name], opts[:family], opts[:character], opts[:prq])
|
26
|
+
end
|
27
|
+
index
|
28
28
|
end
|
29
29
|
|
30
|
-
def color(
|
31
|
-
|
30
|
+
def color(*rgb)
|
31
|
+
color = WizRtf::Color.new(*rgb)
|
32
|
+
if index = @colors.index {|c| c.to_rgb_hex == color.to_rgb_hex}
|
33
|
+
index += 1
|
34
|
+
else
|
35
|
+
@colors << color
|
36
|
+
index = @colors.size
|
37
|
+
end
|
38
|
+
index
|
32
39
|
end
|
33
40
|
|
34
|
-
def text(str, styles = {
|
41
|
+
def text(str, styles = {})
|
42
|
+
styles['foreground-color'] = color(styles['foreground-color']) if styles['foreground-color']
|
43
|
+
styles['background-color'] = color(styles['background-color']) if styles['background-color']
|
44
|
+
styles['font-family'] = font(styles['font-family']) if styles['font-family']
|
35
45
|
@parts << WizRtf::Text.new(str, styles)
|
36
46
|
end
|
37
47
|
|
data/lib/wiz_rtf/font.rb
CHANGED
@@ -6,9 +6,60 @@
|
|
6
6
|
|
7
7
|
module WizRtf
|
8
8
|
class Font
|
9
|
-
|
9
|
+
FAMILIES = {
|
10
|
+
default: 'fnil',
|
11
|
+
roman: 'froman',
|
12
|
+
swiss: 'fswiss',
|
13
|
+
fixed_pitch: 'fmodern',
|
14
|
+
script: 'fscript',
|
15
|
+
decorative: 'fdecor',
|
16
|
+
technical: 'ftech',
|
17
|
+
bidirectional: 'fbidi'
|
18
|
+
}
|
19
|
+
|
20
|
+
CHARACTER_SET = {
|
21
|
+
ansi: 0,
|
22
|
+
default: 1,
|
23
|
+
symbol: 2,
|
24
|
+
invalid: 3,
|
25
|
+
mac: 77,
|
26
|
+
shiftJis: 128,
|
27
|
+
hangul: 129,
|
28
|
+
johab: 130,
|
29
|
+
gb2312: 134,
|
30
|
+
big5: 136,
|
31
|
+
greek: 161,
|
32
|
+
turkish: 162,
|
33
|
+
vietnamese: 163,
|
34
|
+
hebrew: 177,
|
35
|
+
arabic: 178,
|
36
|
+
arabicTraditional: 179,
|
37
|
+
arabic_user: 180,
|
38
|
+
hebrew_user: 181,
|
39
|
+
baltic: 186,
|
40
|
+
russian: 204,
|
41
|
+
thai: 222,
|
42
|
+
eastern_european: 238,
|
43
|
+
pc437: 254,
|
44
|
+
oem: 255
|
45
|
+
}
|
46
|
+
|
47
|
+
FONTS = [
|
48
|
+
{family:'fswiss', name:'Arial', character:0, prq:2},
|
49
|
+
{family:'froman', name:'Courier New', character:0, prq:1},
|
50
|
+
{family:'froman', name:'Times New Roman', character:0, prq:2},
|
51
|
+
{family:'fnil', name:'SimSun', character:134, prq:2},
|
52
|
+
{family:'fmodern', name:'KaiTi', character:134, prq:1},
|
53
|
+
{family:'fnil', name:'FangSong', character:134, prq:1},
|
54
|
+
{family:'fmodern', name:'SimHei', character:134, prq:1},
|
55
|
+
{family:'fmodern', name:'NSimSun', character:134, prq:1},
|
56
|
+
{family:'fswiss', name:'Microsoft YaHei', character:134, prq:2}
|
57
|
+
]
|
58
|
+
|
59
|
+
attr_accessor :name, :num
|
60
|
+
def initialize(num, name, family = 'fnil', character_set = 0, prq = 2)
|
10
61
|
@num = num
|
11
|
-
@family = family
|
62
|
+
@family = family if family
|
12
63
|
@name = name
|
13
64
|
@character_set = character_set
|
14
65
|
@prq = prq
|
data/lib/wiz_rtf/text.rb
CHANGED
@@ -10,13 +10,14 @@ module WizRtf
|
|
10
10
|
|
11
11
|
def initialize(str = '', styles = {})
|
12
12
|
@str = str
|
13
|
-
@styles = {'text-align' => :left, 'font-size' => 24, 'font-bold' => false, 'font-italic' => false, 'font-underline' => false, 'foreground-color' =>
|
13
|
+
@styles = {'text-align' => :left, 'font-family' => 0, 'font-size' => 24, 'font-bold' => false, 'font-italic' => false, 'font-underline' => false, 'foreground-color' => 0, 'background-color' => 0 }.merge(styles)
|
14
14
|
end
|
15
15
|
|
16
16
|
def render(io)
|
17
17
|
io.group do
|
18
18
|
io.cmd :pard
|
19
19
|
io.cmd TEXT_ALIGN_MAP[@styles['text-align']]
|
20
|
+
io.cmd :f, @styles['font-family']
|
20
21
|
io.cmd :fs, @styles['font-size']
|
21
22
|
io.cmd @styles['font-bold'] ? 'b' : 'b0'
|
22
23
|
io.cmd @styles['font-italic'] ? 'i' : 'i0'
|
data/lib/wiz_rtf/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wiz_rtf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- songgz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|