prawn 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/README +16 -2
  2. data/Rakefile +3 -3
  3. data/data/images/arrow.png +0 -0
  4. data/data/images/arrow2.png +0 -0
  5. data/data/images/barcode_issue.png +0 -0
  6. data/data/images/ruport_type0.png +0 -0
  7. data/examples/cell.rb +14 -3
  8. data/examples/chinese_text_wrapping.rb +17 -0
  9. data/examples/family_based_styling.rb +21 -0
  10. data/examples/fancy_table.rb +4 -4
  11. data/examples/flowing_text_with_header_and_footer.rb +72 -0
  12. data/examples/font_size.rb +2 -2
  13. data/examples/lazy_bounding_boxes.rb +19 -0
  14. data/examples/table.rb +13 -11
  15. data/examples/text_flow.rb +1 -1
  16. data/lib/prawn.rb +44 -15
  17. data/lib/prawn/compatibility.rb +20 -7
  18. data/lib/prawn/document.rb +72 -122
  19. data/lib/prawn/document/bounding_box.rb +124 -24
  20. data/lib/prawn/document/internals.rb +107 -0
  21. data/lib/prawn/document/table.rb +99 -70
  22. data/lib/prawn/document/text.rb +92 -314
  23. data/lib/prawn/errors.rb +13 -2
  24. data/lib/prawn/font.rb +312 -1
  25. data/lib/prawn/font/cmap.rb +1 -1
  26. data/lib/prawn/font/metrics.rb +52 -49
  27. data/lib/prawn/font/wrapping.rb +14 -12
  28. data/lib/prawn/graphics.rb +23 -74
  29. data/lib/prawn/graphics/cell.rb +30 -25
  30. data/lib/prawn/graphics/color.rb +132 -0
  31. data/lib/prawn/images.rb +37 -16
  32. data/lib/prawn/images/png.rb +29 -24
  33. data/lib/prawn/pdf_object.rb +3 -1
  34. data/spec/bounding_box_spec.rb +12 -3
  35. data/spec/document_spec.rb +40 -72
  36. data/spec/font_spec.rb +97 -0
  37. data/spec/graphics_spec.rb +46 -99
  38. data/spec/images_spec.rb +4 -21
  39. data/spec/pdf_object_spec.rb +8 -8
  40. data/spec/png_spec.rb +47 -12
  41. data/spec/spec_helper.rb +5 -24
  42. data/spec/table_spec.rb +53 -59
  43. data/spec/text_spec.rb +28 -93
  44. data/vendor/pdf-inspector/README +18 -0
  45. data/vendor/pdf-inspector/lib/pdf/inspector.rb +25 -0
  46. data/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +80 -0
  47. data/vendor/pdf-inspector/lib/pdf/inspector/page.rb +16 -0
  48. data/vendor/pdf-inspector/lib/pdf/inspector/text.rb +31 -0
  49. data/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +19 -0
  50. metadata +63 -38
  51. data/examples/on_page_start.rb +0 -17
  52. data/examples/table_bench.rb +0 -92
  53. data/spec/box_calculation_spec.rb +0 -17
@@ -0,0 +1,80 @@
1
+ module PDF
2
+ class Inspector
3
+ module Graphics
4
+ class Line < Inspector
5
+ attr_accessor :points, :widths
6
+
7
+ def initialize
8
+ @points = []
9
+ @widths = []
10
+ end
11
+
12
+ def append_line(*params)
13
+ @points << params
14
+ end
15
+
16
+ def begin_new_subpath(*params)
17
+ @points << params
18
+ end
19
+
20
+ def set_line_width(params)
21
+ @widths << params
22
+ end
23
+
24
+ end
25
+
26
+ class Rectangle < Inspector
27
+ attr_reader :rectangles
28
+
29
+ def initialize
30
+ @rectangles = []
31
+ end
32
+
33
+ def append_rectangle(*params)
34
+ @rectangles << { :point => params[0..1],
35
+ :width => params[2],
36
+ :height => params[3] }
37
+ end
38
+ end
39
+
40
+ class Curve < Inspector
41
+
42
+ attr_reader :coords
43
+
44
+ def initialize
45
+ @coords = []
46
+ end
47
+
48
+ def begin_new_subpath(*params)
49
+ @coords += params
50
+ end
51
+
52
+ def append_curved_segment(*params)
53
+ @coords += params
54
+ end
55
+
56
+ end
57
+
58
+ class Color < Inspector
59
+ attr_reader :stroke_color, :fill_color, :stroke_color_count,
60
+ :fill_color_count
61
+
62
+ def initialize
63
+ @stroke_color_count = 0
64
+ @fill_color_count = 0
65
+ end
66
+
67
+ def set_rgb_color_for_stroking(*params)
68
+ @stroke_color_count += 1
69
+ @stroke_color = params
70
+ end
71
+
72
+ def set_rgb_color_for_nonstroking(*params)
73
+ @fill_color_count += 1
74
+ @fill_color = params
75
+ end
76
+ end
77
+
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,16 @@
1
+ module PDF
2
+ class Inspector
3
+ class Page < Inspector
4
+ attr_reader :pages
5
+
6
+ def initialize
7
+ @pages = []
8
+ end
9
+
10
+ def begin_page(params)
11
+ @pages << {:size => params[:MediaBox][-2..-1]}
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ module PDF
2
+ class Inspector
3
+ class Text < Inspector
4
+ attr_accessor :font_settings, :size, :strings
5
+
6
+ def initialize
7
+ @font_settings = []
8
+ @fonts = {}
9
+ @strings = []
10
+ end
11
+
12
+ def resource_font(*params)
13
+ @fonts[params[0]] = params[1].basefont
14
+ end
15
+
16
+ def set_text_font_and_size(*params)
17
+ @font_settings << { :name => @fonts[params[0]], :size => params[1] }
18
+ end
19
+
20
+ def show_text(*params)
21
+ @strings << params[0]
22
+ end
23
+
24
+ def show_text_with_positioning(*params)
25
+ # ignore kerning information
26
+ @strings << params[0].reject { |e| Numeric === e }.join
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ module PDF
2
+ class Inspector
3
+ class XObject < Inspector
4
+ attr_accessor :page_xobjects
5
+
6
+ def initialize
7
+ @page_xobjects = []
8
+ end
9
+
10
+ def resource_xobject(*params)
11
+ @page_xobjects.last << params.first
12
+ end
13
+
14
+ def begin_page(*params)
15
+ @page_xobjects << []
16
+ end
17
+ end
18
+ end
19
+ end
metadata CHANGED
@@ -1,51 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: prawn
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2008-08-11 00:00:00 -04:00
8
- summary: A fast and nimble PDF generator for Ruby
9
- require_paths:
10
- - lib
11
- email: " gregory.t.brown@gmail.com"
12
- homepage: http://prawn.majesticseacreature.com
13
- rubyforge_project: prawn
14
- description: Prawn is a fast, tiny, and nimble PDF generator for Ruby
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.2.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Gregory Brown
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-09-12 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Prawn is a fast, tiny, and nimble PDF generator for Ruby
17
+ email: " gregory.t.brown@gmail.com"
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ - LICENSE
25
+ - COPYING
31
26
  files:
32
27
  - examples/addressbook.csv
33
28
  - examples/alignment.rb
34
29
  - examples/bounding_boxes.rb
35
30
  - examples/canvas.rb
36
31
  - examples/cell.rb
32
+ - examples/chinese_text_wrapping.rb
37
33
  - examples/currency.csv
38
34
  - examples/curves.rb
35
+ - examples/family_based_styling.rb
39
36
  - examples/fancy_table.rb
37
+ - examples/flowing_text_with_header_and_footer.rb
40
38
  - examples/font_size.rb
41
39
  - examples/hexagon.rb
42
40
  - examples/image.rb
43
41
  - examples/image2.rb
44
42
  - examples/image_flow.rb
45
43
  - examples/kerning.rb
44
+ - examples/lazy_bounding_boxes.rb
46
45
  - examples/line.rb
47
46
  - examples/multi_page_layout.rb
48
- - examples/on_page_start.rb
49
47
  - examples/page_geometry.rb
50
48
  - examples/png_types.rb
51
49
  - examples/polygons.rb
@@ -56,13 +54,13 @@ files:
56
54
  - examples/simple_text_ttf.rb
57
55
  - examples/sjis.rb
58
56
  - examples/table.rb
59
- - examples/table_bench.rb
60
57
  - examples/text_flow.rb
61
58
  - examples/utf8.rb
62
59
  - lib/prawn
63
60
  - lib/prawn/compatibility.rb
64
61
  - lib/prawn/document
65
62
  - lib/prawn/document/bounding_box.rb
63
+ - lib/prawn/document/internals.rb
66
64
  - lib/prawn/document/page_geometry.rb
67
65
  - lib/prawn/document/table.rb
68
66
  - lib/prawn/document/text.rb
@@ -75,6 +73,7 @@ files:
75
73
  - lib/prawn/font.rb
76
74
  - lib/prawn/graphics
77
75
  - lib/prawn/graphics/cell.rb
76
+ - lib/prawn/graphics/color.rb
78
77
  - lib/prawn/graphics.rb
79
78
  - lib/prawn/images
80
79
  - lib/prawn/images/jpg.rb
@@ -84,8 +83,8 @@ files:
84
83
  - lib/prawn/reference.rb
85
84
  - lib/prawn.rb
86
85
  - spec/bounding_box_spec.rb
87
- - spec/box_calculation_spec.rb
88
86
  - spec/document_spec.rb
87
+ - spec/font_spec.rb
89
88
  - spec/graphics_spec.rb
90
89
  - spec/images_spec.rb
91
90
  - spec/jpg_spec.rb
@@ -122,6 +121,16 @@ files:
122
121
  - vendor/font_ttf/ttf/table/vhea.rb
123
122
  - vendor/font_ttf/ttf/table/vmtx.rb
124
123
  - vendor/font_ttf/ttf.rb
124
+ - vendor/pdf-inspector
125
+ - vendor/pdf-inspector/lib
126
+ - vendor/pdf-inspector/lib/pdf
127
+ - vendor/pdf-inspector/lib/pdf/inspector
128
+ - vendor/pdf-inspector/lib/pdf/inspector/graphics.rb
129
+ - vendor/pdf-inspector/lib/pdf/inspector/page.rb
130
+ - vendor/pdf-inspector/lib/pdf/inspector/text.rb
131
+ - vendor/pdf-inspector/lib/pdf/inspector/xobject.rb
132
+ - vendor/pdf-inspector/lib/pdf/inspector.rb
133
+ - vendor/pdf-inspector/README
125
134
  - data/fonts
126
135
  - data/fonts/Activa.ttf
127
136
  - data/fonts/Chalkboard.ttf
@@ -145,6 +154,9 @@ files:
145
154
  - data/fonts/Times-Roman.afm
146
155
  - data/fonts/ZapfDingbats.afm
147
156
  - data/images
157
+ - data/images/arrow.png
158
+ - data/images/arrow2.png
159
+ - data/images/barcode_issue.png
148
160
  - data/images/dice.alpha
149
161
  - data/images/dice.dat
150
162
  - data/images/dice.png
@@ -157,6 +169,7 @@ files:
157
169
  - data/images/ruport.png
158
170
  - data/images/ruport_data.dat
159
171
  - data/images/ruport_transparent.png
172
+ - data/images/ruport_type0.png
160
173
  - data/images/stef.jpg
161
174
  - data/images/web-links.dat
162
175
  - data/images/web-links.png
@@ -165,23 +178,35 @@ files:
165
178
  - README
166
179
  - LICENSE
167
180
  - COPYING
168
- test_files: []
169
-
181
+ has_rdoc: true
182
+ homepage: http://prawn.majesticseacreature.com
183
+ post_install_message:
170
184
  rdoc_options:
171
185
  - --title
172
186
  - Prawn Documentation
173
187
  - --main
174
188
  - README
175
189
  - -q
176
- extra_rdoc_files:
177
- - README
178
- - LICENSE
179
- - COPYING
180
- executables: []
181
-
182
- extensions: []
183
-
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: "0"
197
+ version:
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: "0"
203
+ version:
184
204
  requirements: []
185
205
 
186
- dependencies: []
206
+ rubyforge_project: prawn
207
+ rubygems_version: 1.2.0
208
+ signing_key:
209
+ specification_version: 2
210
+ summary: A fast and nimble PDF generator for Ruby
211
+ test_files: []
187
212
 
@@ -1,17 +0,0 @@
1
- # encoding: utf-8
2
-
3
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
- require "prawn"
5
-
6
- page_start = lambda do |doc|
7
- doc.stroke_line [100,100], [300,300]
8
- end
9
-
10
- pdf = Prawn::Document.new(:on_page_start => page_start)
11
-
12
- pdf.stroke_line [0,0], [100,100]
13
- pdf.start_new_page
14
- pdf.stroke_line [300,300],[400,400]
15
- pdf.start_new_page
16
- pdf.render_file "page_start_hooks.pdf"
17
-
@@ -1,92 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require "rubygems"
4
- require "pdf/writer"
5
- require "pdf/simpletable"
6
- gem "pdf-wrapper", ">=0.1.2"
7
- require "pdf/wrapper"
8
- require "fastercsv"
9
- require "benchmark"
10
-
11
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
12
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'examples')
13
- require "prawn"
14
- require "ruport_formatter"
15
-
16
- csv_data = FasterCSV.read("#{Prawn::BASEDIR}/examples/currency.csv") *
17
- (ARGV.first || 1).to_i
18
-
19
- ####################################
20
- # PDF::Writer Table Rendering Prep #
21
- ####################################
22
- pdf = PDF::Writer.new
23
- pdf.select_font("Helvetica")
24
-
25
- table = PDF::SimpleTable.new do |tab|
26
- tab.column_order.push(*%w(date rate))
27
-
28
- tab.columns["date"] = PDF::SimpleTable::Column.new("date") { |col|
29
- col.heading = "Date"
30
- }
31
- tab.columns["rate"] = PDF::SimpleTable::Column.new("rate") { |col|
32
- col.heading = "Rate"
33
- }
34
-
35
- tab.orientation = :center
36
-
37
- data = csv_data.map do |e|
38
- { "date" => e[0], "rate" => e[1] }
39
- end
40
-
41
- tab.data.replace data
42
- end
43
-
44
- ##############################
45
- # Prawn Table Rendering Prep #
46
- ##############################
47
- doc = Prawn::Document.new
48
-
49
- #####################
50
- # Ruport/Prawn Prep #
51
- #####################
52
-
53
- ruport_table = Table(%w[Date Rate], :data => csv_data)
54
- ruport_doc = Prawn::Document.new
55
-
56
- ##############################
57
- # PDF::Wrapper Table Rendering Prep
58
- ##############################
59
- wrapper_doc = PDF::Wrapper.new
60
- wrapper_table = PDF::Wrapper::Table.new do |t|
61
- t.data = csv_data
62
- t.table_options :font_size => 6
63
- end
64
-
65
- #######################
66
- # Benchmarking code #
67
- #######################
68
-
69
- puts "Processing #{csv_data.length} records"
70
-
71
- Benchmark.bmbm do |x|
72
- x.report("PDF Wrapper") do
73
- wrapper_doc.table( wrapper_table, :width => 100 ) unless wrapper_doc.finished?
74
- wrapper_doc.render_to_file('currency_pdf_wrapper.pdf')
75
- end
76
- x.report("Prawn") do
77
- doc.table(csv_data, :font_size => 10,
78
- :vertical_padding => 2,
79
- :horizontal_padding => 5,
80
- :position => :center,
81
- :row_colors => :pdf_writer,
82
- :headers => ["Date","Rate"])
83
- doc.render_file('currency_prawn.pdf')
84
- end
85
- x.report("Ruport/Prawn") do
86
- ruport_table.save_as('currency_ruport.pdf', :document => ruport_doc)
87
- end
88
- x.report("PDF Writer") do
89
- table.render_on(pdf)
90
- pdf.save_as('currency_pdf_writer.pdf')
91
- end
92
- end