prawn 1.1.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (309) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +1 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +9 -40
  7. data/lib/prawn/document/bounding_box.rb +54 -40
  8. data/lib/prawn/document/column_box.rb +8 -10
  9. data/lib/prawn/document/internals.rb +39 -146
  10. data/lib/prawn/document/span.rb +23 -17
  11. data/lib/prawn/document.rb +217 -182
  12. data/lib/prawn/encoding.rb +69 -101
  13. data/lib/prawn/errors.rb +47 -43
  14. data/lib/prawn/font.rb +124 -104
  15. data/lib/prawn/font_metric_cache.rb +23 -21
  16. data/lib/prawn/fonts/afm.rb +292 -0
  17. data/lib/prawn/{font → fonts}/dfont.rb +5 -12
  18. data/lib/prawn/fonts/otf.rb +11 -0
  19. data/lib/prawn/fonts/ttc.rb +36 -0
  20. data/lib/prawn/{font → fonts}/ttf.rb +140 -88
  21. data/lib/prawn/graphics/blend_mode.rb +65 -0
  22. data/lib/prawn/graphics/cap_style.rb +5 -5
  23. data/lib/prawn/graphics/color.rb +46 -44
  24. data/lib/prawn/graphics/dash.rb +27 -11
  25. data/lib/prawn/graphics/join_style.rb +11 -6
  26. data/lib/prawn/graphics/patterns.rb +220 -78
  27. data/lib/prawn/graphics/transformation.rb +20 -12
  28. data/lib/prawn/graphics/transparency.rb +20 -18
  29. data/lib/prawn/graphics.rb +153 -115
  30. data/lib/prawn/grid.rb +93 -50
  31. data/lib/prawn/image_handler.rb +4 -4
  32. data/lib/prawn/images/image.rb +3 -2
  33. data/lib/prawn/images/jpg.rb +31 -24
  34. data/lib/prawn/images/png.rb +101 -68
  35. data/lib/prawn/images.rb +64 -56
  36. data/lib/prawn/measurement_extensions.rb +10 -9
  37. data/lib/prawn/measurements.rb +20 -23
  38. data/lib/prawn/outline.rb +96 -75
  39. data/lib/prawn/repeater.rb +16 -16
  40. data/lib/prawn/security/arcfour.rb +2 -2
  41. data/lib/prawn/security.rb +100 -85
  42. data/lib/prawn/soft_mask.rb +37 -38
  43. data/lib/prawn/stamp.rb +28 -13
  44. data/lib/prawn/text/box.rb +24 -29
  45. data/lib/prawn/text/formatted/arranger.rb +108 -63
  46. data/lib/prawn/text/formatted/box.rb +187 -124
  47. data/lib/prawn/text/formatted/fragment.rb +24 -20
  48. data/lib/prawn/text/formatted/line_wrap.rb +133 -73
  49. data/lib/prawn/text/formatted/parser.rb +147 -127
  50. data/lib/prawn/text/formatted/wrap.rb +48 -35
  51. data/lib/prawn/text/formatted.rb +5 -5
  52. data/lib/prawn/text.rb +103 -68
  53. data/lib/prawn/transformation_stack.rb +44 -0
  54. data/lib/prawn/utilities.rb +10 -22
  55. data/lib/prawn/version.rb +5 -0
  56. data/lib/prawn/view.rb +101 -0
  57. data/lib/prawn.rb +39 -54
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +34 -25
  60. data/manual/basic_concepts/creation.rb +10 -11
  61. data/manual/basic_concepts/cursor.rb +4 -5
  62. data/manual/basic_concepts/measurement.rb +8 -9
  63. data/manual/basic_concepts/origin.rb +5 -6
  64. data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
  65. data/manual/basic_concepts/view.rb +48 -0
  66. data/manual/bounding_box/bounding_box.rb +30 -28
  67. data/manual/bounding_box/bounds.rb +12 -13
  68. data/manual/bounding_box/canvas.rb +7 -8
  69. data/manual/bounding_box/creation.rb +6 -7
  70. data/manual/bounding_box/indentation.rb +14 -15
  71. data/manual/bounding_box/nesting.rb +25 -18
  72. data/manual/bounding_box/russian_boxes.rb +18 -18
  73. data/manual/bounding_box/stretchy.rb +12 -14
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -32
  76. data/manual/document_and_page_options/background.rb +15 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +24 -22
  78. data/manual/document_and_page_options/metadata.rb +20 -18
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -13
  81. data/manual/document_and_page_options/print_scaling.rb +18 -15
  82. data/manual/example_helper.rb +5 -4
  83. data/manual/graphics/blend_mode.rb +52 -0
  84. data/manual/graphics/circle_and_ellipse.rb +4 -5
  85. data/manual/graphics/color.rb +7 -9
  86. data/manual/graphics/common_lines.rb +7 -8
  87. data/manual/graphics/fill_and_stroke.rb +5 -6
  88. data/manual/graphics/fill_rules.rb +12 -11
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +46 -40
  91. data/manual/graphics/helper.rb +19 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +8 -9
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -9
  97. data/manual/graphics/scale.rb +14 -13
  98. data/manual/graphics/soft_masks.rb +4 -6
  99. data/manual/graphics/stroke_cap.rb +7 -8
  100. data/manual/graphics/stroke_dash.rb +15 -16
  101. data/manual/graphics/stroke_join.rb +6 -7
  102. data/manual/graphics/translate.rb +10 -10
  103. data/manual/graphics/transparency.rb +7 -9
  104. data/manual/how_to_read_this_manual.rb +8 -9
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +10 -11
  108. data/manual/images/images.rb +28 -27
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +16 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +10 -11
  114. data/manual/layout/content.rb +9 -10
  115. data/manual/layout/layout.rb +17 -18
  116. data/manual/layout/simple_grid.rb +6 -7
  117. data/manual/outline/add_subsection_to.rb +20 -21
  118. data/manual/outline/insert_section_after.rb +15 -16
  119. data/manual/outline/outline.rb +22 -21
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +36 -0
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +27 -23
  124. data/manual/repeatable_content/repeater.rb +15 -16
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +8 -11
  127. data/manual/security/permissions.rb +20 -15
  128. data/manual/security/security.rb +18 -18
  129. data/manual/table.rb +16 -0
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -12
  132. data/manual/text/column_box.rb +9 -11
  133. data/manual/text/fallback_fonts.rb +25 -21
  134. data/manual/text/font.rb +11 -12
  135. data/manual/text/font_size.rb +13 -14
  136. data/manual/text/font_style.rb +10 -8
  137. data/manual/text/formatted_callbacks.rb +33 -23
  138. data/manual/text/formatted_text.rb +36 -25
  139. data/manual/text/free_flowing_text.rb +22 -23
  140. data/manual/text/inline.rb +18 -19
  141. data/manual/text/kerning_and_character_spacing.rb +14 -15
  142. data/manual/text/leading.rb +7 -8
  143. data/manual/text/line_wrapping.rb +37 -18
  144. data/manual/text/paragraph_indentation.rb +15 -10
  145. data/manual/text/positioned_text.rb +16 -17
  146. data/manual/text/registering_families.rb +27 -24
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +30 -19
  149. data/manual/text/rotation.rb +33 -24
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +56 -54
  152. data/manual/text/text_box_excess.rb +20 -17
  153. data/manual/text/text_box_extensions.rb +18 -15
  154. data/manual/text/text_box_overflow.rb +24 -17
  155. data/manual/text/utf8.rb +12 -13
  156. data/manual/text/win_ansi_charset.rb +28 -25
  157. data/prawn.gemspec +45 -50
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +550 -0
  160. data/spec/prawn/document/column_box_spec.rb +75 -0
  161. data/spec/prawn/document/security_spec.rb +176 -0
  162. data/spec/prawn/document_annotations_spec.rb +76 -0
  163. data/spec/prawn/document_destinations_spec.rb +15 -0
  164. data/spec/prawn/document_grid_spec.rb +99 -0
  165. data/spec/prawn/document_reference_spec.rb +27 -0
  166. data/spec/prawn/document_span_spec.rb +44 -0
  167. data/spec/prawn/document_spec.rb +805 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +544 -0
  170. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  171. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  172. data/spec/prawn/graphics_spec.rb +872 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/prawn/image_handler_spec.rb +53 -0
  175. data/spec/prawn/images/jpg_spec.rb +20 -0
  176. data/spec/prawn/images/png_spec.rb +283 -0
  177. data/spec/prawn/images_spec.rb +229 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +512 -0
  180. data/spec/prawn/repeater_spec.rb +166 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +173 -0
  183. data/spec/prawn/text/box_spec.rb +1110 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +849 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +150 -0
  190. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  191. data/spec/prawn/text_spacing_spec.rb +95 -0
  192. data/spec/prawn/text_spec.rb +603 -0
  193. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  194. data/spec/prawn/transformation_stack_spec.rb +66 -0
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +19 -25
  198. data.tar.gz.sig +0 -0
  199. metadata +113 -276
  200. metadata.gz.sig +0 -0
  201. data/data/encodings/win_ansi.txt +0 -29
  202. data/data/images/16bit.alpha +0 -0
  203. data/data/images/16bit.color +0 -0
  204. data/data/images/16bit.png +0 -0
  205. data/data/images/arrow.png +0 -0
  206. data/data/images/arrow2.png +0 -0
  207. data/data/images/dice.alpha +0 -0
  208. data/data/images/dice.color +0 -0
  209. data/data/images/dice.png +0 -0
  210. data/data/images/dice_interlaced.png +0 -0
  211. data/data/images/fractal.jpg +0 -0
  212. data/data/images/indexed_color.dat +0 -0
  213. data/data/images/indexed_color.png +0 -0
  214. data/data/images/letterhead.jpg +0 -0
  215. data/data/images/license.md +0 -8
  216. data/data/images/page_white_text.alpha +0 -0
  217. data/data/images/page_white_text.color +0 -0
  218. data/data/images/page_white_text.png +0 -0
  219. data/data/images/pigs.jpg +0 -0
  220. data/data/images/prawn.png +0 -0
  221. data/data/images/ruport.png +0 -0
  222. data/data/images/ruport_data.dat +0 -0
  223. data/data/images/ruport_transparent.png +0 -0
  224. data/data/images/ruport_type0.png +0 -0
  225. data/data/images/stef.jpg +0 -0
  226. data/data/images/tru256.bmp +0 -0
  227. data/data/images/web-links.dat +0 -1
  228. data/data/images/web-links.png +0 -0
  229. data/data/pdfs/complex_template.pdf +0 -0
  230. data/data/pdfs/contains_ttf_font.pdf +0 -0
  231. data/data/pdfs/encrypted.pdf +0 -0
  232. data/data/pdfs/form.pdf +1 -819
  233. data/data/pdfs/hexagon.pdf +0 -61
  234. data/data/pdfs/indirect_reference.pdf +0 -86
  235. data/data/pdfs/multipage_template.pdf +0 -127
  236. data/data/pdfs/nested_pages.pdf +0 -118
  237. data/data/pdfs/page_without_mediabox.pdf +0 -193
  238. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  239. data/data/pdfs/two_hexagons.pdf +0 -90
  240. data/data/pdfs/version_1_6.pdf +0 -61
  241. data/data/shift_jis_text.txt +0 -1
  242. data/lib/prawn/document/graphics_state.rb +0 -73
  243. data/lib/prawn/font/afm.rb +0 -247
  244. data/lib/prawn/table/cell/image.rb +0 -69
  245. data/lib/prawn/table/cell/in_table.rb +0 -33
  246. data/lib/prawn/table/cell/span_dummy.rb +0 -93
  247. data/lib/prawn/table/cell/subtable.rb +0 -66
  248. data/lib/prawn/table/cell/text.rb +0 -154
  249. data/lib/prawn/table/cell.rb +0 -772
  250. data/lib/prawn/table/cells.rb +0 -255
  251. data/lib/prawn/table/column_width_calculator.rb +0 -182
  252. data/lib/prawn/table.rb +0 -644
  253. data/manual/table/basic_block.rb +0 -53
  254. data/manual/table/before_rendering_page.rb +0 -26
  255. data/manual/table/cell_border_lines.rb +0 -24
  256. data/manual/table/cell_borders_and_bg.rb +0 -31
  257. data/manual/table/cell_dimensions.rb +0 -30
  258. data/manual/table/cell_text.rb +0 -38
  259. data/manual/table/column_widths.rb +0 -30
  260. data/manual/table/content_and_subtables.rb +0 -39
  261. data/manual/table/creation.rb +0 -27
  262. data/manual/table/filtering.rb +0 -36
  263. data/manual/table/flow_and_header.rb +0 -17
  264. data/manual/table/image_cells.rb +0 -33
  265. data/manual/table/position.rb +0 -29
  266. data/manual/table/row_colors.rb +0 -20
  267. data/manual/table/span.rb +0 -30
  268. data/manual/table/style.rb +0 -22
  269. data/manual/table/table.rb +0 -52
  270. data/manual/table/width.rb +0 -27
  271. data/spec/acceptance/png.rb +0 -25
  272. data/spec/annotations_spec.rb +0 -74
  273. data/spec/bounding_box_spec.rb +0 -510
  274. data/spec/cell_spec.rb +0 -629
  275. data/spec/column_box_spec.rb +0 -65
  276. data/spec/destinations_spec.rb +0 -15
  277. data/spec/document_spec.rb +0 -730
  278. data/spec/extensions/mocha.rb +0 -46
  279. data/spec/font_metric_cache_spec.rb +0 -52
  280. data/spec/font_spec.rb +0 -449
  281. data/spec/formatted_text_arranger_spec.rb +0 -421
  282. data/spec/formatted_text_box_spec.rb +0 -639
  283. data/spec/formatted_text_fragment_spec.rb +0 -298
  284. data/spec/graphics_spec.rb +0 -669
  285. data/spec/grid_spec.rb +0 -96
  286. data/spec/image_handler_spec.rb +0 -54
  287. data/spec/images_spec.rb +0 -153
  288. data/spec/inline_formatted_text_parser_spec.rb +0 -564
  289. data/spec/jpg_spec.rb +0 -25
  290. data/spec/line_wrap_spec.rb +0 -344
  291. data/spec/measurement_units_spec.rb +0 -25
  292. data/spec/outline_spec.rb +0 -430
  293. data/spec/png_spec.rb +0 -237
  294. data/spec/reference_spec.rb +0 -25
  295. data/spec/repeater_spec.rb +0 -160
  296. data/spec/security_spec.rb +0 -158
  297. data/spec/soft_mask_spec.rb +0 -79
  298. data/spec/span_spec.rb +0 -44
  299. data/spec/stamp_spec.rb +0 -160
  300. data/spec/stroke_styles_spec.rb +0 -211
  301. data/spec/table/span_dummy_spec.rb +0 -17
  302. data/spec/table_spec.rb +0 -1527
  303. data/spec/text_at_spec.rb +0 -115
  304. data/spec/text_box_spec.rb +0 -1034
  305. data/spec/text_rendering_mode_spec.rb +0 -45
  306. data/spec/text_spacing_spec.rb +0 -93
  307. data/spec/text_spec.rb +0 -437
  308. data/spec/text_with_inline_formatting_spec.rb +0 -35
  309. data/spec/transparency_spec.rb +0 -91
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The document grid on Prawn is just a table-like structure with a defined
4
4
  # number of rows and columns. There are some helpers to create boxes of content
5
5
  # based on the grid coordinates.
@@ -7,16 +7,15 @@
7
7
  # <code>define_grid</code> accepts the following options which are pretty much
8
8
  # self-explanatory: <code>:rows</code>, <code>:columns</code>,
9
9
  # <code>:gutter</code>, <code>:row_gutter</code>, <code>:column_gutter</code>
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
15
  # The grid only need to be defined once, but since all the examples should be
17
16
  # able to run alone we are repeating it on every example
18
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
19
- text "We defined the grid, roll over to the next page to see its outline"
17
+ define_grid(columns: 5, rows: 8, gutter: 10)
18
+ text 'We defined the grid, roll over to the next page to see its outline'
20
19
 
21
20
  start_new_page
22
21
  grid.show_all
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # We have already seen how to define an outline tree sequentially.
4
4
  #
5
5
  # If you'd like to add nodes to the middle of an outline tree the
@@ -16,9 +16,8 @@
16
16
  #
17
17
  # If the parent title provided is the title of a page. The page will be
18
18
  # converted into a section to receive the subsection created.
19
- #
20
- require File.expand_path(File.join(File.dirname(__FILE__),
21
- %w[.. example_helper]))
19
+
20
+ require_relative '../example_helper'
22
21
 
23
22
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
24
23
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -29,33 +28,33 @@ Prawn::ManualBuilder::Example.generate(filename) do
29
28
  end
30
29
 
31
30
  outline.define do
32
- section("Section 1", :destination => 1) do
33
- page :title => "Page 2", :destination => 2
34
- page :title => "Page 3", :destination => 3
31
+ section('Section 1', destination: 1) do
32
+ page title: 'Page 2', destination: 2
33
+ page title: 'Page 3', destination: 3
35
34
  end
36
35
  end
37
36
 
38
37
  # Now we will start adding nodes to the previous outline
39
- outline.add_subsection_to("Section 1", :first) do
40
- outline.section("Added later - first position") do
41
- outline.page :title => "Page 4", :destination => 4
42
- outline.page :title => "Page 5", :destination => 5
38
+ outline.add_subsection_to('Section 1', :first) do
39
+ outline.section('Added later - first position') do
40
+ outline.page title: 'Page 4', destination: 4
41
+ outline.page title: 'Page 5', destination: 5
43
42
  end
44
43
  end
45
44
 
46
- outline.add_subsection_to("Section 1") do
47
- outline.page :title => "Added later - last position",
48
- :destination => 6
45
+ outline.add_subsection_to('Section 1') do
46
+ outline.page title: 'Added later - last position',
47
+ destination: 6
49
48
  end
50
49
 
51
- outline.add_subsection_to("Added later - first position") do
52
- outline.page :title => "Another page added later",
53
- :destination => 7
50
+ outline.add_subsection_to('Added later - first position') do
51
+ outline.page title: 'Another page added later',
52
+ destination: 7
54
53
  end
55
54
 
56
55
  # The title provided is for a page which will be converted into a section
57
- outline.add_subsection_to("Page 3") do
58
- outline.page :title => "Last page added",
59
- :destination => 8
56
+ outline.add_subsection_to('Page 3') do
57
+ outline.page title: 'Last page added',
58
+ destination: 8
60
59
  end
61
60
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Another way to insert nodes into an existing outline is the
4
4
  # <code>insert_section_after</code> method.
5
5
  #
@@ -8,9 +8,8 @@
8
8
  #
9
9
  # As is the case with <code>add_subsection_to</code> the section added
10
10
  # doesn't need to be a section, it may be just a page.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
11
+
12
+ require_relative '../example_helper'
14
13
 
15
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
15
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -21,27 +20,27 @@ Prawn::ManualBuilder::Example.generate(filename) do
21
20
  end
22
21
 
23
22
  outline.define do
24
- section("Section 1", :destination => 1) do
25
- page :title => "Page 2", :destination => 2
26
- page :title => "Page 3", :destination => 3
23
+ section('Section 1', destination: 1) do
24
+ page title: 'Page 2', destination: 2
25
+ page title: 'Page 3', destination: 3
27
26
  end
28
27
  end
29
28
 
30
29
  # Now we will start adding nodes to the previous outline
31
- outline.insert_section_after("Page 2") do
32
- outline.section("Section after Page 2") do
33
- outline.page :title => "Page 4", :destination => 4
30
+ outline.insert_section_after('Page 2') do
31
+ outline.section('Section after Page 2') do
32
+ outline.page title: 'Page 4', destination: 4
34
33
  end
35
34
  end
36
35
 
37
- outline.insert_section_after("Section 1") do
38
- outline.section("Section after Section 1") do
39
- outline.page :title => "Page 5", :destination => 5
36
+ outline.insert_section_after('Section 1') do
37
+ outline.section('Section after Section 1') do
38
+ outline.page title: 'Page 5', destination: 5
40
39
  end
41
40
  end
42
41
 
43
42
  # Adding just a page
44
- outline.insert_section_after("Page 3") do
45
- outline.page :title => "Page after Page 3", :destination => 6
43
+ outline.insert_section_after('Page 3') do
44
+ outline.page title: 'Page after Page 3', destination: 6
46
45
  end
47
46
  end
@@ -1,32 +1,33 @@
1
- # encoding: utf-8
2
- #
3
- # Examples for defining the document outline.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
1
+ # frozen_string_literal: true
7
2
 
8
- Prawn::ManualBuilder::Example.generate("outline.pdf", :page_size => "FOLIO") do
3
+ # Examples for defining the document outline.
9
4
 
10
- package "outline" do |p|
5
+ require_relative '../example_helper'
11
6
 
12
- p.section "Basics" do |s|
13
- s.example "sections_and_pages", :eval_source => false
7
+ Prawn::ManualBuilder::Example.generate('outline.pdf', page_size: 'FOLIO') do
8
+ package 'outline' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'sections_and_pages', eval_source: false
14
11
  end
15
12
 
16
- p.section "Adding nodes later" do |s|
17
- s.example "add_subsection_to", :eval_source => false
18
- s.example "insert_section_after", :eval_source => false
13
+ p.section 'Adding nodes later' do |s|
14
+ s.example 'add_subsection_to', eval_source: false
15
+ s.example 'insert_section_after', eval_source: false
19
16
  end
20
17
 
21
18
  p.intro do
22
- prose("The outline of a PDF document is the table of contents tab you see to the right or left of your PDF viewer.
23
-
24
- The examples include:")
25
-
26
- list( "How to define sections and pages",
27
- "How to insert sections and/or pages to a previously defined outline structure"
28
- )
19
+ prose <<-TEXT
20
+ The outline of a PDF document is the table of contents tab you see to
21
+ the right or left of your PDF viewer.
22
+
23
+ The examples include:
24
+ TEXT
25
+
26
+ list(
27
+ 'How to define sections and pages',
28
+ 'How to insert sections and/or pages to a previously defined outline '\
29
+ 'structure'
30
+ )
29
31
  end
30
-
31
32
  end
32
33
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The document outline tree is the set of links used to navigate through the
4
4
  # various document sections and pages.
5
5
  #
@@ -23,9 +23,8 @@
23
23
  # <code>section</code> and <code>page</code> may also be used without the
24
24
  # <code>define</code> method but they will need to instantiate the
25
25
  # <code>outline</code> object every time.
26
- #
27
- require File.expand_path(File.join(File.dirname(__FILE__),
28
- %w[.. example_helper]))
26
+
27
+ require_relative '../example_helper'
29
28
 
30
29
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
31
30
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -36,32 +35,32 @@ Prawn::ManualBuilder::Example.generate(filename) do
36
35
  end
37
36
 
38
37
  outline.define do
39
- section("Section 1", :destination => 1) do
40
- page :title => "Page 2", :destination => 2
41
- page :title => "Page 3", :destination => 3
38
+ section('Section 1', destination: 1) do
39
+ page title: 'Page 2', destination: 2
40
+ page title: 'Page 3', destination: 3
42
41
  end
43
42
 
44
- section("Section 2", :destination => 4) do
45
- page :title => "Page 5", :destination => 5
43
+ section('Section 2', destination: 4) do
44
+ page title: 'Page 5', destination: 5
46
45
 
47
- section("Subsection 2.1", :destination => 6, :closed => true) do
48
- page :title => "Page 7", :destination => 7
46
+ section('Subsection 2.1', destination: 6, closed: true) do
47
+ page title: 'Page 7', destination: 7
49
48
  end
50
49
  end
51
50
  end
52
51
 
53
52
  # Outside of the define block
54
- outline.section("Section 3", :destination => 8) do
55
- outline.page :title => "Page 9", :destination => 9
53
+ outline.section('Section 3', destination: 8) do
54
+ outline.page title: 'Page 9', destination: 9
56
55
  end
57
56
 
58
- outline.page :title => "Page 10", :destination => 10
57
+ outline.page title: 'Page 10', destination: 10
59
58
 
60
59
  # Section and Pages without links. While a section without a link may be
61
60
  # useful to group some pages, a page without a link is useless
62
- outline.update do # update is an alias to define
63
- section("Section without link") do
64
- page :title => "Page without link"
61
+ outline.update do # update is an alias to define
62
+ section('Section without link') do
63
+ page title: 'Page without link'
65
64
  end
66
65
  end
67
66
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Below is the code to generate page numbers that alternate being rendered
4
+ # on the right and left side of the page. The first page will have a "1" in
5
+ # the bottom right corner. The second page will have a "2" in the bottom
6
+ # left corner of the page. The third a "3" in the bottom right, etc.
7
+
8
+ require_relative '../example_helper'
9
+
10
+ filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
+ Prawn::ManualBuilder::Example.generate(filename) do
12
+ text 'This is the first page!'
13
+
14
+ 10.times do
15
+ start_new_page
16
+ text 'Here comes yet another page.'
17
+ end
18
+
19
+ string = '<page>'
20
+ odd_options = {
21
+ at: [bounds.right - 150, 0],
22
+ width: 150,
23
+ align: :right,
24
+ page_filter: :odd,
25
+ start_count_at: 1
26
+ }
27
+ even_options = {
28
+ at: [0, bounds.left],
29
+ width: 150,
30
+ align: :left,
31
+ page_filter: :even,
32
+ start_count_at: 2
33
+ }
34
+ number_pages string, odd_options
35
+ number_pages string, even_options
36
+ end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>number_pages</code> method is a simple way to number the pages of
4
4
  # your document. It should be called towards the end of the document since
5
5
  # pages created after the call won't be numbered.
@@ -20,33 +20,34 @@
20
20
  # <code>color</code> which accepts the same values as <code>fill_color</code>
21
21
  #
22
22
  # As well as any option accepted by <code>text_box</code>
23
- #
24
- require File.expand_path(File.join(File.dirname(__FILE__),
25
- %w[.. example_helper]))
23
+
24
+ require_relative '../example_helper'
26
25
 
27
26
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
28
27
  Prawn::ManualBuilder::Example.generate(filename) do
29
- text "This is the first page!"
28
+ text 'This is the first page!'
30
29
 
31
30
  10.times do
32
31
  start_new_page
33
- text "Here comes yet another page."
32
+ text 'Here comes yet another page.'
34
33
  end
35
34
 
36
- string = "page <page> of <total>"
35
+ string = 'page <page> of <total>'
37
36
  # Green page numbers 1 to 7
38
- options = { :at => [bounds.right - 150, 0],
39
- :width => 150,
40
- :align => :right,
41
- :page_filter => (1..7),
42
- :start_count_at => 1,
43
- :color => "007700" }
37
+ options = {
38
+ at: [bounds.right - 150, 0],
39
+ width: 150,
40
+ align: :right,
41
+ page_filter: (1..7),
42
+ start_count_at: 1,
43
+ color: '007700'
44
+ }
44
45
  number_pages string, options
45
46
 
46
47
  # Gray page numbers from 8 on up
47
- options[:page_filter] = lambda{ |pg| pg > 7}
48
+ options[:page_filter] = ->(pg) { pg > 7 }
48
49
  options[:start_count_at] = 8
49
- options[:color] = "333333"
50
+ options[:color] = '333333'
50
51
  number_pages string, options
51
52
 
52
53
  start_new_page
@@ -1,31 +1,35 @@
1
- # encoding: utf-8
2
- #
3
- # Examples for stamps and repeaters.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
1
+ # frozen_string_literal: true
7
2
 
8
- Prawn::ManualBuilder::Example.generate("repeatable_content.pdf", :page_size => "FOLIO") do
3
+ # Examples for stamps and repeaters.
9
4
 
10
- package "repeatable_content" do |p|
5
+ require_relative '../example_helper'
11
6
 
12
- p.example "repeater", :eval_source => false
13
- p.example "stamp"
14
- p.example "page_numbering", :eval_source => false
7
+ filename = File.basename(__FILE__).gsub('.rb', '.pdf')
8
+ Prawn::ManualBuilder::Example.generate(filename, page_size: 'FOLIO') do
9
+ package 'repeatable_content' do |p|
10
+ p.example 'repeater', eval_source: false
11
+ p.example 'stamp'
12
+ p.example 'page_numbering', eval_source: false
13
+ p.example 'alternate_page_numbering', eval_source: false
15
14
 
16
15
  p.intro do
17
- prose("Prawn offers two ways to handle repeatable content blocks. Repeater is useful for content that gets repeated at well defined intervals while Stamp is more appropriate if you need better control of when to repeat it.
18
-
19
- There is also one very specific helper for numbering pages.
20
-
21
- The examples show:")
22
-
23
- list( "How to repeat content on several pages with a single invocation",
24
- "How to create a new Stamp",
25
- 'How to "stamp" the content block on the page',
26
- "How to number the document pages with one simple call"
27
- )
16
+ prose <<-TEXT
17
+ Prawn offers two ways to handle repeatable content blocks. Repeater is
18
+ useful for content that gets repeated at well defined intervals while
19
+ Stamp is more appropriate if you need better control of when to repeat
20
+ it.
21
+
22
+ There is also one very specific helper for numbering pages.
23
+
24
+ The examples show:
25
+ TEXT
26
+
27
+ list(
28
+ 'How to repeat content on several pages with a single invocation',
29
+ 'How to create a new Stamp',
30
+ 'How to "stamp" the content block on the page',
31
+ 'How to number the document pages with one simple call'
32
+ )
28
33
  end
29
-
30
34
  end
31
35
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>repeat</code> method is quite versatile when it comes to define
4
4
  # the intervals at which the content block should repeat.
5
5
  #
@@ -14,42 +14,41 @@
14
14
  #
15
15
  # It is also important to say that no matter where you define the repeater it
16
16
  # will be applied to all matching pages.
17
- #
18
- require File.expand_path(File.join(File.dirname(__FILE__),
19
- %w[.. example_helper]))
17
+
18
+ require_relative '../example_helper'
20
19
 
21
20
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
22
21
  Prawn::ManualBuilder::Example.generate(filename) do
23
22
  repeat(:all) do
24
- draw_text "All pages", :at => bounds.top_left
23
+ draw_text 'All pages', at: bounds.top_left
25
24
  end
26
25
 
27
26
  repeat(:odd) do
28
- draw_text "Only odd pages", :at => [0,0]
27
+ draw_text 'Only odd pages', at: [0, 0]
29
28
  end
30
29
 
31
30
  repeat(:even) do
32
- draw_text "Only even pages", :at => [0,0]
31
+ draw_text 'Only even pages', at: [0, 0]
33
32
  end
34
33
 
35
- repeat([1,3,7]) do
36
- draw_text "Only on pages 1, 3 and 7", :at => [100,0]
34
+ repeat([1, 3, 7]) do
35
+ draw_text 'Only on pages 1, 3 and 7', at: [100, 0]
37
36
  end
38
37
 
39
38
  repeat(2..4) do
40
- draw_text "From the 2nd to the 4th page", :at => [300,0]
39
+ draw_text 'From the 2nd to the 4th page', at: [300, 0]
41
40
  end
42
41
 
43
- repeat(lambda { |pg| pg % 3 == 0 }) do
44
- draw_text "Every third page", :at => [250, 20]
42
+ repeat(->(pg) { (pg % 3).zero? }) do
43
+ draw_text 'Every third page', at: [250, 20]
45
44
  end
46
45
 
47
- repeat(:all, :dynamic => true) do
48
- draw_text page_number, :at => [500, 0]
46
+ repeat(:all, dynamic: true) do
47
+ draw_text page_number, at: [500, 0]
49
48
  end
50
49
 
51
50
  10.times do
52
51
  start_new_page
53
- draw_text "A wonderful page", :at => [400,400]
52
+ draw_text 'A wonderful page', at: [400, 400]
54
53
  end
55
54
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Stamps should be used when you have content that will be included multiple
4
4
  # times in a document. Its advantages over creating the content anew each time
5
5
  # are:
@@ -15,27 +15,26 @@
15
15
  # There are two methods to render the stamp on a page <code>stamp</code> and
16
16
  # <code>stamp_at</code>. The first will render the stamp as is while the
17
17
  # second accepts a point to serve as an offset to the stamp content.
18
- #
19
- require File.expand_path(File.join(File.dirname(__FILE__),
20
- %w[.. example_helper]))
18
+
19
+ require_relative '../example_helper'
21
20
 
22
21
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
23
22
  Prawn::ManualBuilder::Example.generate(filename) do
24
- create_stamp("approved") do
25
- rotate(30, :origin => [-5, -5]) do
26
- stroke_color "FF3333"
23
+ create_stamp('approved') do
24
+ rotate(30, origin: [-5, -5]) do
25
+ stroke_color 'FF3333'
27
26
  stroke_ellipse [0, 0], 29, 15
28
- stroke_color "000000"
27
+ stroke_color '000000'
29
28
 
30
- fill_color "993333"
31
- font("Times-Roman") do
32
- draw_text "Approved", :at => [-23, -3]
29
+ fill_color '993333'
30
+ font('Times-Roman') do
31
+ draw_text 'Approved', at: [-23, -3]
33
32
  end
34
- fill_color "000000"
33
+ fill_color '000000'
35
34
  end
36
35
  end
37
36
 
38
- stamp "approved"
37
+ stamp 'approved'
39
38
 
40
- stamp_at "approved", [200, 200]
39
+ stamp_at 'approved', [200, 200]
41
40
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>encrypt_document</code> method, as you might have already guessed,
4
4
  # is used to encrypt the PDF document.
5
5
  #
@@ -12,20 +12,17 @@
12
12
  # documentation (you can find it here:
13
13
  # https://github.com/prawnpdf/prawn/blob/master/lib/prawn/security.rb ) before
14
14
  # using this for anything super serious.
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
18
15
 
16
+ require_relative '../example_helper'
19
17
 
20
18
  # Bare encryption. No password needed.
21
- Prawn::ManualBuilder::Example.generate("bare_encryption.pdf") do
22
- text "See, no password was asked but the document is still encrypted."
19
+ Prawn::ManualBuilder::Example.generate('bare_encryption.pdf') do
20
+ text 'See, no password was asked but the document is still encrypted.'
23
21
  encrypt_document
24
22
  end
25
23
 
26
-
27
24
  # Simple password. All permissions granted.
28
- Prawn::ManualBuilder::Example.generate("simple_password.pdf") do
29
- text "You was asked for a password."
30
- encrypt_document(:user_password => 'foo', :owner_password => 'bar')
25
+ Prawn::ManualBuilder::Example.generate('simple_password.pdf') do
26
+ text 'You was asked for a password.'
27
+ encrypt_document(user_password: 'foo', owner_password: 'bar')
31
28
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Some permissions may be set for the regular user with the following options:
4
4
  # <code>:print_document</code>, <code>:modify_contents</code>,
5
5
  # <code>:copy_contents</code>, <code>:modify_annotations</code>. All this
@@ -14,25 +14,30 @@
14
14
  # documentation (you can find it here:
15
15
  # https://github.com/prawnpdf/prawn/blob/master/lib/prawn/security.rb ) before
16
16
  # using this for anything super serious.
17
- #
18
- require File.expand_path(File.join(File.dirname(__FILE__),
19
- %w[.. example_helper]))
20
17
 
18
+ require_relative '../example_helper'
21
19
 
22
20
  # User cannot print the document.
23
- Prawn::ManualBuilder::Example.generate("cannot_print.pdf") do
21
+ Prawn::ManualBuilder::Example.generate('cannot_print.pdf') do
24
22
  text "If you used the user password you won't be able to print the doc."
25
- encrypt_document(:user_password => 'foo', :owner_password => 'bar',
26
- :permissions => { :print_document => false })
23
+ encrypt_document(
24
+ user_password: 'foo',
25
+ owner_password: 'bar',
26
+ permissions: { print_document: false }
27
+ )
27
28
  end
28
29
 
29
-
30
30
  # All permissions revoked and owner password set to random
31
- Prawn::ManualBuilder::Example.generate("no_permissions.pdf") do
31
+ Prawn::ManualBuilder::Example.generate('no_permissions.pdf') do
32
32
  text "You may only view this and won't be able to use the owner password."
33
- encrypt_document(:user_password => 'foo', :owner_password => :random,
34
- :permissions => { :print_document => false,
35
- :modify_contents => false,
36
- :copy_contents => false,
37
- :modify_annotations => false })
33
+ encrypt_document(
34
+ user_password: 'foo',
35
+ owner_password: :random,
36
+ permissions: {
37
+ print_document: false,
38
+ modify_contents: false,
39
+ copy_contents: false,
40
+ modify_annotations: false
41
+ }
42
+ )
38
43
  end