forked from libharu/libharu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo.rb
executable file
·86 lines (69 loc) · 1.97 KB
/
demo.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#
# << Haru Free PDF Library 2.0.0 >> -- demo.rb
#
# Copyright (c) 1999-2006 Takeshi Kanno <[email protected]>
#
# Permission to use, copy, modify, distribute and sell this software
# and its documentation for any purpose is hereby granted without fee,
# provided that the above copyright notice appear in all copies and
# that both that copyright notice and this permission notice appear
# in supporting documentation.
# It is provided "as is" without express or implied warranty.
#
require "hpdf"
if ARGV.empty?
line = 'Ruby Rocks'
else
line = ARGV.join(" ")
end
pdf = HPDFDoc.new
page = pdf.add_page
x = 578
r1 = 25
40.step(1, -3) do |xw|
tone = 1.0 - (xw / 40.0) * 0.2
page.set_line_width(xw.to_f)
page.set_rgb_stroke(tone, 1.0, tone)
page.circle(50.0, 750.0, r1.to_f)
page.stroke
r1 += xw
end
40.step(1, -3) do |xw|
tone = 1.0 - (xw / 40.0) * 0.2
page.set_line_width(xw.to_f)
page.set_rgb_stroke(tone, tone, 1.0)
page.move_to(x.to_f, 0.0)
page.line_to(x.to_f, 842.0)
page.stroke
x = (x - xw - 2)
end
page.set_rgb_stroke(0.0, 0.0, 0.0)
page.set_line_width(1.0)
page.rectangle(20.0, 20.0, 558.0, 802.0)
page.stroke
font = pdf.get_font("Helvetica", nil)
bbox = font.get_bbox
y = 800
50.step(5, -5) do |size|
height = (bbox[3] - bbox[1]) / 1000 * size
y = y - height
page.begin_text
page.set_font_and_size(font, size.to_f)
page.text_out(30.0, y.to_f, line)
page.end_text
end
(0...360).step(20) do |angle|
page.set_rgb_fill(rand, rand, rand)
page.begin_text
rad = angle / 180.0 * 3.141592
page.set_font_and_size(font, 20.0)
page.set_text_matrix(Math.cos(rad),
Math.sin(rad),
-Math.sin(rad),
Math.cos(rad),
300 + Math.cos(rad) * 40,
300 + Math.sin(rad) * 40)
page.show_text(line)
page.end_text
end
pdf.save_to_file("demo.pdf")