alphasights-prawn 0.10.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 (244) hide show
  1. data/COPYING +340 -0
  2. data/HACKING +50 -0
  3. data/LICENSE +56 -0
  4. data/README +141 -0
  5. data/Rakefile +52 -0
  6. data/data/encodings/win_ansi.txt +29 -0
  7. data/data/fonts/Action Man.dfont +0 -0
  8. data/data/fonts/Activa.ttf +0 -0
  9. data/data/fonts/Chalkboard.ttf +0 -0
  10. data/data/fonts/Courier-Bold.afm +342 -0
  11. data/data/fonts/Courier-BoldOblique.afm +342 -0
  12. data/data/fonts/Courier-Oblique.afm +342 -0
  13. data/data/fonts/Courier.afm +342 -0
  14. data/data/fonts/DejaVuSans.ttf +0 -0
  15. data/data/fonts/Dustismo_Roman.ttf +0 -0
  16. data/data/fonts/Helvetica-Bold.afm +2827 -0
  17. data/data/fonts/Helvetica-BoldOblique.afm +2827 -0
  18. data/data/fonts/Helvetica-Oblique.afm +3051 -0
  19. data/data/fonts/Helvetica.afm +3051 -0
  20. data/data/fonts/MustRead.html +19 -0
  21. data/data/fonts/Symbol.afm +213 -0
  22. data/data/fonts/Times-Bold.afm +2588 -0
  23. data/data/fonts/Times-BoldItalic.afm +2384 -0
  24. data/data/fonts/Times-Italic.afm +2667 -0
  25. data/data/fonts/Times-Roman.afm +2419 -0
  26. data/data/fonts/ZapfDingbats.afm +225 -0
  27. data/data/fonts/comicsans.ttf +0 -0
  28. data/data/fonts/gkai00mp.ttf +0 -0
  29. data/data/images/16bit.alpha +0 -0
  30. data/data/images/16bit.dat +0 -0
  31. data/data/images/16bit.png +0 -0
  32. data/data/images/arrow.png +0 -0
  33. data/data/images/arrow2.png +0 -0
  34. data/data/images/barcode_issue.png +0 -0
  35. data/data/images/dice.alpha +0 -0
  36. data/data/images/dice.dat +0 -0
  37. data/data/images/dice.png +0 -0
  38. data/data/images/dice_interlaced.png +0 -0
  39. data/data/images/fractal.jpg +0 -0
  40. data/data/images/letterhead.jpg +0 -0
  41. data/data/images/page_white_text.alpha +0 -0
  42. data/data/images/page_white_text.dat +0 -0
  43. data/data/images/page_white_text.png +0 -0
  44. data/data/images/pigs.jpg +0 -0
  45. data/data/images/rails.dat +0 -0
  46. data/data/images/rails.png +0 -0
  47. data/data/images/ruport.png +0 -0
  48. data/data/images/ruport_data.dat +0 -0
  49. data/data/images/ruport_transparent.png +0 -0
  50. data/data/images/ruport_type0.png +0 -0
  51. data/data/images/stef.jpg +0 -0
  52. data/data/images/tru256.bmp +0 -0
  53. data/data/images/web-links.dat +1 -0
  54. data/data/images/web-links.png +0 -0
  55. data/data/pdfs/complex_template.pdf +0 -0
  56. data/data/pdfs/contains_ttf_font.pdf +0 -0
  57. data/data/pdfs/encrypted.pdf +0 -0
  58. data/data/pdfs/hexagon.pdf +61 -0
  59. data/data/pdfs/indirect_reference.pdf +86 -0
  60. data/data/pdfs/nested_pages.pdf +118 -0
  61. data/data/pdfs/resources_as_indirect_object.pdf +83 -0
  62. data/data/pdfs/two_hexagons.pdf +90 -0
  63. data/data/pdfs/version_1_6.pdf +61 -0
  64. data/data/shift_jis_text.txt +1 -0
  65. data/examples/bounding_box/bounding_boxes.rb +43 -0
  66. data/examples/bounding_box/indentation.rb +34 -0
  67. data/examples/bounding_box/russian_boxes.rb +36 -0
  68. data/examples/bounding_box/stretched_nesting.rb +67 -0
  69. data/examples/builder/simple.rb +28 -0
  70. data/examples/example_helper.rb +4 -0
  71. data/examples/general/background.rb +23 -0
  72. data/examples/general/canvas.rb +15 -0
  73. data/examples/general/context_sensitive_headers.rb +37 -0
  74. data/examples/general/float.rb +11 -0
  75. data/examples/general/margin.rb +36 -0
  76. data/examples/general/measurement_units.rb +51 -0
  77. data/examples/general/metadata-info.rb +16 -0
  78. data/examples/general/multi_page_layout.rb +18 -0
  79. data/examples/general/outlines.rb +50 -0
  80. data/examples/general/page_geometry.rb +31 -0
  81. data/examples/general/page_numbering.rb +15 -0
  82. data/examples/general/repeaters.rb +47 -0
  83. data/examples/general/stamp.rb +41 -0
  84. data/examples/general/templates.rb +13 -0
  85. data/examples/graphics/basic_images.rb +23 -0
  86. data/examples/graphics/chunkable.rb +38 -0
  87. data/examples/graphics/cmyk.rb +12 -0
  88. data/examples/graphics/curves.rb +11 -0
  89. data/examples/graphics/hexagon.rb +13 -0
  90. data/examples/graphics/image_fit.rb +15 -0
  91. data/examples/graphics/image_flow.rb +37 -0
  92. data/examples/graphics/image_position.rb +17 -0
  93. data/examples/graphics/line.rb +32 -0
  94. data/examples/graphics/png_types.rb +22 -0
  95. data/examples/graphics/polygons.rb +16 -0
  96. data/examples/graphics/remote_images.rb +12 -0
  97. data/examples/graphics/rounded_polygons.rb +19 -0
  98. data/examples/graphics/rounded_rectangle.rb +20 -0
  99. data/examples/graphics/ruport_style_helpers.rb +19 -0
  100. data/examples/graphics/stroke_bounds.rb +20 -0
  101. data/examples/graphics/stroke_cap_and_join.rb +45 -0
  102. data/examples/graphics/stroke_dash.rb +42 -0
  103. data/examples/graphics/transformations.rb +52 -0
  104. data/examples/graphics/transparency.rb +26 -0
  105. data/examples/m17n/chinese_text_wrapping.rb +17 -0
  106. data/examples/m17n/euro.rb +15 -0
  107. data/examples/m17n/sjis.rb +28 -0
  108. data/examples/m17n/utf8.rb +13 -0
  109. data/examples/m17n/win_ansi_charset.rb +54 -0
  110. data/examples/security/hello_foo.rb +8 -0
  111. data/examples/table/bill.rb +53 -0
  112. data/examples/table/cell.rb +12 -0
  113. data/examples/table/checkerboard.rb +22 -0
  114. data/examples/table/header.rb +14 -0
  115. data/examples/table/inline_format_table.rb +12 -0
  116. data/examples/table/multi_page_table.rb +9 -0
  117. data/examples/table/simple_table.rb +24 -0
  118. data/examples/table/subtable.rb +12 -0
  119. data/examples/table/widths.rb +20 -0
  120. data/examples/text/alignment.rb +18 -0
  121. data/examples/text/character_spacing.rb +12 -0
  122. data/examples/text/dfont.rb +48 -0
  123. data/examples/text/family_based_styling.rb +24 -0
  124. data/examples/text/font_calculations.rb +91 -0
  125. data/examples/text/font_size.rb +33 -0
  126. data/examples/text/hyphenation.rb +45 -0
  127. data/examples/text/indent_paragraphs.rb +22 -0
  128. data/examples/text/inline_format.rb +103 -0
  129. data/examples/text/kerning.rb +30 -0
  130. data/examples/text/rotated.rb +98 -0
  131. data/examples/text/shaped_text_box.rb +31 -0
  132. data/examples/text/simple_text.rb +17 -0
  133. data/examples/text/simple_text_ttf.rb +17 -0
  134. data/examples/text/text_box.rb +88 -0
  135. data/examples/text/text_box_returning_excess.rb +51 -0
  136. data/examples/text/text_flow.rb +67 -0
  137. data/lib/prawn.rb +27 -0
  138. data/lib/prawn/canvas.rb +119 -0
  139. data/lib/prawn/chunkable.rb +37 -0
  140. data/lib/prawn/compatibility.rb +51 -0
  141. data/lib/prawn/core.rb +85 -0
  142. data/lib/prawn/core/annotations.rb +61 -0
  143. data/lib/prawn/core/byte_string.rb +9 -0
  144. data/lib/prawn/core/chunk.rb +36 -0
  145. data/lib/prawn/core/destinations.rb +90 -0
  146. data/lib/prawn/core/document_state.rb +78 -0
  147. data/lib/prawn/core/literal_string.rb +16 -0
  148. data/lib/prawn/core/name_tree.rb +165 -0
  149. data/lib/prawn/core/object_store.rb +236 -0
  150. data/lib/prawn/core/page.rb +179 -0
  151. data/lib/prawn/core/pdf_object.rb +108 -0
  152. data/lib/prawn/core/reference.rb +112 -0
  153. data/lib/prawn/core/text.rb +140 -0
  154. data/lib/prawn/core/text/formatted/arranger.rb +266 -0
  155. data/lib/prawn/core/text/formatted/line_wrap.rb +127 -0
  156. data/lib/prawn/core/text/formatted/wrap.rb +112 -0
  157. data/lib/prawn/core/text/line_wrap.rb +209 -0
  158. data/lib/prawn/core/text/wrap.rb +80 -0
  159. data/lib/prawn/document.rb +573 -0
  160. data/lib/prawn/document/bounding_box.rb +425 -0
  161. data/lib/prawn/document/graphics_state.rb +48 -0
  162. data/lib/prawn/document/internals.rb +170 -0
  163. data/lib/prawn/document/page_geometry.rb +136 -0
  164. data/lib/prawn/document/snapshot.rb +87 -0
  165. data/lib/prawn/document_builder.rb +51 -0
  166. data/lib/prawn/document_builder/command.rb +38 -0
  167. data/lib/prawn/document_builder/constructs.rb +2 -0
  168. data/lib/prawn/document_builder/constructs/flowing_text_construct.rb +18 -0
  169. data/lib/prawn/document_builder/constructs/path_construct.rb +9 -0
  170. data/lib/prawn/document_builder/layout.rb +25 -0
  171. data/lib/prawn/document_builder/modifications.rb +2 -0
  172. data/lib/prawn/document_builder/modifications/layout_modification.rb +9 -0
  173. data/lib/prawn/document_builder/modifications/path_modification.rb +9 -0
  174. data/lib/prawn/encoding.rb +121 -0
  175. data/lib/prawn/errors.rb +94 -0
  176. data/lib/prawn/font.rb +341 -0
  177. data/lib/prawn/font/afm.rb +225 -0
  178. data/lib/prawn/font/dfont.rb +42 -0
  179. data/lib/prawn/font/ttf.rb +350 -0
  180. data/lib/prawn/graphics.rb +325 -0
  181. data/lib/prawn/graphics/cap_style.rb +38 -0
  182. data/lib/prawn/graphics/color.rb +205 -0
  183. data/lib/prawn/graphics/dash.rb +71 -0
  184. data/lib/prawn/graphics/join_style.rb +38 -0
  185. data/lib/prawn/graphics/transformation.rb +156 -0
  186. data/lib/prawn/graphics/transparency.rb +99 -0
  187. data/lib/prawn/images.rb +348 -0
  188. data/lib/prawn/images/jpg.rb +46 -0
  189. data/lib/prawn/images/png.rb +226 -0
  190. data/lib/prawn/measurement_extensions.rb +46 -0
  191. data/lib/prawn/measurements.rb +71 -0
  192. data/lib/prawn/outline.rb +278 -0
  193. data/lib/prawn/repeater.rb +129 -0
  194. data/lib/prawn/security.rb +262 -0
  195. data/lib/prawn/security/arcfour.rb +51 -0
  196. data/lib/prawn/stamp.rb +126 -0
  197. data/lib/prawn/table.rb +421 -0
  198. data/lib/prawn/table/accessors.rb +180 -0
  199. data/lib/prawn/table/cell.rb +350 -0
  200. data/lib/prawn/table/cell/in_table.rb +27 -0
  201. data/lib/prawn/table/cell/subtable.rb +65 -0
  202. data/lib/prawn/table/cell/text.rb +125 -0
  203. data/lib/prawn/text.rb +449 -0
  204. data/lib/prawn/text/box.rb +392 -0
  205. data/lib/prawn/text/formatted.rb +4 -0
  206. data/lib/prawn/text/formatted/box.rb +228 -0
  207. data/lib/prawn/text/formatted/fragment.rb +181 -0
  208. data/lib/prawn/text/formatted/parser.rb +213 -0
  209. data/spec/annotations_spec.rb +90 -0
  210. data/spec/bounding_box_spec.rb +190 -0
  211. data/spec/cell_spec.rb +348 -0
  212. data/spec/destinations_spec.rb +15 -0
  213. data/spec/document_spec.rb +473 -0
  214. data/spec/font_spec.rb +324 -0
  215. data/spec/formatted_text_arranger_spec.rb +426 -0
  216. data/spec/formatted_text_box_spec.rb +756 -0
  217. data/spec/formatted_text_fragment_spec.rb +211 -0
  218. data/spec/graphics_spec.rb +446 -0
  219. data/spec/images_spec.rb +96 -0
  220. data/spec/inline_formatted_text_parser_spec.rb +502 -0
  221. data/spec/jpg_spec.rb +25 -0
  222. data/spec/line_wrap_spec.rb +341 -0
  223. data/spec/measurement_units_spec.rb +23 -0
  224. data/spec/name_tree_spec.rb +112 -0
  225. data/spec/object_store_spec.rb +160 -0
  226. data/spec/outline_spec.rb +269 -0
  227. data/spec/pdf_object_spec.rb +170 -0
  228. data/spec/png_spec.rb +237 -0
  229. data/spec/reference_spec.rb +82 -0
  230. data/spec/repeater_spec.rb +96 -0
  231. data/spec/security_spec.rb +120 -0
  232. data/spec/snapshot_spec.rb +138 -0
  233. data/spec/spec_helper.rb +26 -0
  234. data/spec/stamp_spec.rb +108 -0
  235. data/spec/stroke_styles_spec.rb +163 -0
  236. data/spec/table_spec.rb +598 -0
  237. data/spec/template_spec.rb +158 -0
  238. data/spec/text_at_spec.rb +119 -0
  239. data/spec/text_box_spec.rb +742 -0
  240. data/spec/text_spacing_spec.rb +75 -0
  241. data/spec/text_spec.rb +333 -0
  242. data/spec/text_with_inline_formatting_spec.rb +193 -0
  243. data/spec/transparency_spec.rb +89 -0
  244. metadata +331 -0
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'prawn'
3
+
4
+ Prawn.debug = true
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This example demonstrates the use of the new :background option when
4
+ # generating a new Document. Image is assumed to be pre-fit for your page
5
+ # size, and will not be rescaled.
6
+ #
7
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
8
+
9
+ img = "#{Prawn::BASEDIR}/data/images/letterhead.jpg"
10
+
11
+ Prawn::Document.generate("background.pdf", :background => img, :margin => 100) do
12
+ text "My report caption", :size => 18, :align => :right
13
+
14
+ move_down font.height * 2
15
+
16
+ text "Here is my text explaning this report. " * 20,
17
+ :size => 12, :align => :left, :leading => 2
18
+
19
+ move_down font.height
20
+
21
+ text "I'm using a soft background. " * 40,
22
+ :size => 12, :align => :left, :leading => 2
23
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Demonstrates how to enable absolute positioning in Prawn by temporarily
4
+ # removing the margin_box via Document#canvas()
5
+ #
6
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
7
+
8
+ Prawn::Document.generate("canvas.pdf") do
9
+ canvas do
10
+ text "This text should appear at the absolute top left"
11
+
12
+ # stroke a line to show that the relative coordinates are the same as absolute
13
+ stroke_line [bounds.left,bounds.bottom], [bounds.right,bounds.top]
14
+ end
15
+ end
@@ -0,0 +1,37 @@
1
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
2
+
3
+ # Ex. Generate a roster of meeting attendees given a set of meetings.
4
+ # Attendees for a meeting may overflow to accross page boundaries but
5
+ # each meeting starts on a separate page. Each page for any given
6
+ # meeting will have the heading for that meeting.
7
+
8
+ #dummying up some meetings
9
+ meetings = []
10
+ 5.times do |i|
11
+ meetings << "Meeting number #{i}"
12
+ end
13
+
14
+ Prawn::Document.generate('context_sensitive_headers.pdf', :margin => [100, 100], :skip_page_creation => true) do
15
+ meetings.each_with_index do |meeting,i|
16
+
17
+ create_stamp(meeting.to_s) do
18
+ canvas do
19
+ text_box("header for #{meeting}",
20
+ :at => [bounds.left + 50, bounds.top - 20],
21
+ :height => 50,
22
+ :width => margin_box.width)
23
+ end
24
+ end
25
+ on_page_create { stamp(meeting.to_s) }
26
+
27
+ start_new_page
28
+
29
+ #simulate some meetings with content over multiple pages
30
+ (15 + 20*i).times do |i|
31
+ text "#{meeting} attendee #{i}"
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
@@ -0,0 +1,11 @@
1
+ require "#{File.dirname(__FILE__)}/../example_helper"
2
+
3
+ Prawn::Document.generate('float.pdf') do
4
+ float do
5
+ bounding_box [bounds.width / 2.0, bounds.top], :width => 100 do
6
+ text "Hello world. " * 50
7
+ end
8
+ end
9
+
10
+ text "Hello world again"
11
+ end
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This demonstrates the Prawn options for document and page margin, similar to CSS shorthand.
4
+ #
5
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
6
+
7
+ LOREM = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "+
8
+ "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "+
9
+ "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris "+
10
+ "nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in "+
11
+ "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla "+
12
+ "pariatur. Excepteur sint occaecat cupidatat non proident, sunt in " +
13
+ "culpa qui officia deserunt mollit anim id est laborum. ") * 20
14
+
15
+ Prawn::Document.generate("margin.pdf", :margin => 100) do |pdf|
16
+
17
+ pdf.text "100 on all sides", :style => :bold
18
+ pdf.text LOREM
19
+
20
+ pdf.start_new_page(:margin => 100, :left_margin => 0)
21
+ pdf.text "100 on all sides but 0 on the left", :style => :bold
22
+ pdf.text LOREM
23
+
24
+ pdf.start_new_page(:margin => [100, 0])
25
+ pdf.text "100 top and bottom, 0 left and right.", :style => :bold
26
+ pdf.text LOREM
27
+
28
+ pdf.start_new_page(:margin => [100, 0, 50])
29
+ pdf.text "100 top, 0 left and right, 50 bottom.", :style => :bold
30
+ pdf.text LOREM
31
+
32
+ pdf.start_new_page(:margin => [0, 50, 100, 150])
33
+ pdf.text "0 top, 50 right, 100 bottom, 150 left.", :style => :bold
34
+ pdf.text LOREM
35
+
36
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Generates a ruler and also demonstrates prawn/measurement_extensions.
4
+ # It's better to run this example and examine its output than to worry about
5
+ # its particular implementation, though some might find that interesting as
6
+ # well.
7
+ #
8
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
9
+
10
+ require "prawn/measurement_extensions"
11
+
12
+ # this makes the following units available (Millimeters, Centimeters, Decimeters, Meters, Inches, Foot, Yards, Points)
13
+ # Methodname is the common abbravation for the unit (mm, cm, dm, m, in, ft, yd, pt)
14
+ # Usage: '10.mm'.
15
+ # This converts 10mm to PDF points, which Prawn uses internally.
16
+
17
+ pdf = Prawn::Document.new(
18
+ :page_size => "A4",
19
+ :left_margin => 10.mm, # different
20
+ :right_margin => 1.cm, # units
21
+ :top_margin => 0.1.dm, # work
22
+ :bottom_margin => 0.01.m) # well
23
+
24
+ pdf.font_size = 6
25
+ pdf.line_width = 0.05
26
+
27
+ units_long = %w[Millimeters Centimeters Decimeters Inches Foot Points]
28
+ units = %w[mm cm dm in ft pt]
29
+ offset_multiplier = 2.cm
30
+ temp = "Units\n"
31
+
32
+ units.each_with_index do |unit, unit_index| #iterate through all units that make sense to display on a sheet of paper
33
+ one_unit_in_pt = eval "1.#{unit}" # calc the width of one unit
34
+ temp << "1#{unit} => #{one_unit_in_pt}pt\n" #puts converted unit in points
35
+
36
+ offset = offset_multiplier * unit_index
37
+ pdf.draw_text units[unit_index], :at => [offset + 0.5.mm, pdf.bounds.top - 2.mm]
38
+
39
+ pdf.stroke_line(offset, pdf.bounds.top, offset, pdf.bounds.bottom)
40
+
41
+ 0.upto(((pdf.bounds.height - 5.mm) / one_unit_in_pt).to_i) do |i| # checks, how many strokes can be drawn
42
+ pdf.stroke_line(offset, i * one_unit_in_pt, (i % 5 == 0 ? 6.mm : 3.mm) + offset, i * one_unit_in_pt) # every fifth stroke is twice as large like on a real ruler
43
+ pdf.draw_text "#{i}#{unit}", :at => [7.mm + offset, i * one_unit_in_pt] unless unit == "mm" && i % 5 != 0 || unit == "pt" && i % 10 != 0 # avoid text too close to each other
44
+ end
45
+ end
46
+
47
+ pdf.text_box temp,
48
+ :width => 5.cm, :height => pdf.font.height * units_long.length,
49
+ :at => [offset_multiplier * units_long.length, pdf.bounds.top]
50
+
51
+ pdf.render_file "measurement_units.pdf"
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Demonstrates how to set metadata properties via the info option
4
+ # It allows one to specify no standard properties
5
+ #
6
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
7
+
8
+ Prawn::Document.generate "metadata-info.pdf",
9
+ :info => {
10
+ :Title => "My title", :Author => "John Doe", :Subject => "My Subject",
11
+ :Keywords => "test metadata ruby pdf dry", :Creator => "ACME Soft App",
12
+ :Producer => "Prawn", :CreationDate => Time.now, :Grok => "Test Property"
13
+ } do
14
+ text "This is a test of setting metadata properties via the info option"
15
+ text "It allows one to specify no standard properties like 'Grok'"
16
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This demonstrates that Prawn can modify page size, margins and layout for
4
+ # each individual page, via Document#start_new_page()
5
+ #
6
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
7
+
8
+ Prawn::Document.generate("multi-layout.pdf", :page_layout => :landscape) do |pdf|
9
+ pdf.text "This is on a landscaped page"
10
+ pdf.start_new_page(:layout => :portrait)
11
+ pdf.text "This is on a portrait page"
12
+ pdf.start_new_page(:size => "LEGAL")
13
+ pdf.text "This is on legal paper size"
14
+ pdf.start_new_page(:left_margin => 150, :right_margin => 150)
15
+ pdf.text "This page has very wide left and right margins, causing a squeeze"
16
+ pdf.start_new_page(:margin => 300, :right_margin => 0)
17
+ pdf.text "This page has even wider margins on all sides except for the right side, where it's 0"
18
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This example demonstrates the use of the the outlines option for a new document
4
+ # it sets an initial outline item with a title
5
+ #
6
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
7
+
8
+ Prawn::Document.generate('outlines.pdf') do
9
+ text "Page 1. This is the first Chapter. "
10
+ start_new_page
11
+ text "Page 2. More in the first Chapter. "
12
+ start_new_page
13
+ text "Page 3. This is the second Chapter. It has a subsection. "
14
+ start_new_page
15
+ text "Page 4. More in the second Chapter. "
16
+ define_outline do
17
+ section 'Chapter 1', :page => 1, :closed => true do
18
+ page 1, :title => 'Page 1'
19
+ page 2, :title => 'Page 2'
20
+ end
21
+ section 'Chapter 2', :page => 3 do
22
+ section 'Chapter 2 Subsection' do
23
+ page nil, :title => 'Page 3'
24
+ end
25
+ page 4, :title => 'Page 4'
26
+ end
27
+ end
28
+ start_new_page
29
+ text "Page 5. Appendix"
30
+ start_new_page
31
+ text "Page 6. More in the Appendix"
32
+ outline.add_section do
33
+ section 'Appendix', :page => 5 do
34
+ page 5, :title => 'Page 5'
35
+ page 6, :title => 'Page 6'
36
+ end
37
+ end
38
+ go_to_page 4
39
+ start_new_page
40
+ text "inserted before the Appendix"
41
+ outline.insert_section_after 'Chapter 2' do
42
+ page page_number, :title => "Pre-Appendix"
43
+ end
44
+ go_to_page 7
45
+ start_new_page
46
+ text "One last page"
47
+ outline.insert_section_after 'Page 6' do
48
+ page page_number, :title => "Inserted after 6"
49
+ end
50
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This demonstrates basic page layout and landscape options for Prawn
4
+ # documents. The style used here is a bit out of date, see
5
+ # multi_page_layout.rb for a more modern example.
6
+ #
7
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
8
+
9
+ def pdf(*options)
10
+ Prawn::Document.new(*options)
11
+ end
12
+
13
+ # defaults to portrait and US letter
14
+ portrait_letter = pdf
15
+ portrait_letter.render_file "portrait_letter.pdf"
16
+
17
+ landscape_letter = pdf(:page_layout => :landscape)
18
+ landscape_letter.render_file "landscape_letter.pdf"
19
+
20
+ portrait_legal = pdf(:page_size => "LEGAL")
21
+ portrait_legal.render_file "portrait_legal.pdf"
22
+
23
+ landscape_legal = pdf(:page_size => "LEGAL", :page_layout => :landscape)
24
+ landscape_legal.render_file "landscape_legal.pdf"
25
+
26
+ portrait_a4 = pdf(:page_size => "A4")
27
+ portrait_a4.render_file "portrait_a4.pdf"
28
+
29
+ landscape_a4 = pdf(:page_size => "A4", :page_layout => :landscape)
30
+ landscape_a4.render_file("landscape_a4.pdf")
31
+
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This example demonstrates how to add a "page k of n"
4
+ # template to your documents.
5
+ #
6
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
7
+
8
+ Prawn::Document.generate("page_with_numbering.pdf") do
9
+ text "Hai"
10
+ start_new_page
11
+ text "bai"
12
+ start_new_page
13
+ text "-- Hai again"
14
+ number_pages "<page> in a total of <total>", [bounds.right - 50, 0]
15
+ end
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This example demonstrates how to make use of Prawn's repeating element
4
+ # support. Note that all repeated elements are generated using XObjects, so
5
+ # they should be pretty efficient.
6
+ #
7
+ #
8
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
9
+
10
+ Prawn::Document.generate("repeat.pdf", :skip_page_creation => true) do
11
+
12
+ repeat :all do
13
+ draw_text "ALLLLLL", :at => bounds.top_left
14
+ end
15
+
16
+ repeat :odd do
17
+ draw_text "ODD", :at => [0,0]
18
+ end
19
+
20
+ repeat :even do
21
+ draw_text "EVEN", :at => [0,0]
22
+ end
23
+
24
+ repeat [1,2] do
25
+ draw_text "[1,2]", :at => [100,0]
26
+ end
27
+
28
+ repeat 2..4 do
29
+ draw_text "2..4", :at => [200,0]
30
+ end
31
+
32
+ repeat(lambda { |pg| pg % 3 == 0 }) do
33
+ draw_text "Every third", :at => [250, 20]
34
+ end
35
+
36
+ repeat(:all, :dynamic => true) do
37
+ draw_text page_number, :at => [500, 0]
38
+ end
39
+
40
+ 10.times do
41
+ start_new_page
42
+ draw_text "A wonderful page", :at => [400,400]
43
+ end
44
+
45
+ end
46
+
47
+
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Demonstrate use of stamps
4
+ #
5
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
6
+
7
+ Prawn::Document.generate("stamp.pdf", :skip_page_creation => true) do
8
+
9
+ create_stamp("odd_page_template") do
10
+ draw_text "This is the odd page template",
11
+ :at => [0, bounds.top - font.height]
12
+ draw_text "This is also in the odd page template", :at => [0, 0]
13
+ end
14
+
15
+ create_stamp("even_page_template") do
16
+ draw_text "This is the even page template",
17
+ :at => [0, bounds.top - font.height]
18
+ draw_text "This is also in the even page template", :at => [0, 0]
19
+ end
20
+
21
+ start_new_page
22
+ stamp("odd_page_template")
23
+
24
+ create_stamp("MyStamp") do
25
+ fill_color("ff0000")
26
+ fill_circle_at([0, 0], :radius => 20)
27
+ fill_color("000000")
28
+ fill_circle_at([10, 10], :radius => 20)
29
+ end
30
+
31
+ 10.times do |i|
32
+ 10.times do |j|
33
+ stamp_at("MyStamp", [100 + j * 50, bounds.top - 100 - i * 50])
34
+ end
35
+ end
36
+
37
+ 4.times do |i|
38
+ start_new_page
39
+ stamp("#{i % 2 == 0 ? 'even' : 'odd'}_page_template")
40
+ end
41
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This sample demonstrates the use of the :template option when generating
4
+ # a new Document. The template PDF file is imported into a new document.
5
+
6
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
7
+
8
+ filename = "#{Prawn::BASEDIR}/reference_pdfs/curves.pdf"
9
+
10
+ Prawn::Document.generate("template.pdf", :template => filename) do
11
+ text "Previous pages and content imported", :size => 18, :align => :center
12
+ text "This page and content is brand new", :size => 18, :align => :center
13
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Demonstrates basic image embedding and positioning functionality.
4
+ # For positioning images alongside flowing text, see the image_flow.rb
5
+ # example.
6
+ #
7
+ require "#{File.dirname(__FILE__)}/../example_helper.rb"
8
+
9
+ Prawn::Document.generate("basic_images.pdf", :page_layout => :landscape) do
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
+ draw_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