prawn-core 0.7.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|