pdf_gen 0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/LICENSE +19 -0
  2. data/README.rdoc +189 -0
  3. data/lib/base_region.rb +95 -0
  4. data/lib/caption.rb +78 -0
  5. data/lib/containers/caption_container.rb +15 -0
  6. data/lib/containers/div_container.rb +14 -0
  7. data/lib/containers/image_container.rb +15 -0
  8. data/lib/containers/span_container.rb +14 -0
  9. data/lib/containers/table_container.rb +14 -0
  10. data/lib/data/ds_ar.rb +31 -0
  11. data/lib/data/ds_base.rb +24 -0
  12. data/lib/data/ds_hash.rb +24 -0
  13. data/lib/div.rb +148 -0
  14. data/lib/document.rb +50 -0
  15. data/lib/fixnum.rb +18 -0
  16. data/lib/float.rb +18 -0
  17. data/lib/image.rb +46 -0
  18. data/lib/modules/base_attributes.rb +86 -0
  19. data/lib/modules/canvas.rb +15 -0
  20. data/lib/modules/composite.rb +54 -0
  21. data/lib/pdf_gen.rb +30 -0
  22. data/lib/smart_table.rb +155 -0
  23. data/lib/span.rb +69 -0
  24. data/lib/table.rb +116 -0
  25. data/lib/writer.rb +30 -0
  26. data/samples/border.rb +15 -0
  27. data/samples/div.rb +23 -0
  28. data/samples/div_illustration.rb +64 -0
  29. data/samples/headerfooter.rb +94 -0
  30. data/samples/image.rb +9 -0
  31. data/samples/ruby_logo.jpg +0 -0
  32. data/samples/sampl1_1.png +0 -0
  33. data/samples/sampl1_2.png +0 -0
  34. data/samples/sampl1_3.png +0 -0
  35. data/samples/simple.rb +7 -0
  36. data/samples/smart_table.rb +98 -0
  37. data/samples/span.rb +12 -0
  38. data/samples/span_illustration.rb +41 -0
  39. data/samples/spanindiv_ill.rb +53 -0
  40. data/samples/table.rb +37 -0
  41. data/samples/table_illustration.rb +177 -0
  42. data/samples/tableindiv_ill.rb +99 -0
  43. data/test/caption_test.rb +99 -0
  44. data/test/container_test.rb +29 -0
  45. data/test/div_test.rb +39 -0
  46. data/test/helpers_for_testing.rb +19 -0
  47. data/test/image_test.rb +54 -0
  48. data/test/shared_examples.rb +68 -0
  49. data/test/span_test.rb +83 -0
  50. data/test/table_test.rb +27 -0
  51. metadata +139 -0
data/samples/div.rb ADDED
@@ -0,0 +1,23 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ image_data = open(File.expand_path('ruby_logo.jpg'), "rb") { |file| file.read }
6
+
7
+ PDFGen::document PDF::Writer.new, 2.cm do
8
+ div :width => 12.cm do
9
+ span :paddings => 0.5.cm, :border => true do
10
+ image image_data, :width => 5.cm
11
+ caption ' first '*50, :width => 3.cm
12
+ caption ' second '*100, :width => 4.cm
13
+ end
14
+ span :paddings => 0.5.cm, :border => true do
15
+ image image_data, :width => 5.cm
16
+ caption ' first '*50, :width => 3.cm
17
+ caption ' second '*50, :width => 3.cm
18
+ end
19
+
20
+
21
+ end
22
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
23
+
@@ -0,0 +1,64 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+ long_text = <<TEXT
5
+ A Software Requirements Specification (SRS) - a requirements
6
+ specification for a software system - is a complete description of the behavior
7
+ of a system to be developed. It includes a set of use cases that describe all
8
+ the interactions the users will have with the software.
9
+ Use cases are also known as functional requirements.
10
+ In addition to use cases, the SRS also contains non-functional
11
+ (or supplementary) requirements. Non-functional requirements are requirements
12
+ which impose constraints on the design or implementation
13
+ (such as performance engineering requirements, quality standards,
14
+ or design constraints).
15
+ TEXT
16
+ PDFGen::document PDF::Writer.new, 2.cm do
17
+ caption ' Software Requirements Specification ', :text_color => Color::RGB::Grey,
18
+ :font_size => 16, :bold => true, :justification => :center
19
+
20
+ caption long_text,
21
+ :text_color => Color::RGB::Grey, :font_size => 12, :justification => :left
22
+
23
+ div :width => 18.cm, :horizontal_interval => 1.cm do
24
+
25
+ span :pad_left => 2.cm do
26
+ caption '1', :width => 2.cm
27
+ caption 'INTRODUCTION', :width => 12.cm
28
+ end
29
+ span :width => 16.cm, :pad_left => 2.5.cm do
30
+ caption '1.1', :width => 2.cm
31
+ caption 'Product Overview', :width => 10.cm
32
+ end
33
+ span :width => 16.cm, :pad_left => 2.5.cm do
34
+ caption '1.2', :width => 2.cm
35
+ caption 'Purpose', :width => 10.cm
36
+ end
37
+ span :width => 16.cm, :pad_left => 2.5.cm do
38
+ caption '1.3', :width => 2.cm
39
+ caption 'Scope', :width => 10.cm
40
+ end
41
+ span :width => 16.cm, :pad_left => 2.5.cm do
42
+ caption '1.4', :width => 2.cm
43
+ caption 'Reference', :width => 10.cm
44
+ end
45
+ span :width => 16.cm, :pad_left => 2.5.cm do
46
+ caption '1.4', :width => 2.cm
47
+ caption 'Definitions and Abbreviations', :width => 10.cm
48
+ end
49
+ span :pad_left => 2.cm do
50
+ caption '2', :width => 2.cm
51
+ caption 'OVERALL DESCRIPTION', :width => 12.cm
52
+ end
53
+ span :width => 18.cm, :pad_left => 2.cm do
54
+ caption '3', :width => 2.cm
55
+ caption 'SPECIFIC REQUIREMENTS', :width => 12.cm
56
+ end
57
+ span :width => 18.cm, :pad_left => 2.cm do
58
+ caption '4', :width => 2.cm
59
+ caption 'ADDITIONAL MATERIALS', :width => 12.cm
60
+ end
61
+
62
+ end
63
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
64
+
@@ -0,0 +1,94 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ PDFGen::document PDF::Writer.new, 1.cm do
6
+ div :paddings => 1.cm do
7
+ table do
8
+ title do
9
+ caption "02.11.2010",
10
+ :text_color => Color::RGB::Green, :justification => :center
11
+ end
12
+
13
+ header do
14
+ span do
15
+ caption "This paper, copyright the IEEE, appears in IEEE Symposium on Security and Privacy 2004. IEEE Computer
16
+ Society Press, May 2004. This paper previously appeared as Johns Hopkins University Information Security
17
+ Institute Technical Report TR-2003-19, July 23, 2003.",
18
+ :width => av_width, :justification => :center, :pad_bottom => 2.5.cm,
19
+ :border => true, :border_bottom => false, :font_size => 9
20
+ end
21
+ end
22
+
23
+ body do
24
+ span do
25
+ caption "Analysis of an Electronic Voting System ",
26
+ :justification => :center, :pad_bottom => 1.0.cm, :border_right => true,
27
+ :border_left => true, :pad_bottom => 2, :font_size => 16
28
+ end
29
+
30
+ span do
31
+ caption "TADAYOSHI KOHNO",
32
+ :width => av_width / 3, :justification => :center,
33
+ :border => true
34
+ caption "ADAM STUBBLEFIELD",
35
+ :width => av_width / 3, :justification => :center,
36
+ :border => true
37
+ caption "DAN S. WALLACH",
38
+ :width => av_width / 3, :justification => :center,
39
+ :border => true
40
+ end
41
+
42
+ span do
43
+ caption " With significant U.S. federal funds now available to replace outdated punch-card and mechanical
44
+ voting systems, municipalities and states throughout the U.S. are adopting paperless electronic voting
45
+ systems from a number of different vendors. We present a security analysis of the source code to one such
46
+ machine used in a significant share of the market. Our analysis shows that this voting system is far below
47
+ even the most minimal security standards applicable in other contexts. We identify several problems
48
+ including unauthorized privilege escalation, incorrect use of cryptography, vulnerabilities to network
49
+ threats, and poor software development processes. We show that voters, without any insider privileges,
50
+ can cast unlimited votes without being detected by any mechanisms within the voting terminal software.
51
+ Furthermore, we show that even the most serious of our outsider attacks could have been discovered
52
+ and executed without access to the source code. In the face of such attacks, the usual worries about
53
+ insider threats are not the only concerns; outsiders can do the damage. That said, we demonstrate that
54
+ the insider threat is also quite considerable, showing that not only can an insider, such as a poll worker,
55
+ modify the votes, but that insiders can also violate voter privacy and match votes with the voters who
56
+ cast them. We conclude that this voting system is unsuitable for use in a general election. Any paperless
57
+ electronic voting system might suffer similar flaws, despite any certification it could have otherwise
58
+ received. We suggest that the best solutions are voting systems having a voter-verifiable audit trail,
59
+ where a computerized voting system might print a paper ballot that can be read and verified by the voter. ",
60
+
61
+ :justification => :left, :font_size => 12, :border => true
62
+
63
+ end
64
+
65
+ end
66
+
67
+ footer do
68
+ span do
69
+ caption "Dept. of Computer Science and Engineering, University
70
+ of California at San Diego, 9500 Gilman Drive, La Jolla, California 92093,
71
+ USA. E-mail: tkohno@cs.ucsd.edu. URL: http://www-cse.ucsd.edu/users/tkohno.
72
+ Most of this work was performed while visiting the Johns Hopkins University
73
+ Information Security Institute. Supported by a National Defense Science and
74
+ Engineering Graduate Fellowship. ",
75
+ :width => av_width / 3, :justification => :center,
76
+ :border_top => true,
77
+ :pad_bottom => 2, :font_size => 9
78
+
79
+ caption "Information Security Institute, Johns Hopkins University,
80
+ 3400 North Charles Street, Baltimore, Maryland 21218, USA.
81
+ E-mail: astubble@cs.jhu.edu. URL: http://spar.isi.jhu.edu/.astubble.",
82
+ :width => av_width / 3, :justification => :center,
83
+ :border_top => true, :font_size => 9
84
+
85
+ caption "IInformation Security Institute, Johns Hopkins University,
86
+ 3400 North Charles Street, Baltimore, Maryland 21218, USA. E-mail: rubin@cs.jhu.edu.
87
+ URL: http://www.avirubin.com.",
88
+ :width => av_width / 3, :justification => :center,
89
+ :border_top => true, :font_size => 9
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
data/samples/image.rb ADDED
@@ -0,0 +1,9 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ PDFGen::document PDF::Writer.new, 2.cm do
6
+ image_data = open(File.expand_path('ruby_logo.jpg'), "rb") { |file| file.read }
7
+ image image_data, :width => 250
8
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
9
+
Binary file
Binary file
Binary file
Binary file
data/samples/simple.rb ADDED
@@ -0,0 +1,7 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+ PDFGen::document PDF::Writer.new, 2.cm do
5
+ caption "text "*20, :width => 5.cm
6
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
7
+
@@ -0,0 +1,98 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ table_data = {:columns => ['Software requirements', 'Software design',
6
+ 'Software contractions', 'Software Testing', 'Software maintenance'],
7
+
8
+ :body => [["Requirements fundamentals", "Design fundamentals",
9
+ "Software contractions fundamentals", "Software testing fundamentals",
10
+ "Software maintenance fundamentals"],
11
+ ["Requirements process", "Key issues in software design",
12
+ "Managing constructions", "Test levels", "Key issues in software maintenance"],
13
+ ["Requirements ellocation", "Software structure and architecture",
14
+ "Practical considerations", "Test techniques", "Maintenance process"],
15
+ ["Requirements analyses", "Design quality analyses and evaluation", " ",
16
+ "Test related messures", "Techniques for maintenance"],
17
+ ["Requirements specification", "Design notations", " ", "Test processes",
18
+ " "],
19
+ ["Requirements validation", "Design strategy and methods", " ", " ", " "]] }
20
+
21
+
22
+ PDFGen::document PDF::Writer.new, 0.5.cm do
23
+
24
+ div :horizontal_interval => 1.cm,
25
+ :pad_left => 1.cm, :pad_right => 1.cm do
26
+
27
+
28
+ table :data_source => table_data, :repeat_header_on_each_page => true do
29
+
30
+ title do
31
+ span :pad_top => 1.cm, :pad_bottom => 1.cm do
32
+ caption "SWEBOK STRUCTURE, main processes", :width => av_width * 3/7,
33
+ :justification => :center,
34
+ :pad_top => 1.05.cm, :pad_bottom => 1.cm, :font_size => 22,
35
+ :text_color => Color::RGB::Green
36
+ div :width => av_width * 4/7, :background_color => Color::RGB::LightGrey,
37
+ :border => true, :border_width => 2, :border_color => Color::RGB::Green do
38
+
39
+ caption "IEEE",
40
+ :justification => :center, :pad_top => 1.cm,
41
+ :font_size => 24, :text_color => Color::RGB::DarkGrey
42
+ caption "Computer Society",
43
+ :justification => :center, :pad_top => 1.cm, :font_size => 20,
44
+ :text_color => Color::RGB::White
45
+
46
+ end
47
+ end
48
+ end
49
+
50
+ header do
51
+ row do
52
+ cell ds.columns[0], :justification => :center, :font_size => 14, :text_color => Color::RGB::Grey
53
+ cell ds.columns[1], :justification => :center,
54
+ :font_size => 14, :text_color => Color::RGB::Grey
55
+ cell ds.columns[2], :justification => :center,
56
+ :font_size => 14, :text_color => Color::RGB::Grey
57
+ cell ds.columns[3], :justification => :center,
58
+ :font_size => 14, :text_color => Color::RGB::Grey
59
+ cell ds.columns[4], :justification => :center,
60
+ :font_size => 14, :text_color => Color::RGB::Grey
61
+ end
62
+ end
63
+
64
+ body do
65
+
66
+ ds.each do |datarow|
67
+ row do
68
+ cell datarow[0], :justification => :center,
69
+ :border_right => true
70
+ cell datarow[1], :justification => :center,
71
+ :border_right => true
72
+ cell datarow[2], :justification => :center,
73
+ :border_right => true
74
+ cell datarow[3], :justification => :center,
75
+ :border_right => true
76
+ cell datarow[4], :justification => :center
77
+ end
78
+ end
79
+ end
80
+
81
+ footer do
82
+ span :background_color => Color::RGB::LightGrey do
83
+ caption "About Us: Mission, Vision & Goals, History Awards Program Volunteer Leadership Staff Leadership Nondiscrimination Policy"
84
+ caption "Contact Us: Customer Service, Key Staff Contacts Advertising Office Locations & Directions Report Website Issue"
85
+ caption "Member Resources: Renew Membership Access e-Learning Courses Access Safari Books Online Access Books 24x7 Discounted Subscriptions Discounted Conference Registration Chapter Contacts
86
+ Username / Password Issues"
87
+ caption "Volunteer Center: Member & Geographic Activities Educational Activities Professional Activities"
88
+ caption "For More Information: Press Room Member Resource Guide (PDF) Author Information Request Information"
89
+ elements :justification => :center, :font_size => 7, :text_color => Color::RGB::White, :width => av_width/5
90
+ end
91
+ end
92
+
93
+ end
94
+ end
95
+
96
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
97
+
98
+
data/samples/span.rb ADDED
@@ -0,0 +1,12 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ PDFGen::document PDF::Writer.new, 2.cm do
6
+ span :width => 10.cm, :pad_left => 2.cm do
7
+ caption ' first '*50, :width => 4.cm
8
+ caption ' second '*50, :width => 4.cm
9
+ elements :border => true #group set params
10
+ end
11
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
12
+
@@ -0,0 +1,41 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+ image_data = open(File.expand_path('sampl1_2.png'), "rb") { |file| file.read }
5
+ image_data1 = open(File.expand_path('sampl1_3.png'), "rb") { |file| file.read }
6
+
7
+ PDFGen::document PDF::Writer.new, 1.cm do
8
+ caption ' Mixed Integer Linear Programming: ',
9
+ :paddings => 1.5.cm, :text_color => Color::RGB::Grey, :justification => :center, :font_size => 20
10
+
11
+ caption ' Branch and Bound: ', :paddings => 1.5.cm,
12
+ :text_color => Color::RGB::Red, :justification => :center, :font_size => 20
13
+
14
+ div :pad_left => 0.5.cm, :pad_right => 0.5.cm do
15
+
16
+ span :border => true, :border_color => Color::RGB::Red, :paddings => 1 do
17
+ image image_data, :width => 10.cm, :border_right => true, :border_color => Color::RGB::Grey
18
+
19
+ caption ' Branch and Bound - implicit enumeration solve relaxed LP problem with additional
20
+ bounds for integer variables ', :width => 10.cm, :font_size => 12, :justification => :center
21
+ end
22
+
23
+ caption ' Branch and Cut: ', :paddings => 1.cm, :text_color => Color::RGB::Red, :justification => :center,
24
+ :font_size => 20
25
+
26
+ span :border => true,
27
+ :border_style => :dotted, :border_width => 0.05.cm, :border_color => Color::RGB::Red do
28
+
29
+ caption ' Branch and Cut solve relaxed LP problem with additional valid constraints B&B
30
+ is a proof techniques', :width => 10.cm, :paddings => 1.cm, :border_width => 0.2.cm,
31
+ :border_color => Color::RGB::Grey,
32
+ :font_size => 12, :justification => :center
33
+
34
+
35
+ image image_data1, :width => 10.cm, :pad_left => 0.7.cm, :pad_right => 0.7.cm,
36
+ :pad_top => 0.3.cm, :pad_bottom => 0.3.cm, :border_left => true,
37
+ :border_color => Color::RGB::Grey
38
+ end
39
+ end
40
+
41
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
@@ -0,0 +1,53 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ PDFGen::document PDF::Writer.new, 2.cm do
6
+ div :pad_right => 1 do
7
+ div :horizontal_interval => 1.0.cm,:paddings => 1.cm, :border => true, :border_style => :dotted, :border_width => 1.5 do
8
+
9
+ caption 'Introduction: Models, Model Building and Mathematical Optimization', :width => 20.cm,
10
+ :pad_top => 1.cm, :pad_bottom => 1.cm,
11
+ :border => true, :border_width => 0.02.cm, :background_color => Color::RGB::Grey,
12
+ :text_color => Color:: RGB::White, :font_size => 18, :bold => true, :justification => :center
13
+
14
+ caption 'The Importance of Modeling Langauges for Solving Real World Problems', :width => 20.cm,
15
+ :pad_top => 1.cm, :pad_bottom => 1.cm,
16
+ :border => true, :border_width => 0.02.cm,
17
+ :background_color => Color::RGB::LightGrey, :text_color => Color::RGB::White, :font_size => 16,
18
+ :bold => true, :justification => :center
19
+ elements :border_color => Color::RGB::Grey
20
+
21
+ caption 'Josef Kallrath', :width => 20.cm,
22
+ :pad_left => 1.cm, :pad_right => 1.cm, :pad_top => 0.cm, :pad_bottom => 0.cm,
23
+ :text_color => Color::RGB::LightBlue, :font_size => 22, :justification => :center
24
+
25
+ caption 'Structure of the Lecture: ', :width => 20.cm,
26
+ :text_color => Color::RGB::Red, :justification => :center, :font_size => 20
27
+
28
+ span :width => 20.cm, :pad_left => 0.05.cm, :border => true, :border_width => 0.05.cm, :border_color => Color::RGB::Red,
29
+ :background_color => Color::RGB::LightPink do
30
+
31
+ image_data = open(File.expand_path('sampl1_1.png'), "rb") { |file| file.read }
32
+ image image_data, :paddings => 0.2.cm, :width => 7.5.cm
33
+
34
+ div :width => 11.5.cm, :horizontal_interval => 0.1.cm do
35
+ caption ' * the Modeling Process, ', :justification => :left,
36
+ :text_color => Color::RGB::Grey, :font_size => 12
37
+ caption ' * survey of Real World Problems, ',:justification => :left,
38
+ :text_color => Color::RGB::Grey, :font_size => 12
39
+ caption ' * mathematical background (solution algorithms), ',:justification => :left,
40
+ :text_color => Color::RGB::Grey, :font_size => 12
41
+ caption ' * efficient problem solving & good modeling practice, ', :justification => :left,
42
+ :text_color => Color::RGB::Grey, :font_size => 12
43
+ caption ' * mathematical modeling & optimization in practice, ',:justification => :left,
44
+ :text_color => Color::RGB::Grey, :font_size => 12
45
+ caption ' * practioners`s requirements towards modeling languages ', :justification => :left,
46
+ :text_color => Color::RGB::Grey, :font_size => 12
47
+
48
+ end
49
+ end
50
+ end
51
+ caption '- 45 -', :justification => :center
52
+ end
53
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
data/samples/table.rb ADDED
@@ -0,0 +1,37 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+ image_data = open(File.expand_path('ruby_logo.jpg'), "rb") { |file| file.read }
5
+
6
+ PDFGen::document PDF::Writer.new, 2.cm do
7
+ div :paddings => 15 do
8
+ table do
9
+ title do
10
+ caption "<i>Table 1.1.</i> <b>Users</b>", :pad_bottom => 1
11
+ end
12
+ header do
13
+ span do
14
+ caption "name", :width => av_width/3
15
+ caption "Last name", :width => av_width/3
16
+ caption "Email", :width => av_width/3
17
+ elements :border => true, :paddings => 1, :justification => :center
18
+ end
19
+ end
20
+ body do
21
+ span do
22
+ caption "Valeriy", :width => av_width/3
23
+ caption "Sizov", :width => av_width/3
24
+ caption "example@gmail.com", :width => av_width/3
25
+ elements :border => true, :paddings => 1
26
+ end
27
+ span do
28
+ caption "Dmitriy", :width => av_width/3
29
+ caption "Landberg", :width => av_width/3
30
+ caption "example1@gmail.com", :width => av_width/3
31
+ elements :border => true, :paddings => 1
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")
37
+
@@ -0,0 +1,177 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + "/../"))
2
+ require "lib/pdf_gen"
3
+
4
+
5
+ PDFGen::document PDF::Writer.new, 1.cm do
6
+ div :paddings => 5 do
7
+ table do
8
+ title do
9
+ caption "Financial Report", :text_color => Color::RGB::Green,
10
+ :border => true, :font_size => 16, :justification => :center
11
+ end
12
+
13
+ header do
14
+ span do
15
+ caption "Characteristic",
16
+ :width => av_width / 8, :justification => :center,
17
+ :border => true, :font_size => 9
18
+
19
+ caption "2005",
20
+ :width => av_width / 8, :justification => :center,
21
+ :border => true, :font_size => 9
22
+
23
+ caption "2006",
24
+ :width => av_width / 8, :justification => :center,
25
+ :border => true, :font_size => 9
26
+
27
+ caption "2007",
28
+ :width => av_width / 8, :justification => :center,
29
+ :border => true, :font_size => 9
30
+
31
+ caption "2008",
32
+ :width => av_width / 8, :justification => :center,
33
+ :border => true, :font_size => 9
34
+
35
+ caption "2009",
36
+ :width => av_width / 8, :justification => :center,
37
+ :border => true, :font_size => 9
38
+
39
+ caption "2010",
40
+ :width => av_width / 8, :justification => :center,
41
+ :border => true, :font_size => 9
42
+
43
+ caption "2011",
44
+ :width => av_width / 8, :justification => :center,
45
+ :border => true, :font_size => 9
46
+ end
47
+ end
48
+
49
+ body do
50
+ span do
51
+ caption "Profit",
52
+ :width => av_width / 8, :justification => :center,
53
+ :border => true, :font_size => 12
54
+
55
+ caption "1000",
56
+ :width => av_width / 8, :justification => :center,
57
+ :border => true, :font_size => 12
58
+ caption "1000",
59
+ :width => av_width / 8, :justification => :center,
60
+ :border => true, :font_size => 12
61
+ caption "1000",
62
+ :width => av_width / 8, :justification => :center,
63
+ :border => true, :font_size => 12
64
+ caption "1000",
65
+ :width => av_width / 8, :justification => :center,
66
+ :border => true, :font_size => 12
67
+ caption "1000",
68
+ :width => av_width / 8, :justification => :center,
69
+ :border => true, :font_size => 12
70
+ caption "1000",
71
+ :width => av_width / 8, :justification => :center,
72
+ :border => true, :font_size => 12
73
+ caption "1000",
74
+ :width => av_width / 8, :justification => :center,
75
+ :border => true, :font_size => 12
76
+ end
77
+
78
+ span do
79
+
80
+ caption "Income",
81
+ :width => av_width / 8, :justification => :center,
82
+ :border => true, :font_size => 12
83
+
84
+ caption "2000",
85
+ :width => av_width / 8, :justification => :center,
86
+ :border => true, :font_size => 12
87
+ caption "2001",
88
+ :width => av_width / 8, :justification => :center,
89
+ :border => true, :font_size => 12
90
+ caption "2002",
91
+ :width => av_width / 8, :justification => :center,
92
+ :border => true, :font_size => 12
93
+ caption "2003",
94
+ :width => av_width / 8, :justification => :center,
95
+ :border => true, :font_size => 12
96
+ caption "2004",
97
+ :width => av_width / 8, :justification => :center,
98
+ :border => true, :font_size => 12
99
+ caption "2005",
100
+ :width => av_width / 8, :justification => :center,
101
+ :border => true, :font_size => 12
102
+ caption "2006",
103
+ :width => av_width / 8, :justification => :center,
104
+ :border => true, :font_size => 12
105
+ end
106
+
107
+ span do
108
+
109
+ caption "Costs",
110
+ :width => av_width / 8, :justification => :center,
111
+ :border => true, :font_size => 12
112
+
113
+ caption "1000",
114
+ :width => av_width / 8, :justification => :center,
115
+ :border => true, :font_size => 12
116
+ caption "1001",
117
+ :width => av_width / 8, :justification => :center,
118
+ :border => true, :font_size => 12
119
+ caption "1002",
120
+ :width => av_width / 8, :justification => :center,
121
+ :border => true, :font_size => 12
122
+ caption "1003",
123
+ :width => av_width / 8, :justification => :center,
124
+ :border => true, :font_size => 12
125
+ caption "1004",
126
+ :width => av_width / 8, :justification => :center,
127
+ :border => true, :font_size => 12
128
+ caption "1005",
129
+ :width => av_width / 8, :justification => :center,
130
+ :border => true, :font_size => 12
131
+ caption "1006",
132
+ :width => av_width / 8, :justification => :center,
133
+ :border => true, :font_size => 12
134
+ end
135
+
136
+ end
137
+
138
+ footer do
139
+
140
+ span do
141
+
142
+ caption "1",
143
+ :width => av_width / 8, :justification => :center,
144
+ :border => true, :font_size => 9
145
+
146
+ caption "2",
147
+ :width => av_width / 8, :justification => :center,
148
+ :border => true, :font_size => 9
149
+
150
+ caption "3",
151
+ :width => av_width / 8, :justification => :center,
152
+ :border => true, :font_size => 9
153
+
154
+ caption "4",
155
+ :width => av_width/ 8, :justification => :center,
156
+ :border => true, :font_size => 9
157
+
158
+ caption "5",
159
+ :width => av_width / 8, :justification => :center,
160
+ :border => true, :font_size => 9
161
+
162
+ caption "6",
163
+ :width => av_width / 8, :justification => :center,
164
+ :border => true, :font_size => 9
165
+
166
+ caption "7",
167
+ :width => av_width / 8, :justification => :center,
168
+ :border => true, :font_size => 9
169
+
170
+ caption "8",
171
+ :width => av_width / 8, :justification => :center,
172
+ :border => true, :font_size => 9
173
+ end
174
+ end
175
+ end
176
+ end
177
+ end.save("#{File.basename(__FILE__, ".rb")}.pdf")