fullcirclegroup-prawn 0.2.99.3

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 (117) hide show
  1. data/COPYING +340 -0
  2. data/LICENSE +56 -0
  3. data/README +47 -0
  4. data/Rakefile +76 -0
  5. data/data/fonts/Activa.ttf +0 -0
  6. data/data/fonts/Chalkboard.ttf +0 -0
  7. data/data/fonts/Courier-Bold.afm +342 -0
  8. data/data/fonts/Courier-BoldOblique.afm +342 -0
  9. data/data/fonts/Courier-Oblique.afm +342 -0
  10. data/data/fonts/Courier.afm +342 -0
  11. data/data/fonts/DejaVuSans.ttf +0 -0
  12. data/data/fonts/Dustismo_Roman.ttf +0 -0
  13. data/data/fonts/Helvetica-Bold.afm +2827 -0
  14. data/data/fonts/Helvetica-BoldOblique.afm +2827 -0
  15. data/data/fonts/Helvetica-Oblique.afm +3051 -0
  16. data/data/fonts/Helvetica.afm +3051 -0
  17. data/data/fonts/MustRead.html +19 -0
  18. data/data/fonts/Symbol.afm +213 -0
  19. data/data/fonts/Times-Bold.afm +2588 -0
  20. data/data/fonts/Times-BoldItalic.afm +2384 -0
  21. data/data/fonts/Times-Italic.afm +2667 -0
  22. data/data/fonts/Times-Roman.afm +2419 -0
  23. data/data/fonts/ZapfDingbats.afm +225 -0
  24. data/data/fonts/comicsans.ttf +0 -0
  25. data/data/fonts/gkai00mp.ttf +0 -0
  26. data/data/images/arrow.png +0 -0
  27. data/data/images/arrow2.png +0 -0
  28. data/data/images/barcode_issue.png +0 -0
  29. data/data/images/dice.alpha +0 -0
  30. data/data/images/dice.dat +0 -0
  31. data/data/images/dice.png +0 -0
  32. data/data/images/page_white_text.alpha +0 -0
  33. data/data/images/page_white_text.dat +0 -0
  34. data/data/images/page_white_text.png +0 -0
  35. data/data/images/pigs.jpg +0 -0
  36. data/data/images/rails.dat +0 -0
  37. data/data/images/rails.png +0 -0
  38. data/data/images/ruport.png +0 -0
  39. data/data/images/ruport_data.dat +0 -0
  40. data/data/images/ruport_transparent.png +0 -0
  41. data/data/images/ruport_type0.png +0 -0
  42. data/data/images/stef.jpg +0 -0
  43. data/data/images/web-links.dat +1 -0
  44. data/data/images/web-links.png +0 -0
  45. data/data/shift_jis_text.txt +1 -0
  46. data/examples/addressbook.csv +6 -0
  47. data/examples/alignment.rb +16 -0
  48. data/examples/bounding_boxes.rb +30 -0
  49. data/examples/canvas.rb +12 -0
  50. data/examples/cell.rb +38 -0
  51. data/examples/chinese_text_wrapping.rb +17 -0
  52. data/examples/currency.csv +1834 -0
  53. data/examples/curves.rb +10 -0
  54. data/examples/family_based_styling.rb +21 -0
  55. data/examples/fancy_table.rb +61 -0
  56. data/examples/flowing_text_with_header_and_footer.rb +72 -0
  57. data/examples/font_size.rb +27 -0
  58. data/examples/hexagon.rb +14 -0
  59. data/examples/image.rb +23 -0
  60. data/examples/image2.rb +13 -0
  61. data/examples/image_flow.rb +34 -0
  62. data/examples/kerning.rb +27 -0
  63. data/examples/lazy_bounding_boxes.rb +19 -0
  64. data/examples/line.rb +31 -0
  65. data/examples/multi_page_layout.rb +14 -0
  66. data/examples/page_geometry.rb +28 -0
  67. data/examples/png_types.rb +23 -0
  68. data/examples/polygons.rb +16 -0
  69. data/examples/position_by_baseline.rb +26 -0
  70. data/examples/ruport_formatter.rb +50 -0
  71. data/examples/ruport_helpers.rb +18 -0
  72. data/examples/russian_boxes.rb +34 -0
  73. data/examples/simple_text.rb +15 -0
  74. data/examples/simple_text_ttf.rb +16 -0
  75. data/examples/sjis.rb +21 -0
  76. data/examples/span.rb +27 -0
  77. data/examples/table.rb +47 -0
  78. data/examples/table_header_color.rb +16 -0
  79. data/examples/text_flow.rb +65 -0
  80. data/examples/top_and_bottom_cells.rb +40 -0
  81. data/examples/utf8.rb +12 -0
  82. data/lib/prawn.rb +67 -0
  83. data/lib/prawn/compatibility.rb +46 -0
  84. data/lib/prawn/document.rb +309 -0
  85. data/lib/prawn/document/bounding_box.rb +362 -0
  86. data/lib/prawn/document/internals.rb +113 -0
  87. data/lib/prawn/document/page_geometry.rb +79 -0
  88. data/lib/prawn/document/span.rb +47 -0
  89. data/lib/prawn/document/table.rb +350 -0
  90. data/lib/prawn/document/text.rb +196 -0
  91. data/lib/prawn/errors.rb +48 -0
  92. data/lib/prawn/font.rb +356 -0
  93. data/lib/prawn/font/cmap.rb +59 -0
  94. data/lib/prawn/font/metrics.rb +378 -0
  95. data/lib/prawn/font/wrapping.rb +47 -0
  96. data/lib/prawn/graphics.rb +252 -0
  97. data/lib/prawn/graphics/cell.rb +264 -0
  98. data/lib/prawn/graphics/color.rb +132 -0
  99. data/lib/prawn/images.rb +336 -0
  100. data/lib/prawn/images/jpg.rb +45 -0
  101. data/lib/prawn/images/png.rb +199 -0
  102. data/lib/prawn/pdf_object.rb +73 -0
  103. data/lib/prawn/reference.rb +56 -0
  104. data/spec/bounding_box_spec.rb +141 -0
  105. data/spec/document_spec.rb +181 -0
  106. data/spec/font_spec.rb +141 -0
  107. data/spec/graphics_spec.rb +209 -0
  108. data/spec/images_spec.rb +68 -0
  109. data/spec/jpg_spec.rb +25 -0
  110. data/spec/metrics_spec.rb +62 -0
  111. data/spec/pdf_object_spec.rb +112 -0
  112. data/spec/png_spec.rb +196 -0
  113. data/spec/reference_spec.rb +42 -0
  114. data/spec/spec_helper.rb +23 -0
  115. data/spec/table_spec.rb +179 -0
  116. data/spec/text_spec.rb +135 -0
  117. metadata +181 -0
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ pdf = Prawn::Document.new
7
+ pdf.move_to [100,100]
8
+ pdf.stroke_curve_to [50,50],:bounds => [[20,90], [90,90]]
9
+ pdf.fill_circle_at [200,200], :radius => 10
10
+ pdf.render_file "curves.pdf"
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate("family_style.pdf") do
7
+ ["Courier","Helvetica","Times-Roman"].each do |f|
8
+ [:bold,:bold_italic,:italic,:normal].each do |s|
9
+ font f, :style => s
10
+ text "I'm writing in #{f} (#{s})"
11
+ end
12
+ end
13
+
14
+ font "Helvetica"
15
+
16
+ text "Normal"
17
+ text "Bold", :style => :bold
18
+ text "Bold Italic", :style => :bold_italic
19
+ text "Italic", :style => :italic
20
+ text "Normal"
21
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+ require "rubygems"
6
+
7
+ headers, body = nil, nil
8
+
9
+ ruby_18 do
10
+ require "fastercsv"
11
+ headers, *body = FasterCSV.read("#{Prawn::BASEDIR}/examples/addressbook.csv")
12
+ end
13
+
14
+ ruby_19 do
15
+ require "csv"
16
+ headers, *body = CSV.read("#{Prawn::BASEDIR}/examples/addressbook.csv")
17
+ headers.map! { |e| e.encode("UTF-8") }
18
+ body.map! { |e| e.map! { |x| x.encode("UTF-8") } }
19
+ end
20
+
21
+ Prawn::Document.generate("fancy_table.pdf", :page_layout => :landscape) do
22
+
23
+ #font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
24
+
25
+ mask(:y) { table body, :headers => headers,
26
+ :align => :center,
27
+ :border_style => :grid }
28
+
29
+ table [["This is", "A Test" ],
30
+ [ Prawn::Graphics::Cell.new( :text => "Of tables",
31
+ :background_color => "ffccff" ),
32
+ "Drawn Side"], ["By side", "and stuff" ]],
33
+ :position => 600,
34
+ :headers => ["Col A", "Col B"],
35
+ :border_width => 1,
36
+ :vertical_padding => 5,
37
+ :horizontal_padding => 3,
38
+ :font_size => 10,
39
+ :row_colors => :pdf_writer,
40
+ :widths => { 1 => 50 }
41
+
42
+ move_down 150
43
+
44
+ table [%w[1 2 3],%w[4 5 6],%w[7 8 9]],
45
+ :position => :center,
46
+ :border_width => 0,
47
+ :font_size => 40
48
+
49
+ cell [500,300],
50
+ :text => "This free flowing textbox shows how you can use Prawn's "+
51
+ "cells outside of a table with ease. Think of a 'cell' as " +
52
+ "simply a limited purpose bounding box that is meant for laying " +
53
+ "out blocks of text and optionally placing a border around it",
54
+ :width => 225, :padding => 10, :border_width => 2
55
+
56
+ font.size = 24
57
+ cell [50,75],
58
+ :text => "This document demonstrates a number of Prawn's table features",
59
+ :border_style => :no_top, # :all, :no_bottom, :sides
60
+ :horizontal_padding => 5
61
+ end
@@ -0,0 +1,72 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate("flow_with_headers_and_footers.pdf") do
7
+
8
+ header margin_box.top_left do
9
+ text "Here's My Fancy Header", :size => 25, :align => :center
10
+ stroke_horizontal_rule
11
+ end
12
+
13
+ footer [margin_box.left, margin_box.bottom + 25] do
14
+ stroke_horizontal_rule
15
+ text "And here's a sexy footer", :size => 16
16
+ end
17
+
18
+ bounding_box([bounds.left, bounds.top - 50],
19
+ :width => bounds.width, :height => bounds.height - 100) do
20
+ text "this is some flowing text " * 200
21
+
22
+ move_down(20)
23
+
24
+ font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
25
+ table [["ὕαλον ϕαγεῖν", "baaar", "1" ],
26
+ ["This is","a sample", "2" ],
27
+ ["Table", "dont\ncha\nknow?", "3" ],
28
+ [ "It", "Rules", "4" ],
29
+ [ "It", "Rules", "4" ],
30
+ [ "It", "Rules", "4" ],
31
+ [ "It", "Rules", "4" ],
32
+ [ "It", "Rules", "4" ],
33
+ [ "It", "Rules", "4" ],
34
+ [ "It", "Rules", "4" ],
35
+ [ "It", "Rules", "4" ],
36
+ [ "It", "Rules", "4" ],
37
+ [ "It", "Rules\nwith an iron fist", "x" ],
38
+ [ "It", "Rules", "4" ],
39
+ [ "It", "Rules", "4" ],
40
+ [ "It", "Rules", "4" ],
41
+ [ "It", "Rules", "4" ],
42
+ [ "It", "Rules", "4" ],
43
+ [ "It", "Rules", "4" ],
44
+ [ "It", "Rules", "4" ],
45
+ [ "It", "Rules", "4" ],
46
+ [ "It", "Rules", "4" ],
47
+ [ "It", "Rules", "4" ],
48
+ [ "It", "Rules", "4" ],
49
+ [ "It", "Rules", "4" ],
50
+ [ "It", "Rules", "4" ],
51
+ [ "It", "Rules", "4" ],
52
+ [ "It", "Rules", "4" ],
53
+ [ "It", "Rules", "4" ],
54
+ [ "It", "Rules", "4" ],
55
+ [ "It", "Rules", "4" ],
56
+ [ "It", "Rules", "4" ],
57
+ [ "It", "Rules", "4" ],
58
+ [ "It", "Rules", "4" ],
59
+ [ "It", "Rules", "4" ],
60
+ [ "It", "Rules", "4" ]],
61
+
62
+ :font_size => 24,
63
+ :horizontal_padding => 10,
64
+ :vertical_padding => 3,
65
+ :border_width => 2,
66
+ :position => :center,
67
+ :headers => ["Column A","Column B","#"]
68
+
69
+ end
70
+
71
+ end
72
+
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate "font_size.pdf", :page_size => "A4" do
7
+ font 'Helvetica'
8
+ font.size = 16
9
+
10
+ text 'Font at 16 point'
11
+
12
+ font.size 9 do
13
+ text 'Font at 9 point'
14
+ text 'Font at manual override 20 point', :size => 20
15
+ text 'Font at 9 point'
16
+ end
17
+
18
+ font("Times-Roman", :style => :italic, :size => 12) do
19
+ text "Font in times at 12"
20
+ font.size(16) { text "Font in Times at 16" }
21
+ end
22
+
23
+ text 'Font at 16 point'
24
+
25
+ font "Courier", :size => 40
26
+ text "40 pt!"
27
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ pdf = Prawn::Document.new
7
+
8
+ pdf.fill_color "ff0000"
9
+ pdf.fill_polygon [100, 250], [200, 300], [300, 250],
10
+ [300, 150], [200, 100], [100, 150]
11
+
12
+ pdf.render_file "hexagon.pdf"
13
+
14
+
data/examples/image.rb ADDED
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate("image.pdf", :page_layout => :landscape) do
7
+ pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
8
+ image pigs, :at => [50,450], :scale => 0.5
9
+
10
+ stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
11
+ image stef, :at => [75, 75]
12
+
13
+ stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
14
+ image stef, :at => [500, 400], :width => 200, :height => 200
15
+
16
+ text "Please enjoy the pigs", :size => 36, :at => [200,15]
17
+
18
+ ruport = "#{Prawn::BASEDIR}/data/images/ruport.png"
19
+ image ruport, :at => [400,200], :width => 150
20
+
21
+ ruport = "#{Prawn::BASEDIR}/data/images/ruport_transparent.png"
22
+ image ruport, :at => [50,525]
23
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate("image2.pdf", :page_layout => :landscape) do
7
+ pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
8
+ image pigs, :at => [50,450], :width => 450
9
+
10
+ dice = "#{Prawn::BASEDIR}/data/images/dice.png"
11
+ image dice, :at => [50, 450], :scale => 0.75
12
+ end
13
+
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate("image-flow.pdf", :page_layout => :landscape) do
7
+ font.size = 8
8
+ stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
9
+
10
+ text "Image at default position with no arguments"
11
+
12
+ move_down 10
13
+
14
+ image stef
15
+
16
+ text "Centered image flowing"
17
+
18
+ image stef, :position => :center
19
+
20
+ text "Right aligned image flowing"
21
+
22
+ image stef, :position => :right
23
+
24
+ text "Explicitly left aligned image flowing"
25
+
26
+ move_down 10
27
+
28
+ image stef, :position => :left
29
+
30
+ text "Flowing image at x=50"
31
+
32
+ image stef, :position => 50
33
+
34
+ end
@@ -0,0 +1,27 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
+ require "prawn"
3
+
4
+ Prawn::Document.generate "kerning.pdf" do
5
+ text "To kern?", :at => [200,720], :size => 24, :kerning => true
6
+ text "To not kern?", :at => [200,690], :size => 24, :kerning => false
7
+
8
+ move_down 100
9
+
10
+ pad(30) do
11
+ text "To kern and wrap. " * 5, :size => 24, :kerning => true
12
+ end
13
+
14
+ text "To not kern and wrap. " * 5, :size => 24, :kerning => false
15
+
16
+ font "#{Prawn::BASEDIR}/data/fonts/Dustismo_Roman.ttf"
17
+
18
+ text "To kern?", :at => [200,660], :size => 24, :kerning => true
19
+ text "To not kern?", :at => [200,630], :size => 24, :kerning => false
20
+
21
+ pad(30) do
22
+ text "To kern and wrap. " * 5, :size => 24, :kerning => true
23
+ end
24
+
25
+ text "To not kern and wrap. " * 5, :size => 24, :kerning => false
26
+
27
+ end
@@ -0,0 +1,19 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
+ require "prawn"
3
+
4
+ file = "lazy_bounding_boxes.pdf"
5
+ Prawn::Document.generate(file, :skip_page_creation => true) do
6
+ point = [bounds.right-50, bounds.bottom + 25]
7
+ page_counter = lazy_bounding_box(point, :width => 50) do
8
+ text "Page: #{page_count}"
9
+ end
10
+
11
+ 10.times do
12
+ start_new_page
13
+ text "Some text"
14
+ page_counter.draw
15
+ end
16
+ end
17
+
18
+
19
+
data/examples/line.rb ADDED
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ pdf = Prawn::Document.new
7
+ pdf.line_width = 10
8
+
9
+ [[100,741,100,641],
10
+ [100,691,150,691],
11
+ [150,741,150,641],
12
+ [200,741,200,641],
13
+ [100,600,100,500],
14
+ [100,600,150,550],
15
+ [100,550,150,550],
16
+ [175,600,175,500],
17
+ [175,600,225,550],
18
+ [175,550,225,550],
19
+ [175,550,225,500],
20
+ [275,600,250,500],
21
+ [275,600,300,500],
22
+ [250,550,300,550],
23
+ [315,600,350,500],
24
+ [350,500,365,550],
25
+ [365,550,380,500],
26
+ [380,500,415,600],
27
+ [430,600,430,500],
28
+ [430,600,465,500],
29
+ [465,600,465,500]].each { |points| pdf.stroke_line(*points) }
30
+
31
+ pdf.render_file "lines.pdf"
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ Prawn::Document.generate("multi-layout.pdf", :page_layout => :landscape) do |pdf|
7
+ pdf.text "This is on a landscaped page"
8
+ pdf.start_new_page(:layout => :portrait)
9
+ pdf.text "This is on a portrait page"
10
+ pdf.start_new_page(:size => "LEGAL")
11
+ pdf.text "This is on legal paper size"
12
+ pdf.start_new_page(:left_margin => 150, :right_margin => 150)
13
+ pdf.text "This page has very wide left and right margins, causing a squeeze"
14
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ def pdf(*options)
7
+ Prawn::Document.new(*options)
8
+ end
9
+
10
+ # defaults to portrait and US letter
11
+ portrait_letter = pdf
12
+ portrait_letter.render_file "portrait_letter.pdf"
13
+
14
+ landscape_letter = pdf(:page_layout => :landscape)
15
+ landscape_letter.render_file "landscape_letter.pdf"
16
+
17
+ portrait_legal = pdf(:page_size => "LEGAL")
18
+ portrait_legal.render_file "portrait_legal.pdf"
19
+
20
+ landscape_legal = pdf(:page_size => "LEGAL", :page_layout => :landscape)
21
+ landscape_legal.render_file "landscape_legal.pdf"
22
+
23
+ portrait_a4 = pdf(:page_size => "A4")
24
+ portrait_a4.render_file "portrait_a4.pdf"
25
+
26
+ landscape_a4 = pdf(:page_size => "A4", :page_layout => :landscape)
27
+ landscape_a4.render_file("landscape_a4.pdf")
28
+
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ # PNG files come in different flavours - 5 of them. This example embeds
4
+ # one of each type as proof that they all work.
5
+
6
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
7
+ require "prawn"
8
+
9
+ images = [
10
+ ["Type 0", "#{Prawn::BASEDIR}/data/images/web-links.png"],
11
+ ["Type 2", "#{Prawn::BASEDIR}/data/images/ruport.png"],
12
+ ["Type 3", "#{Prawn::BASEDIR}/data/images/rails.png"],
13
+ ["Type 4", "#{Prawn::BASEDIR}/data/images/page_white_text.png"],
14
+ ["Type 6", "#{Prawn::BASEDIR}/data/images/dice.png"],
15
+ ]
16
+
17
+ Prawn::Document.generate("png_types.pdf", :page_size => "A5") do
18
+ images.each do |header, file|
19
+ start_new_page unless header.include?("0")
20
+ text header
21
+ image file, :at => [50,450]
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require "prawn"
5
+
6
+ pdf = Prawn::Document.new
7
+
8
+ 10.times do |i|
9
+ pdf.stroke_polygon [ 50 + i*25, 50 + i*25],
10
+ [100 + i*25, 50 + i*25],
11
+ [100 + i*25, 100 + i*25]
12
+ pdf.stroke_rectangle [0,600], 5*i, 10*i
13
+ end
14
+
15
+ pdf.render_file "pretty_polygons.pdf"
16
+