prawn-core 0.7.2 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/examples/general/background.rb +1 -1
- data/examples/general/measurement_units.rb +2 -2
- data/examples/general/outlines.rb +50 -0
- data/examples/general/repeaters.rb +11 -7
- data/examples/general/stamp.rb +6 -6
- data/examples/graphics/basic_images.rb +1 -1
- data/examples/graphics/curves.rb +1 -1
- data/examples/graphics/rounded_polygons.rb +19 -0
- data/examples/graphics/rounded_rectangle.rb +20 -0
- data/examples/graphics/transformations.rb +52 -0
- data/examples/m17n/win_ansi_charset.rb +1 -1
- data/examples/text/font_calculations.rb +3 -3
- data/examples/text/indent_paragraphs.rb +18 -0
- data/examples/text/kerning.rb +4 -4
- data/examples/text/rotated.rb +98 -0
- data/examples/text/simple_text.rb +3 -3
- data/examples/text/simple_text_ttf.rb +1 -1
- data/lib/prawn/byte_string.rb +1 -0
- data/lib/prawn/core.rb +12 -5
- data/lib/prawn/core/object_store.rb +99 -0
- data/lib/prawn/core/page.rb +96 -0
- data/lib/prawn/core/text.rb +75 -0
- data/lib/prawn/document.rb +71 -78
- data/lib/prawn/document/annotations.rb +2 -2
- data/lib/prawn/document/bounding_box.rb +19 -9
- data/lib/prawn/document/column_box.rb +13 -12
- data/lib/prawn/document/graphics_state.rb +49 -0
- data/lib/prawn/document/internals.rb +5 -40
- data/lib/prawn/document/page_geometry.rb +1 -18
- data/lib/prawn/document/snapshot.rb +12 -7
- data/lib/prawn/errors.rb +18 -0
- data/lib/prawn/font.rb +4 -2
- data/lib/prawn/font/afm.rb +8 -0
- data/lib/prawn/font/dfont.rb +12 -4
- data/lib/prawn/font/ttf.rb +9 -0
- data/lib/prawn/graphics.rb +66 -9
- data/lib/prawn/graphics/color.rb +1 -1
- data/lib/prawn/graphics/transformation.rb +156 -0
- data/lib/prawn/graphics/transparency.rb +3 -7
- data/lib/prawn/images.rb +4 -3
- data/lib/prawn/images/png.rb +2 -2
- data/lib/prawn/outline.rb +278 -0
- data/lib/prawn/pdf_object.rb +5 -3
- data/lib/prawn/repeater.rb +25 -13
- data/lib/prawn/stamp.rb +6 -29
- data/lib/prawn/text.rb +139 -121
- data/lib/prawn/text/box.rb +168 -102
- data/spec/bounding_box_spec.rb +7 -2
- data/spec/document_spec.rb +7 -5
- data/spec/font_spec.rb +9 -1
- data/spec/graphics_spec.rb +229 -0
- data/spec/object_store_spec.rb +5 -5
- data/spec/outline_spec.rb +229 -0
- data/spec/repeater_spec.rb +18 -1
- data/spec/snapshot_spec.rb +7 -7
- data/spec/span_spec.rb +6 -2
- data/spec/spec_helper.rb +7 -3
- data/spec/stamp_spec.rb +13 -0
- data/spec/text_at_spec.rb +119 -0
- data/spec/text_box_spec.rb +257 -4
- data/spec/text_spec.rb +278 -180
- data/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +12 -0
- metadata +16 -3
- data/lib/prawn/object_store.rb +0 -92
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
8
8
|
|
9
9
|
img = "#{Prawn::BASEDIR}/data/images/letterhead.jpg"
|
10
10
|
|
11
|
-
Prawn::Document.generate("background.pdf", :background => img) do
|
11
|
+
Prawn::Document.generate("background.pdf", :background => img, :margin => 100) do
|
12
12
|
text "My report caption", :size => 18, :align => :right
|
13
13
|
|
14
14
|
move_down font.height * 2
|
@@ -34,13 +34,13 @@ units.each_with_index do |unit, unit_index| #iterate through all units that make
|
|
34
34
|
temp << "1#{unit} => #{one_unit_in_pt}pt\n" #puts converted unit in points
|
35
35
|
|
36
36
|
offset = offset_multiplier * unit_index
|
37
|
-
pdf.
|
37
|
+
pdf.draw_text units[unit_index], :at => [offset + 0.5.mm, pdf.bounds.top - 2.mm]
|
38
38
|
|
39
39
|
pdf.stroke_line(offset, pdf.bounds.top, offset, pdf.bounds.bottom)
|
40
40
|
|
41
41
|
0.upto(((pdf.bounds.height - 5.mm) / one_unit_in_pt).to_i) do |i| # checks, how many strokes can be drawn
|
42
42
|
pdf.stroke_line(offset, i * one_unit_in_pt, (i % 5 == 0 ? 6.mm : 3.mm) + offset, i * one_unit_in_pt) # every fifth stroke is twice as large like on a real ruler
|
43
|
-
pdf.
|
43
|
+
pdf.draw_text "#{i}#{unit}", :at => [7.mm + offset, i * one_unit_in_pt] unless unit == "mm" && i % 5 != 0 || unit == "pt" && i % 10 != 0 # avoid text too close to each other
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This example demonstrates the use of the the outlines option for a new document
|
4
|
+
# it sets an initial outline item with a title
|
5
|
+
#
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
7
|
+
|
8
|
+
Prawn::Document.generate('outlines.pdf') do
|
9
|
+
text "Page 1. This is the first Chapter. "
|
10
|
+
start_new_page
|
11
|
+
text "Page 2. More in the first Chapter. "
|
12
|
+
start_new_page
|
13
|
+
text "Page 3. This is the second Chapter. It has a subsection. "
|
14
|
+
start_new_page
|
15
|
+
text "Page 4. More in the second Chapter. "
|
16
|
+
define_outline do
|
17
|
+
section 'Chapter 1', :page => 1, :closed => true do
|
18
|
+
page 1, :title => 'Page 1'
|
19
|
+
page 2, :title => 'Page 2'
|
20
|
+
end
|
21
|
+
section 'Chapter 2', :page => 3 do
|
22
|
+
section 'Chapter 2 Subsection' do
|
23
|
+
page nil, :title => 'Page 3'
|
24
|
+
end
|
25
|
+
page 4, :title => 'Page 4'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
start_new_page
|
29
|
+
text "Page 5. Appendix"
|
30
|
+
start_new_page
|
31
|
+
text "Page 6. More in the Appendix"
|
32
|
+
outline.add_section do
|
33
|
+
section 'Appendix', :page => 5 do
|
34
|
+
page 5, :title => 'Page 5'
|
35
|
+
page 6, :title => 'Page 6'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
go_to_page 4
|
39
|
+
start_new_page
|
40
|
+
text "inserted before the Appendix"
|
41
|
+
outline.insert_section_after 'Chapter 2' do
|
42
|
+
page page_number, :title => "Pre-Appendix"
|
43
|
+
end
|
44
|
+
go_to_page 7
|
45
|
+
start_new_page
|
46
|
+
text "One last page"
|
47
|
+
outline.insert_section_after 'Page 6' do
|
48
|
+
page page_number, :title => "Inserted after 6"
|
49
|
+
end
|
50
|
+
end
|
@@ -10,32 +10,36 @@ require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
10
10
|
Prawn::Document.generate("repeat.pdf", :skip_page_creation => true) do
|
11
11
|
|
12
12
|
repeat :all do
|
13
|
-
|
13
|
+
draw_text "ALLLLLL", :at => bounds.top_left
|
14
14
|
end
|
15
15
|
|
16
16
|
repeat :odd do
|
17
|
-
|
17
|
+
draw_text "ODD", :at => [0,0]
|
18
18
|
end
|
19
19
|
|
20
20
|
repeat :even do
|
21
|
-
|
21
|
+
draw_text "EVEN", :at => [0,0]
|
22
22
|
end
|
23
23
|
|
24
24
|
repeat [1,2] do
|
25
|
-
|
25
|
+
draw_text "[1,2]", :at => [100,0]
|
26
26
|
end
|
27
27
|
|
28
28
|
repeat 2..4 do
|
29
|
-
|
29
|
+
draw_text "2..4", :at => [200,0]
|
30
30
|
end
|
31
31
|
|
32
32
|
repeat(lambda { |pg| pg % 3 == 0 }) do
|
33
|
-
|
33
|
+
draw_text "Every third", :at => [250, 20]
|
34
|
+
end
|
35
|
+
|
36
|
+
repeat(:all, :dynamic => true) do
|
37
|
+
draw_text page_number, :at => [500, 0]
|
34
38
|
end
|
35
39
|
|
36
40
|
10.times do
|
37
41
|
start_new_page
|
38
|
-
|
42
|
+
draw_text "A wonderful page", :at => [400,400]
|
39
43
|
end
|
40
44
|
|
41
45
|
end
|
data/examples/general/stamp.rb
CHANGED
@@ -7,15 +7,15 @@ require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
7
|
Prawn::Document.generate("stamp.pdf", :skip_page_creation => true) do
|
8
8
|
|
9
9
|
create_stamp("odd_page_template") do
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
draw_text "This is the odd page template",
|
11
|
+
:at => [0, bounds.top - font.height]
|
12
|
+
draw_text "This is also in the odd page template", :at => [0, 0]
|
13
13
|
end
|
14
14
|
|
15
15
|
create_stamp("even_page_template") do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
draw_text "This is the even page template",
|
17
|
+
:at => [0, bounds.top - font.height]
|
18
|
+
draw_text "This is also in the even page template", :at => [0, 0]
|
19
19
|
end
|
20
20
|
|
21
21
|
start_new_page
|
@@ -13,7 +13,7 @@ Prawn::Document.generate("basic_images.pdf", :page_layout => :landscape) do
|
|
13
13
|
stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
|
14
14
|
image stef, :at => [500, 400], :width => 200, :height => 200
|
15
15
|
|
16
|
-
|
16
|
+
draw_text "Please enjoy the pigs", :size => 36, :at => [200,15]
|
17
17
|
|
18
18
|
ruport = "#{Prawn::BASEDIR}/data/images/ruport.png"
|
19
19
|
image ruport, :at => [400,200], :width => 150
|
data/examples/graphics/curves.rb
CHANGED
@@ -6,6 +6,6 @@ require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
6
|
|
7
7
|
pdf = Prawn::Document.new
|
8
8
|
pdf.move_to [100,100]
|
9
|
-
pdf.stroke_curve_to [50,50], :bounds => [[
|
9
|
+
pdf.stroke_curve_to [50,50], :bounds => [[60,90], [60, 90]]
|
10
10
|
pdf.fill_circle_at [200,200], :radius => 10
|
11
11
|
pdf.render_file "curves.pdf"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
2
|
+
|
3
|
+
def radian(degree)
|
4
|
+
Math::PI/180*degree
|
5
|
+
end
|
6
|
+
|
7
|
+
def point_on_circle(center, radius, degrees)
|
8
|
+
[center[0] + radius*(Math.cos(radian(degrees))), center[1] - radius*(Math.sin(radian(degrees)))]
|
9
|
+
end
|
10
|
+
|
11
|
+
pdf = Prawn::Document.new
|
12
|
+
|
13
|
+
pentagon_points = (0..4).map{|i| point_on_circle([200, 400], 100, i * 72)}
|
14
|
+
pentagram_points = [0, 2, 4, 1, 3].map{|i| pentagon_points[i]}
|
15
|
+
pdf.stroke_rounded_polygon(20, *pentagram_points)
|
16
|
+
pdf.fill_and_stroke_rounded_polygon(10, [100, 250], [200, 300], [300, 250],
|
17
|
+
[300, 150], [200, 100], [100, 150])
|
18
|
+
|
19
|
+
pdf.render_file "rounded_polygon.pdf"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Rounded rectangle example demonstrating both stroke and stroke and fill.
|
4
|
+
# A rectangle with rounded join_style is added just for comparison.
|
5
|
+
#
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
7
|
+
|
8
|
+
pdf = Prawn::Document.new
|
9
|
+
pdf.font_size 8
|
10
|
+
pdf.draw_text "a stroked rounded rectangle:", :at => [30, 575]
|
11
|
+
pdf.stroke_rounded_rectangle([50, 550], 50, 100, 10)
|
12
|
+
pdf.draw_text "a stroked and filled rounded rectangle:", :at => [180, 575]
|
13
|
+
pdf.fill_and_stroke_rounded_rectangle([200, 550], 50, 100, 10)
|
14
|
+
pdf.draw_text "a regular rectangle with rounded join style;", :at => [330, 575]
|
15
|
+
pdf.draw_text "needs thick line width for similar result:", :at => [330, 565]
|
16
|
+
pdf.join_style :round
|
17
|
+
pdf.line_width 10
|
18
|
+
pdf.stroke_rectangle([350, 550], 50, 100)
|
19
|
+
|
20
|
+
pdf.render_file "rounded_rectangle.pdf"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Demonstrates transformations
|
4
|
+
#
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
6
|
+
|
7
|
+
Prawn::Document.generate "transformations.pdf" do |pdf|
|
8
|
+
width = 50
|
9
|
+
height = 100
|
10
|
+
|
11
|
+
# ROTATION
|
12
|
+
x = 50
|
13
|
+
y = pdf.bounds.top - 50
|
14
|
+
|
15
|
+
pdf.stroke_rectangle([x, y], width, height)
|
16
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
17
|
+
pdf.rotate(30, :origin => [x, y]) do
|
18
|
+
pdf.stroke_rectangle([x, y], width, height)
|
19
|
+
pdf.draw_text("rectangle rotated around upper-left corner", :at => [x + width, y - height])
|
20
|
+
end
|
21
|
+
|
22
|
+
x = 50
|
23
|
+
y = pdf.bounds.top - 200
|
24
|
+
|
25
|
+
pdf.stroke_rectangle([x, y], width, height)
|
26
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
27
|
+
pdf.rotate(30, :origin => [x + width / 2, y - height / 2]) do
|
28
|
+
pdf.stroke_rectangle([x, y], width, height)
|
29
|
+
pdf.draw_text("rectangle rotated around center", :at => [x + width, y - height])
|
30
|
+
end
|
31
|
+
|
32
|
+
# SCALE
|
33
|
+
x = 0
|
34
|
+
y = pdf.bounds.top - 500
|
35
|
+
|
36
|
+
pdf.stroke_rectangle([x, y], width, height)
|
37
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
38
|
+
pdf.scale(2, :origin => [x, y]) do
|
39
|
+
pdf.stroke_rectangle([x, y], width, height)
|
40
|
+
pdf.draw_text("rectangle scaled from upper-left corner", :at => [x + width, y - height])
|
41
|
+
end
|
42
|
+
|
43
|
+
x = 150
|
44
|
+
y = pdf.bounds.top - 400
|
45
|
+
|
46
|
+
pdf.stroke_rectangle([x, y], width, height)
|
47
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
48
|
+
pdf.scale(2, :origin => [x + width / 2, y - height / 2]) do
|
49
|
+
pdf.stroke_rectangle([x, y], width, height)
|
50
|
+
pdf.draw_text("rectangle scaled from center", :at => [x + width, y - height])
|
51
|
+
end
|
52
|
+
end
|
@@ -25,9 +25,9 @@ Prawn::Document.generate('font_calculations.pdf') do
|
|
25
25
|
bl = y - bounds.absolute_bottom
|
26
26
|
|
27
27
|
stroke_horizontal_rule
|
28
|
-
|
28
|
+
draw_text "When using text positioned with :at, the baseline is used", :at => [0, bl]
|
29
29
|
|
30
|
-
|
30
|
+
draw_text "(and the Y-cursor is not moved)", :at => [350, bl]
|
31
31
|
|
32
32
|
colors = { :ascender => "ff0000",
|
33
33
|
:descender => "00ff00",
|
@@ -57,7 +57,7 @@ Prawn::Document.generate('font_calculations.pdf') do
|
|
57
57
|
move_down 40
|
58
58
|
|
59
59
|
bl = y - bounds.absolute_bottom
|
60
|
-
|
60
|
+
draw_text "The quick brown fox jumps over the lazy dog.", :at => [0, bl]
|
61
61
|
|
62
62
|
stroke_color colors[:ascender]
|
63
63
|
stroke_line [0, bl], [0, bl + font.ascender]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# An early example of basic text generation at absolute positions.
|
4
|
+
# Mostly kept for nostalgia.
|
5
|
+
#
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
7
|
+
|
8
|
+
Prawn::Document.generate "indent_paragraphs.pdf" do |pdf|
|
9
|
+
hello = "hello " * 50
|
10
|
+
world = "world " * 50
|
11
|
+
pdf.text(hello + "\n" + world, :indent_paragraphs => 60)
|
12
|
+
|
13
|
+
pdf.move_cursor_to(pdf.font.height)
|
14
|
+
pdf.text(hello + "\n" + world, :indent_paragraphs => 60)
|
15
|
+
|
16
|
+
pdf.move_cursor_to(pdf.font.height * 3)
|
17
|
+
pdf.text(hello + "\n" + world, :indent_paragraphs => 60)
|
18
|
+
end
|
data/examples/text/kerning.rb
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
6
6
|
|
7
7
|
Prawn::Document.generate "kerning.pdf" do
|
8
|
-
|
9
|
-
|
8
|
+
draw_text "To kern?", :at => [200,720], :size => 24, :kerning => true
|
9
|
+
draw_text "To not kern?", :at => [200,690], :size => 24, :kerning => false
|
10
10
|
|
11
11
|
move_down 100
|
12
12
|
|
@@ -18,8 +18,8 @@ Prawn::Document.generate "kerning.pdf" do
|
|
18
18
|
|
19
19
|
font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
draw_text "To kern?", :at => [200,660], :size => 24, :kerning => true
|
22
|
+
draw_text "To not kern?", :at => [200,630], :size => 24, :kerning => false
|
23
23
|
|
24
24
|
pad(30) do
|
25
25
|
text "To kern and wrap. " * 5, :size => 24, :kerning => true
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Demonstrates transformations
|
4
|
+
#
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
6
|
+
|
7
|
+
Prawn::Document.generate "rotated_text.pdf" do |pdf|
|
8
|
+
pdf.line_width = 1
|
9
|
+
width = 150
|
10
|
+
height = 200
|
11
|
+
half_width = width / 2
|
12
|
+
half_height = height / 2
|
13
|
+
angle = 30
|
14
|
+
|
15
|
+
|
16
|
+
# AROUND THE CENTER
|
17
|
+
|
18
|
+
x = pdf.bounds.width / 2 - half_width
|
19
|
+
y = pdf.bounds.height / 2 + half_height
|
20
|
+
|
21
|
+
pdf.stroke_rectangle([x, y], width, height)
|
22
|
+
pdf.rotate(angle, :origin => [x + half_width, y - half_height]) do
|
23
|
+
pdf.stroke_rectangle([x, y], width, height)
|
24
|
+
end
|
25
|
+
pdf.text_box("rotated around the center " * 10,
|
26
|
+
:at => [x, y],
|
27
|
+
:width => width,
|
28
|
+
:height => height,
|
29
|
+
:rotate => angle,
|
30
|
+
:rotate_around => :center)
|
31
|
+
|
32
|
+
|
33
|
+
# AROUND THE UPPER_LEFT_CORNER
|
34
|
+
|
35
|
+
x = pdf.bounds.width - width
|
36
|
+
y = height
|
37
|
+
|
38
|
+
pdf.stroke_rectangle([x, y], width, height)
|
39
|
+
pdf.rotate(angle, :origin => [x, y]) do
|
40
|
+
pdf.stroke_rectangle([x, y], width, height)
|
41
|
+
end
|
42
|
+
pdf.text_box("rotated around upper left corner " * 10,
|
43
|
+
:at => [x, y],
|
44
|
+
:width => width,
|
45
|
+
:height => height,
|
46
|
+
:rotate => angle)
|
47
|
+
|
48
|
+
|
49
|
+
# AROUND THE UPPER_RIGHT_CORNER
|
50
|
+
|
51
|
+
x = 0
|
52
|
+
y = height
|
53
|
+
|
54
|
+
pdf.stroke_rectangle([x, y], width, height)
|
55
|
+
pdf.rotate(angle, :origin => [x + width, y]) do
|
56
|
+
pdf.stroke_rectangle([x, y], width, height)
|
57
|
+
end
|
58
|
+
pdf.text_box("rotated around upper right corner " * 10,
|
59
|
+
:at => [x, y],
|
60
|
+
:width => width,
|
61
|
+
:height => height,
|
62
|
+
:rotate => angle,
|
63
|
+
:rotate_around => :upper_right)
|
64
|
+
|
65
|
+
|
66
|
+
# AROUND THE LOWER_RIGHT_CORNER
|
67
|
+
|
68
|
+
x = 0
|
69
|
+
y = pdf.bounds.height
|
70
|
+
|
71
|
+
pdf.stroke_rectangle([x, y], width, height)
|
72
|
+
pdf.rotate(angle, :origin => [x + width, y - height]) do
|
73
|
+
pdf.stroke_rectangle([x, y], width, height)
|
74
|
+
end
|
75
|
+
pdf.text_box("rotated around lower right corner " * 10,
|
76
|
+
:at => [x, y],
|
77
|
+
:width => width,
|
78
|
+
:height => height,
|
79
|
+
:rotate => angle,
|
80
|
+
:rotate_around => :lower_right)
|
81
|
+
|
82
|
+
|
83
|
+
# AROUND THE LOWER_LEFT_CORNER
|
84
|
+
|
85
|
+
x = pdf.bounds.width - width
|
86
|
+
y = pdf.bounds.height
|
87
|
+
|
88
|
+
pdf.stroke_rectangle([x, y], width, height)
|
89
|
+
pdf.rotate(angle, :origin => [x, y - height]) do
|
90
|
+
pdf.stroke_rectangle([x, y], width, height)
|
91
|
+
end
|
92
|
+
pdf.text_box("rotated around lower left corner " * 10,
|
93
|
+
:at => [x, y],
|
94
|
+
:width => width,
|
95
|
+
:height => height,
|
96
|
+
:rotate => angle,
|
97
|
+
:rotate_around => :lower_left)
|
98
|
+
end
|
@@ -7,11 +7,11 @@ require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
7
|
|
8
8
|
Prawn::Document.generate "simple_text.pdf" do
|
9
9
|
fill_color "0000ff"
|
10
|
-
|
10
|
+
draw_text "Hello World", :at => [200,420], :size => 32, :rotate => 45
|
11
11
|
font "Times-Roman"
|
12
12
|
fill_color "ff0000"
|
13
|
-
|
13
|
+
draw_text "Using Another Font", :at => [5,5]
|
14
14
|
start_new_page
|
15
15
|
font "Courier"
|
16
|
-
|
16
|
+
draw_text "Goodbye World", :at => [288,50]
|
17
17
|
end
|