prawn 0.1.2 → 0.2.0

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.
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