ruport 0.4.21 → 0.4.23
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/CHANGELOG +25 -1
- data/Rakefile +4 -3
- data/TODO +5 -16
- data/bin/rope +116 -0
- data/examples/bar.pdf +193 -0
- data/examples/f.log +5 -0
- data/examples/foo.pdf +193 -0
- data/examples/sample_invoice_report.rb +32 -0
- data/lib/ruport.rb +1 -1
- data/lib/ruport/data/collection.rb +5 -0
- data/lib/ruport/data/table.rb +16 -6
- data/lib/ruport/format.rb +1 -1
- data/lib/ruport/format/engine.rb +9 -7
- data/lib/ruport/format/plugin.rb +52 -38
- data/lib/ruport/query.rb +4 -4
- data/lib/ruport/report.rb +1 -1
- data/lib/ruport/report/invoice.rb +13 -0
- data/test/tc_format_engine.rb +1 -1
- data/test/tc_invoice.rb +26 -0
- data/test/tc_table.rb +29 -0
- data/test/ts_all.rb +1 -2
- data/test/unit.log +276 -0
- metadata +12 -4
data/CHANGELOG
CHANGED
@@ -1,4 +1,28 @@
|
|
1
|
-
The current version of Ruby Reports is 0.4.
|
1
|
+
The current version of Ruby Reports is 0.4.23
|
2
|
+
|
3
|
+
changes since 0.4.21
|
4
|
+
|
5
|
+
- JH's invoice engine integrated
|
6
|
+
|
7
|
+
- Added rope, a tool for building a friendly environment for reports that use
|
8
|
+
Ruport.
|
9
|
+
|
10
|
+
- Fixed very broken Ruport::Query (DataSet aftermath)
|
11
|
+
We need to figure out a way to test this class better.
|
12
|
+
|
13
|
+
- Added Data::Table#add_column which is useful for calculated fields. (#19)
|
14
|
+
|
15
|
+
- Data::Table.reorder now works properly.
|
16
|
+
(Can use integer indices or attributes)
|
17
|
+
|
18
|
+
- Moved Data::Table.to_format to Collection, but be warned that the plugins must
|
19
|
+
support the collection you call them on. (Set is not fully supported yet)
|
20
|
+
|
21
|
+
- Renamed Query#to_dataset to Query#to_table
|
22
|
+
|
23
|
+
- Array#to_table now supports just passing an array of column_names if you do
|
24
|
+
not need other keyword arguments. This makes the interface support to_ds
|
25
|
+
style calls.
|
2
26
|
|
3
27
|
changes since 0.4.19
|
4
28
|
- Added a rake task to run rcov
|
data/Rakefile
CHANGED
@@ -23,16 +23,17 @@ end
|
|
23
23
|
|
24
24
|
spec = Gem::Specification.new do |spec|
|
25
25
|
spec.name = LEAN ? "lean-ruport" : "ruport"
|
26
|
-
spec.version = "0.4.
|
26
|
+
spec.version = "0.4.23"
|
27
27
|
spec.platform = Gem::Platform::RUBY
|
28
28
|
spec.summary = "A generalized Ruby report generation and templating engine."
|
29
|
-
spec.files = Dir.glob("{examples,lib,test}/**/**/*") +
|
29
|
+
spec.files = Dir.glob("{examples,lib,test,bin}/**/**/*") +
|
30
30
|
["Rakefile", "setup.rb"]
|
31
31
|
|
32
32
|
spec.require_path = "lib"
|
33
33
|
|
34
34
|
spec.test_file = "test/ts_all.rb"
|
35
|
-
|
35
|
+
spec.bindir = "bin"
|
36
|
+
spec.executables = FileList["rope"]
|
36
37
|
spec.has_rdoc = true
|
37
38
|
spec.extra_rdoc_files = %w{README LICENSE TODO AUTHORS CHANGELOG}
|
38
39
|
spec.rdoc_options << '--title' << 'Ruport Documentation' <<
|
data/TODO
CHANGED
@@ -1,19 +1,8 @@
|
|
1
|
-
TODO:
|
1
|
+
TODO:
|
2
2
|
|
3
|
-
|
3
|
+
This file needs updating badly.
|
4
4
|
|
5
|
-
|
5
|
+
In the interim, check the Roadmap at
|
6
|
+
http://stonecode.svnrepository.com/ruport
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
- Composite key selection
|
10
|
-
|
11
|
-
- Value modification predicate.
|
12
|
-
DataRow#set_value_if("my_value") { # my_condition }
|
13
|
-
(Update: What was I talking about here???)
|
14
|
-
|
15
|
-
- Column based default values
|
16
|
-
|
17
|
-
- Document the inner classes of Format
|
18
|
-
|
19
|
-
- Calculated fields
|
8
|
+
- Check out the way Ruport.log prints
|
data/bin/rope
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
include FileUtils
|
3
|
+
|
4
|
+
if ARGV.empty?
|
5
|
+
puts "Usage: rope project_name"
|
6
|
+
exit
|
7
|
+
end
|
8
|
+
project = ARGV[0]
|
9
|
+
|
10
|
+
RAKEFILE = <<-EOS
|
11
|
+
require "rubygems" rescue LoadError nil
|
12
|
+
require "rake/testtask"
|
13
|
+
|
14
|
+
task :default => [:test]
|
15
|
+
|
16
|
+
Rake::TestTask.new do |test|
|
17
|
+
test.libs << "test"
|
18
|
+
test.pattern = 'test/**/tc_*.rb'
|
19
|
+
test.verbose = true
|
20
|
+
end
|
21
|
+
|
22
|
+
EOS
|
23
|
+
|
24
|
+
CONFIG = <<-EOS
|
25
|
+
require "ruport"
|
26
|
+
|
27
|
+
# For details, see Ruport::Config documentation
|
28
|
+
Ruport.configure { |c|
|
29
|
+
c.source :default, :user => "root",
|
30
|
+
:dsn => "dbi:mysql:mydb"
|
31
|
+
c.log_file "log/ruport.log"
|
32
|
+
}
|
33
|
+
|
34
|
+
EOS
|
35
|
+
|
36
|
+
BUILD = '
|
37
|
+
|
38
|
+
def format_class_name(string)
|
39
|
+
string.downcase.split("_").map { |s| s.capitalize }.join
|
40
|
+
end
|
41
|
+
|
42
|
+
unless ARGV.length > 1
|
43
|
+
puts "usage build.rb [command] [options]"
|
44
|
+
exit
|
45
|
+
end
|
46
|
+
|
47
|
+
class_name = format_class_name(ARGV[1])
|
48
|
+
|
49
|
+
exit if File.exist? "app/reports/#{ARGV[1]}.rb"
|
50
|
+
if ARGV[0].eql? "report"
|
51
|
+
File.open("app/reports.rb", "a") { |f|
|
52
|
+
f << "require \"app/reports/#{ARGV[1]}\""
|
53
|
+
}
|
54
|
+
REP = <<-EOR
|
55
|
+
require "rubygems" rescue LoadError nil
|
56
|
+
require "ruport"
|
57
|
+
require "config/ruport_config"
|
58
|
+
|
59
|
+
class #{class_name} < Ruport::Report
|
60
|
+
|
61
|
+
#optional
|
62
|
+
prepare { }
|
63
|
+
|
64
|
+
#mandatory
|
65
|
+
generate { }
|
66
|
+
|
67
|
+
#optional
|
68
|
+
cleanup { }
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
##{class_name}.run { |res| puts res.results }
|
73
|
+
EOR
|
74
|
+
|
75
|
+
TEST = <<-EOR
|
76
|
+
require "rubygems" rescue LoadError nil
|
77
|
+
require "ruport"
|
78
|
+
require "test/unit"
|
79
|
+
require "app/reports/#{ARGV[1]}"
|
80
|
+
require "config/ruport_config"
|
81
|
+
|
82
|
+
class Test#{class_name} < Test::Unit::TestCase
|
83
|
+
def test_flunk
|
84
|
+
flunk "Write your real tests here or in any test/tc_* file"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
EOR
|
88
|
+
File.open("app/reports/#{ARGV[1]}.rb", "w") { |f| f << REP }
|
89
|
+
File.open("test/tc_#{ARGV[1]}.rb","w") { |f| f << TEST }
|
90
|
+
end
|
91
|
+
'
|
92
|
+
|
93
|
+
SQL_EXEC = '
|
94
|
+
require "rubygems" rescue LoadError nil
|
95
|
+
require "ruport"
|
96
|
+
require "config/ruport_config"
|
97
|
+
|
98
|
+
puts Ruport::Query.new(ARGF.read).result
|
99
|
+
'
|
100
|
+
|
101
|
+
mkdir project
|
102
|
+
|
103
|
+
%w[test config output data app app/reports templates sql log util].each do |d|
|
104
|
+
mkdir "#{project}/#{d}"
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
touch("#{project}/app/reports.rb")
|
109
|
+
File.open("#{project}/config/ruport_config.rb","w") { |f| f << CONFIG }
|
110
|
+
File.open("#{project}/Rakefile","w") { |f| f << RAKEFILE }
|
111
|
+
File.open("#{project}/util/build.rb","w") { |f| f << BUILD }
|
112
|
+
File.open("#{project}/util/sql_exec.rb","w") { |f| f << SQL_EXEC }
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
data/examples/bar.pdf
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
%PDF-1.3
|
2
|
+
%����
|
3
|
+
|
4
|
+
1 0 obj
|
5
|
+
<< /Type /Catalog
|
6
|
+
/Outlines 2 0 R
|
7
|
+
/Pages 3 0 R>>
|
8
|
+
endobj
|
9
|
+
2 0 obj
|
10
|
+
<< /Type /Outlines >>
|
11
|
+
endobj
|
12
|
+
3 0 obj
|
13
|
+
<< /Type /Pages
|
14
|
+
/Kids [6 0 R
|
15
|
+
]
|
16
|
+
/Count 1
|
17
|
+
/Resources <<
|
18
|
+
/ProcSet 4 0 R
|
19
|
+
/Font <<
|
20
|
+
/F1 8 0 R >>
|
21
|
+
>>
|
22
|
+
/MediaBox [0 0 612.0 792.0]
|
23
|
+
>>
|
24
|
+
endobj
|
25
|
+
4 0 obj
|
26
|
+
[/PDF /Text ]
|
27
|
+
endobj
|
28
|
+
5 0 obj
|
29
|
+
<<
|
30
|
+
/CreationDate (D:200608100525)
|
31
|
+
/Creator (sample_invoice_report.rb)
|
32
|
+
/Producer (PDF::Writer for Ruby)
|
33
|
+
>>
|
34
|
+
endobj
|
35
|
+
6 0 obj
|
36
|
+
<< /Type /Page
|
37
|
+
/Parent 3 0 R
|
38
|
+
/Contents [
|
39
|
+
7 0 R
|
40
|
+
9 0 R
|
41
|
+
10 0 R
|
42
|
+
]
|
43
|
+
>>
|
44
|
+
endobj
|
45
|
+
7 0 obj
|
46
|
+
<<
|
47
|
+
/Length 1498 >>
|
48
|
+
stream
|
49
|
+
|
50
|
+
0.000 0.000 0.000 rg
|
51
|
+
0.000 0.000 0.000 RG
|
52
|
+
0.800 0.800 0.800 RG
|
53
|
+
BT 36.000 742.440 Td /F1 10.0 Tf 0 Tr (Foo Inc.) Tj ET
|
54
|
+
BT 36.000 726.880 Td /F1 10.0 Tf 0 Tr (42 Rock Street) Tj ET
|
55
|
+
BT 36.000 711.320 Td /F1 10.0 Tf 0 Tr (New Haven, CT) Tj ET
|
56
|
+
0.000 0.000 0.000 RG
|
57
|
+
1 w
|
58
|
+
31.000 753.750 m
|
59
|
+
31.000 707.070 l S
|
60
|
+
231.000 753.750 m
|
61
|
+
231.000 707.070 l S
|
62
|
+
30.500 753.750 m
|
63
|
+
231.500 753.750 l S
|
64
|
+
30.500 707.070 m
|
65
|
+
231.500 707.070 l S
|
66
|
+
0.800 0.800 0.800 RG
|
67
|
+
BT 36.000 685.760 Td /F1 10.0 Tf 0 Tr (Gregory Brown) Tj ET
|
68
|
+
BT 36.000 670.200 Td /F1 10.0 Tf 0 Tr (gregory.t.brown@gmail.com) Tj ET
|
69
|
+
0.000 0.000 0.000 RG
|
70
|
+
1 w
|
71
|
+
31.000 697.070 m
|
72
|
+
31.000 665.950 l S
|
73
|
+
231.000 697.070 m
|
74
|
+
231.000 665.950 l S
|
75
|
+
30.500 697.070 m
|
76
|
+
231.500 697.070 l S
|
77
|
+
30.500 665.950 m
|
78
|
+
231.500 665.950 l S
|
79
|
+
BT 386.000 739.816 Td /F1 14.0 Tf 0 Tr (Invoice for Gregory) Tj ET
|
80
|
+
0.800 0.800 0.800 RG
|
81
|
+
BT 350.000 716.256 Td /F1 10.0 Tf 0 Tr (Order ID: 18180) Tj ET
|
82
|
+
BT 350.000 700.696 Td /F1 10.0 Tf 0 Tr (Customer ID: 6291) Tj ET
|
83
|
+
BT 350.000 685.136 Td /F1 10.0 Tf 0 Tr (Order Date: 2006-08-10) Tj ET
|
84
|
+
0.000 0.000 0.000 RG
|
85
|
+
1 w
|
86
|
+
345.000 727.566 m
|
87
|
+
345.000 680.886 l S
|
88
|
+
545.000 727.566 m
|
89
|
+
545.000 680.886 l S
|
90
|
+
344.500 727.566 m
|
91
|
+
545.500 727.566 l S
|
92
|
+
344.500 680.886 m
|
93
|
+
545.500 680.886 l S
|
94
|
+
0.800 0.800 0.800 RG
|
95
|
+
BT 81.000 604.128 Td /F1 12.0 Tf 0 Tr (item) Tj ET
|
96
|
+
BT 335.750 604.128 Td /F1 12.0 Tf 0 Tr (price) Tj ET
|
97
|
+
q
|
98
|
+
0.800 0.800 0.800 rg
|
99
|
+
76.000 582.068 450.000 15.560 re f
|
100
|
+
0.800 0.800 0.800 rg
|
101
|
+
76.000 550.948 450.000 15.560 re f
|
102
|
+
1 w
|
103
|
+
Q
|
104
|
+
BT 479.984 20.000 Td /F1 8.0 Tf 0 Tr (1 of 1) Tj ET
|
105
|
+
endstream
|
106
|
+
endobj
|
107
|
+
|
108
|
+
8 0 obj
|
109
|
+
<< /Type /Font
|
110
|
+
/Subtype /Type1
|
111
|
+
/Name /F1
|
112
|
+
/BaseFont /Helvetica
|
113
|
+
/Encoding /WinAnsiEncoding
|
114
|
+
>>
|
115
|
+
endobj
|
116
|
+
9 0 obj
|
117
|
+
<<
|
118
|
+
/Length 610 >>
|
119
|
+
stream
|
120
|
+
|
121
|
+
BT 81.000 586.318 Td /F1 10.0 Tf 0 Tr (Rock Collection) Tj ET
|
122
|
+
BT 335.750 586.318 Td /F1 10.0 Tf 0 Tr ($25.00) Tj ET
|
123
|
+
BT 81.000 570.758 Td /F1 10.0 Tf 0 Tr (Endless Sand Supply) Tj ET
|
124
|
+
BT 335.750 570.758 Td /F1 10.0 Tf 0 Tr ($500.00) Tj ET
|
125
|
+
BT 81.000 555.198 Td /F1 10.0 Tf 0 Tr (Fire Filled Pit) Tj ET
|
126
|
+
BT 335.750 555.198 Td /F1 10.0 Tf 0 Tr ($800.00) Tj ET
|
127
|
+
0.000 0.000 0.000 RG
|
128
|
+
1 w
|
129
|
+
76.000 620.000 m
|
130
|
+
76.000 550.948 l S
|
131
|
+
1 w
|
132
|
+
330.750 620.000 m
|
133
|
+
330.750 550.948 l S
|
134
|
+
1 w
|
135
|
+
526.000 620.000 m
|
136
|
+
526.000 550.948 l S
|
137
|
+
75.500 620.000 m
|
138
|
+
526.500 620.000 l S
|
139
|
+
76.000 599.878 m
|
140
|
+
526.000 599.878 l S
|
141
|
+
75.500 550.948 m
|
142
|
+
526.500 550.948 l S
|
143
|
+
endstream
|
144
|
+
endobj
|
145
|
+
|
146
|
+
10 0 obj
|
147
|
+
<<
|
148
|
+
/Length 419 >>
|
149
|
+
stream
|
150
|
+
|
151
|
+
q
|
152
|
+
0.000 0.000 0.000 RG
|
153
|
+
1 w 0 J 0 j [ ] 0 d
|
154
|
+
0.800 0.800 0.800 RG
|
155
|
+
BT 110.000 519.638 Td /F1 10.0 Tf 0 Tr (Be sure to visit our website at www.iheartruport.com) Tj ET
|
156
|
+
0.000 0.000 0.000 RG
|
157
|
+
1 w
|
158
|
+
105.000 530.948 m
|
159
|
+
105.000 515.388 l S
|
160
|
+
505.000 530.948 m
|
161
|
+
505.000 515.388 l S
|
162
|
+
104.500 530.948 m
|
163
|
+
505.500 530.948 l S
|
164
|
+
104.500 515.388 m
|
165
|
+
505.500 515.388 l S
|
166
|
+
BT 50.000 20.000 Td /F1 8.0 Tf 0 Tr (Printed at 01:25 10/08/2006) Tj ET
|
167
|
+
1 w
|
168
|
+
Q
|
169
|
+
endstream
|
170
|
+
endobj
|
171
|
+
|
172
|
+
xref
|
173
|
+
0 11
|
174
|
+
0000000000 65535 f
|
175
|
+
0000000015 00000 n
|
176
|
+
0000000079 00000 n
|
177
|
+
0000000116 00000 n
|
178
|
+
0000000258 00000 n
|
179
|
+
0000000287 00000 n
|
180
|
+
0000000408 00000 n
|
181
|
+
0000000488 00000 n
|
182
|
+
0000002039 00000 n
|
183
|
+
0000002146 00000 n
|
184
|
+
0000002808 00000 n
|
185
|
+
|
186
|
+
trailer
|
187
|
+
<< /Size 11
|
188
|
+
/Root 1 0 R
|
189
|
+
/Info 5 0 R
|
190
|
+
>>
|
191
|
+
startxref
|
192
|
+
3280
|
193
|
+
%%EOF
|
data/examples/f.log
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
# Logfile created on Mon Aug 07 18:58:16 EDT 2006 by logger.rb/1.5.2.7
|
2
|
+
I, [2006-08-07T18:58:16.676501 #7621] INFO -- : preparing report
|
3
|
+
I, [2006-08-07T18:58:16.677282 #7621] INFO -- : generated csv from query
|
4
|
+
I, [2006-08-07T18:58:30.411506 #7621] INFO -- : preparing report
|
5
|
+
I, [2006-08-07T18:58:30.412121 #7621] INFO -- : generated csv from query
|
data/examples/foo.pdf
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
%PDF-1.3
|
2
|
+
%����
|
3
|
+
|
4
|
+
1 0 obj
|
5
|
+
<< /Type /Catalog
|
6
|
+
/Outlines 2 0 R
|
7
|
+
/Pages 3 0 R>>
|
8
|
+
endobj
|
9
|
+
2 0 obj
|
10
|
+
<< /Type /Outlines >>
|
11
|
+
endobj
|
12
|
+
3 0 obj
|
13
|
+
<< /Type /Pages
|
14
|
+
/Kids [6 0 R
|
15
|
+
]
|
16
|
+
/Count 1
|
17
|
+
/Resources <<
|
18
|
+
/ProcSet 4 0 R
|
19
|
+
/Font <<
|
20
|
+
/F1 8 0 R >>
|
21
|
+
>>
|
22
|
+
/MediaBox [0 0 612.0 792.0]
|
23
|
+
>>
|
24
|
+
endobj
|
25
|
+
4 0 obj
|
26
|
+
[/PDF /Text ]
|
27
|
+
endobj
|
28
|
+
5 0 obj
|
29
|
+
<<
|
30
|
+
/CreationDate (D:200608100525)
|
31
|
+
/Creator (sample_invoice_report.rb)
|
32
|
+
/Producer (PDF::Writer for Ruby)
|
33
|
+
>>
|
34
|
+
endobj
|
35
|
+
6 0 obj
|
36
|
+
<< /Type /Page
|
37
|
+
/Parent 3 0 R
|
38
|
+
/Contents [
|
39
|
+
7 0 R
|
40
|
+
9 0 R
|
41
|
+
10 0 R
|
42
|
+
]
|
43
|
+
>>
|
44
|
+
endobj
|
45
|
+
7 0 obj
|
46
|
+
<<
|
47
|
+
/Length 1498 >>
|
48
|
+
stream
|
49
|
+
|
50
|
+
0.000 0.000 0.000 rg
|
51
|
+
0.000 0.000 0.000 RG
|
52
|
+
0.800 0.800 0.800 RG
|
53
|
+
BT 36.000 742.440 Td /F1 10.0 Tf 0 Tr (Foo Inc.) Tj ET
|
54
|
+
BT 36.000 726.880 Td /F1 10.0 Tf 0 Tr (42 Rock Street) Tj ET
|
55
|
+
BT 36.000 711.320 Td /F1 10.0 Tf 0 Tr (New Haven, CT) Tj ET
|
56
|
+
0.000 0.000 0.000 RG
|
57
|
+
1 w
|
58
|
+
31.000 753.750 m
|
59
|
+
31.000 707.070 l S
|
60
|
+
231.000 753.750 m
|
61
|
+
231.000 707.070 l S
|
62
|
+
30.500 753.750 m
|
63
|
+
231.500 753.750 l S
|
64
|
+
30.500 707.070 m
|
65
|
+
231.500 707.070 l S
|
66
|
+
0.800 0.800 0.800 RG
|
67
|
+
BT 36.000 685.760 Td /F1 10.0 Tf 0 Tr (Gregory Brown) Tj ET
|
68
|
+
BT 36.000 670.200 Td /F1 10.0 Tf 0 Tr (gregory.t.brown@gmail.com) Tj ET
|
69
|
+
0.000 0.000 0.000 RG
|
70
|
+
1 w
|
71
|
+
31.000 697.070 m
|
72
|
+
31.000 665.950 l S
|
73
|
+
231.000 697.070 m
|
74
|
+
231.000 665.950 l S
|
75
|
+
30.500 697.070 m
|
76
|
+
231.500 697.070 l S
|
77
|
+
30.500 665.950 m
|
78
|
+
231.500 665.950 l S
|
79
|
+
BT 386.000 739.816 Td /F1 14.0 Tf 0 Tr (Invoice for Gregory) Tj ET
|
80
|
+
0.800 0.800 0.800 RG
|
81
|
+
BT 350.000 716.256 Td /F1 10.0 Tf 0 Tr (Order ID: 18180) Tj ET
|
82
|
+
BT 350.000 700.696 Td /F1 10.0 Tf 0 Tr (Customer ID: 6291) Tj ET
|
83
|
+
BT 350.000 685.136 Td /F1 10.0 Tf 0 Tr (Order Date: 2006-08-10) Tj ET
|
84
|
+
0.000 0.000 0.000 RG
|
85
|
+
1 w
|
86
|
+
345.000 727.566 m
|
87
|
+
345.000 680.886 l S
|
88
|
+
545.000 727.566 m
|
89
|
+
545.000 680.886 l S
|
90
|
+
344.500 727.566 m
|
91
|
+
545.500 727.566 l S
|
92
|
+
344.500 680.886 m
|
93
|
+
545.500 680.886 l S
|
94
|
+
0.800 0.800 0.800 RG
|
95
|
+
BT 81.000 604.128 Td /F1 12.0 Tf 0 Tr (item) Tj ET
|
96
|
+
BT 335.750 604.128 Td /F1 12.0 Tf 0 Tr (price) Tj ET
|
97
|
+
q
|
98
|
+
0.800 0.800 0.800 rg
|
99
|
+
76.000 582.068 450.000 15.560 re f
|
100
|
+
0.800 0.800 0.800 rg
|
101
|
+
76.000 550.948 450.000 15.560 re f
|
102
|
+
1 w
|
103
|
+
Q
|
104
|
+
BT 479.984 20.000 Td /F1 8.0 Tf 0 Tr (1 of 1) Tj ET
|
105
|
+
endstream
|
106
|
+
endobj
|
107
|
+
|
108
|
+
8 0 obj
|
109
|
+
<< /Type /Font
|
110
|
+
/Subtype /Type1
|
111
|
+
/Name /F1
|
112
|
+
/BaseFont /Helvetica
|
113
|
+
/Encoding /WinAnsiEncoding
|
114
|
+
>>
|
115
|
+
endobj
|
116
|
+
9 0 obj
|
117
|
+
<<
|
118
|
+
/Length 610 >>
|
119
|
+
stream
|
120
|
+
|
121
|
+
BT 81.000 586.318 Td /F1 10.0 Tf 0 Tr (Rock Collection) Tj ET
|
122
|
+
BT 335.750 586.318 Td /F1 10.0 Tf 0 Tr ($25.00) Tj ET
|
123
|
+
BT 81.000 570.758 Td /F1 10.0 Tf 0 Tr (Endless Sand Supply) Tj ET
|
124
|
+
BT 335.750 570.758 Td /F1 10.0 Tf 0 Tr ($500.00) Tj ET
|
125
|
+
BT 81.000 555.198 Td /F1 10.0 Tf 0 Tr (Fire Filled Pit) Tj ET
|
126
|
+
BT 335.750 555.198 Td /F1 10.0 Tf 0 Tr ($800.00) Tj ET
|
127
|
+
0.000 0.000 0.000 RG
|
128
|
+
1 w
|
129
|
+
76.000 620.000 m
|
130
|
+
76.000 550.948 l S
|
131
|
+
1 w
|
132
|
+
330.750 620.000 m
|
133
|
+
330.750 550.948 l S
|
134
|
+
1 w
|
135
|
+
526.000 620.000 m
|
136
|
+
526.000 550.948 l S
|
137
|
+
75.500 620.000 m
|
138
|
+
526.500 620.000 l S
|
139
|
+
76.000 599.878 m
|
140
|
+
526.000 599.878 l S
|
141
|
+
75.500 550.948 m
|
142
|
+
526.500 550.948 l S
|
143
|
+
endstream
|
144
|
+
endobj
|
145
|
+
|
146
|
+
10 0 obj
|
147
|
+
<<
|
148
|
+
/Length 419 >>
|
149
|
+
stream
|
150
|
+
|
151
|
+
q
|
152
|
+
0.000 0.000 0.000 RG
|
153
|
+
1 w 0 J 0 j [ ] 0 d
|
154
|
+
0.800 0.800 0.800 RG
|
155
|
+
BT 110.000 519.638 Td /F1 10.0 Tf 0 Tr (Be sure to visit our website at www.iheartruport.com) Tj ET
|
156
|
+
0.000 0.000 0.000 RG
|
157
|
+
1 w
|
158
|
+
105.000 530.948 m
|
159
|
+
105.000 515.388 l S
|
160
|
+
505.000 530.948 m
|
161
|
+
505.000 515.388 l S
|
162
|
+
104.500 530.948 m
|
163
|
+
505.500 530.948 l S
|
164
|
+
104.500 515.388 m
|
165
|
+
505.500 515.388 l S
|
166
|
+
BT 50.000 20.000 Td /F1 8.0 Tf 0 Tr (Printed at 01:25 10/08/2006) Tj ET
|
167
|
+
1 w
|
168
|
+
Q
|
169
|
+
endstream
|
170
|
+
endobj
|
171
|
+
|
172
|
+
xref
|
173
|
+
0 11
|
174
|
+
0000000000 65535 f
|
175
|
+
0000000015 00000 n
|
176
|
+
0000000079 00000 n
|
177
|
+
0000000116 00000 n
|
178
|
+
0000000258 00000 n
|
179
|
+
0000000287 00000 n
|
180
|
+
0000000408 00000 n
|
181
|
+
0000000488 00000 n
|
182
|
+
0000002039 00000 n
|
183
|
+
0000002146 00000 n
|
184
|
+
0000002808 00000 n
|
185
|
+
|
186
|
+
trailer
|
187
|
+
<< /Size 11
|
188
|
+
/Root 1 0 R
|
189
|
+
/Info 5 0 R
|
190
|
+
>>
|
191
|
+
startxref
|
192
|
+
3280
|
193
|
+
%%EOF
|