prawn 0.13.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +10 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -16
  6. data/Rakefile +17 -39
  7. data/lib/prawn/document/bounding_box.rb +85 -42
  8. data/lib/prawn/document/column_box.rb +21 -11
  9. data/lib/prawn/document/internals.rb +40 -147
  10. data/lib/prawn/document/span.rb +25 -17
  11. data/lib/prawn/document.rb +286 -245
  12. data/lib/prawn/encoding.rb +68 -101
  13. data/lib/prawn/errors.rb +47 -43
  14. data/lib/prawn/font.rb +204 -155
  15. data/lib/prawn/font_metric_cache.rb +25 -21
  16. data/lib/prawn/fonts/afm.rb +292 -0
  17. data/lib/prawn/{font → fonts}/dfont.rb +7 -13
  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 +142 -80
  21. data/lib/prawn/graphics/blend_mode.rb +65 -0
  22. data/lib/prawn/graphics/cap_style.rb +6 -5
  23. data/lib/prawn/graphics/color.rb +47 -44
  24. data/lib/prawn/graphics/dash.rb +30 -13
  25. data/lib/prawn/graphics/join_style.rb +13 -6
  26. data/lib/prawn/graphics/patterns.rb +221 -90
  27. data/lib/prawn/graphics/transformation.rb +21 -12
  28. data/lib/prawn/graphics/transparency.rb +21 -17
  29. data/lib/prawn/graphics.rb +155 -128
  30. data/lib/prawn/{layout/grid.rb → grid.rb} +110 -47
  31. data/lib/prawn/image_handler.rb +16 -2
  32. data/lib/prawn/images/image.rb +4 -2
  33. data/lib/prawn/images/jpg.rb +39 -30
  34. data/lib/prawn/images/png.rb +132 -169
  35. data/lib/prawn/images.rb +70 -62
  36. data/lib/prawn/measurement_extensions.rb +15 -10
  37. data/lib/prawn/measurements.rb +22 -23
  38. data/lib/prawn/outline.rb +301 -13
  39. data/lib/prawn/repeater.rb +19 -17
  40. data/lib/prawn/security/arcfour.rb +54 -0
  41. data/lib/prawn/security.rb +108 -86
  42. data/lib/prawn/soft_mask.rb +40 -41
  43. data/lib/prawn/stamp.rb +29 -12
  44. data/lib/prawn/text/box.rb +27 -29
  45. data/lib/prawn/text/formatted/arranger.rb +110 -67
  46. data/lib/prawn/text/formatted/box.rb +233 -165
  47. data/lib/prawn/text/formatted/fragment.rb +27 -27
  48. data/lib/prawn/text/formatted/line_wrap.rb +137 -97
  49. data/lib/prawn/text/formatted/parser.rb +149 -127
  50. data/lib/prawn/text/formatted/wrap.rb +57 -37
  51. data/lib/prawn/text/formatted.rb +6 -4
  52. data/lib/prawn/text.rb +105 -73
  53. data/lib/prawn/transformation_stack.rb +44 -0
  54. data/lib/prawn/utilities.rb +11 -21
  55. data/lib/prawn/version.rb +5 -0
  56. data/lib/prawn/view.rb +101 -0
  57. data/lib/prawn.rb +42 -68
  58. data/{data/images/fractal.jpg → manual/absolute_position.pdf} +0 -0
  59. data/manual/basic_concepts/adding_pages.rb +9 -10
  60. data/manual/basic_concepts/basic_concepts.rb +33 -24
  61. data/manual/basic_concepts/creation.rb +10 -11
  62. data/manual/basic_concepts/cursor.rb +9 -10
  63. data/manual/basic_concepts/measurement.rb +10 -11
  64. data/manual/basic_concepts/origin.rb +8 -9
  65. data/manual/basic_concepts/other_cursor_helpers.rb +17 -18
  66. data/manual/basic_concepts/view.rb +48 -0
  67. data/manual/bounding_box/bounding_box.rb +31 -29
  68. data/manual/bounding_box/bounds.rb +17 -18
  69. data/manual/bounding_box/canvas.rb +8 -9
  70. data/manual/bounding_box/creation.rb +8 -9
  71. data/manual/bounding_box/indentation.rb +22 -23
  72. data/manual/bounding_box/nesting.rb +32 -25
  73. data/manual/bounding_box/russian_boxes.rb +19 -19
  74. data/manual/bounding_box/stretchy.rb +18 -20
  75. data/manual/contents.rb +35 -0
  76. data/manual/cover.rb +43 -0
  77. data/manual/document_and_page_options/background.rb +16 -14
  78. data/manual/document_and_page_options/document_and_page_options.rb +26 -23
  79. data/manual/document_and_page_options/metadata.rb +21 -19
  80. data/manual/document_and_page_options/page_margins.rb +20 -22
  81. data/manual/document_and_page_options/page_size.rb +15 -15
  82. data/manual/document_and_page_options/print_scaling.rb +23 -0
  83. data/manual/example_helper.rb +5 -408
  84. data/manual/graphics/blend_mode.rb +52 -0
  85. data/manual/graphics/circle_and_ellipse.rb +8 -9
  86. data/manual/graphics/color.rb +11 -13
  87. data/manual/graphics/common_lines.rb +13 -12
  88. data/manual/graphics/fill_and_stroke.rb +10 -11
  89. data/manual/graphics/fill_rules.rb +13 -12
  90. data/manual/graphics/gradients.rb +28 -22
  91. data/manual/graphics/graphics.rb +52 -46
  92. data/manual/graphics/helper.rb +20 -10
  93. data/manual/graphics/line_width.rb +13 -12
  94. data/manual/graphics/lines_and_curves.rb +13 -14
  95. data/manual/graphics/polygon.rb +10 -12
  96. data/manual/graphics/rectangle.rb +7 -8
  97. data/manual/graphics/rotate.rb +9 -12
  98. data/manual/graphics/scale.rb +19 -18
  99. data/manual/graphics/soft_masks.rb +5 -7
  100. data/manual/graphics/stroke_cap.rb +10 -11
  101. data/manual/graphics/stroke_dash.rb +16 -17
  102. data/manual/graphics/stroke_join.rb +10 -11
  103. data/manual/graphics/translate.rb +13 -13
  104. data/manual/graphics/transparency.rb +11 -13
  105. data/manual/{manual/how_to_read_this_manual.rb → how_to_read_this_manual.rb} +23 -25
  106. data/manual/images/absolute_position.rb +9 -10
  107. data/manual/images/fit.rb +9 -10
  108. data/manual/images/horizontal.rb +13 -14
  109. data/manual/images/images.rb +31 -30
  110. data/manual/images/plain_image.rb +6 -7
  111. data/manual/images/scale.rb +12 -13
  112. data/manual/images/vertical.rb +19 -17
  113. data/manual/images/width_and_height.rb +13 -14
  114. data/manual/layout/boxes.rb +14 -15
  115. data/manual/layout/content.rb +12 -13
  116. data/manual/layout/layout.rb +19 -20
  117. data/manual/layout/simple_grid.rb +8 -9
  118. data/manual/outline/add_subsection_to.rb +26 -27
  119. data/manual/outline/insert_section_after.rb +19 -20
  120. data/manual/outline/outline.rb +23 -22
  121. data/manual/outline/sections_and_pages.rb +24 -25
  122. data/manual/repeatable_content/alternate_page_numbering.rb +36 -0
  123. data/manual/repeatable_content/page_numbering.rb +20 -19
  124. data/manual/repeatable_content/repeatable_content.rb +26 -22
  125. data/manual/repeatable_content/repeater.rb +18 -19
  126. data/manual/repeatable_content/stamp.rb +18 -19
  127. data/manual/security/encryption.rb +8 -11
  128. data/manual/security/permissions.rb +20 -15
  129. data/manual/security/security.rb +20 -20
  130. data/manual/table.rb +16 -0
  131. data/manual/text/alignment.rb +17 -18
  132. data/manual/text/color.rb +13 -13
  133. data/manual/text/column_box.rb +10 -12
  134. data/manual/text/fallback_fonts.rb +29 -25
  135. data/manual/text/font.rb +17 -18
  136. data/manual/text/font_size.rb +21 -22
  137. data/manual/text/font_style.rb +12 -10
  138. data/manual/text/formatted_callbacks.rb +36 -26
  139. data/manual/text/formatted_text.rb +41 -34
  140. data/manual/text/free_flowing_text.rb +28 -29
  141. data/manual/text/inline.rb +23 -26
  142. data/manual/text/kerning_and_character_spacing.rb +20 -21
  143. data/manual/text/leading.rb +10 -11
  144. data/manual/text/line_wrapping.rb +40 -21
  145. data/manual/text/paragraph_indentation.rb +17 -12
  146. data/manual/text/positioned_text.rb +19 -20
  147. data/manual/text/registering_families.rb +33 -30
  148. data/manual/text/rendering_and_color.rb +11 -12
  149. data/manual/text/right_to_left_text.rb +31 -20
  150. data/manual/text/rotation.rb +36 -27
  151. data/manual/text/single_usage.rb +13 -14
  152. data/manual/text/text.rb +62 -62
  153. data/manual/text/text_box_excess.rb +22 -19
  154. data/manual/text/text_box_extensions.rb +21 -18
  155. data/manual/text/text_box_overflow.rb +28 -21
  156. data/manual/text/utf8.rb +16 -17
  157. data/manual/text/win_ansi_charset.rb +29 -26
  158. data/prawn.gemspec +45 -43
  159. data/spec/extensions/encoding_helpers.rb +4 -3
  160. data/spec/prawn/document/bounding_box_spec.rb +550 -0
  161. data/spec/prawn/document/column_box_spec.rb +75 -0
  162. data/spec/prawn/document/security_spec.rb +176 -0
  163. data/spec/prawn/document_annotations_spec.rb +76 -0
  164. data/spec/prawn/document_destinations_spec.rb +15 -0
  165. data/spec/prawn/document_grid_spec.rb +99 -0
  166. data/spec/prawn/document_reference_spec.rb +27 -0
  167. data/spec/prawn/document_span_spec.rb +44 -0
  168. data/spec/prawn/document_spec.rb +805 -0
  169. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  170. data/spec/prawn/font_spec.rb +544 -0
  171. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  172. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  173. data/spec/prawn/graphics_spec.rb +872 -0
  174. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  175. data/spec/prawn/image_handler_spec.rb +53 -0
  176. data/spec/prawn/images/jpg_spec.rb +20 -0
  177. data/spec/prawn/images/png_spec.rb +283 -0
  178. data/spec/prawn/images_spec.rb +229 -0
  179. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  180. data/spec/prawn/outline_spec.rb +512 -0
  181. data/spec/prawn/repeater_spec.rb +166 -0
  182. data/spec/prawn/soft_mask_spec.rb +74 -0
  183. data/spec/prawn/stamp_spec.rb +173 -0
  184. data/spec/prawn/text/box_spec.rb +1110 -0
  185. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  186. data/spec/prawn/text/formatted/box_spec.rb +849 -0
  187. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  188. data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
  189. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  190. data/spec/prawn/text_draw_text_spec.rb +150 -0
  191. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  192. data/spec/prawn/text_spacing_spec.rb +95 -0
  193. data/spec/prawn/text_spec.rb +603 -0
  194. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  195. data/spec/prawn/transformation_stack_spec.rb +66 -0
  196. data/spec/prawn/view_spec.rb +63 -0
  197. data/spec/prawn_manual_spec.rb +35 -0
  198. data/spec/spec_helper.rb +22 -21
  199. data.tar.gz.sig +0 -0
  200. metadata +168 -307
  201. metadata.gz.sig +0 -0
  202. data/README.md +0 -109
  203. data/data/encodings/win_ansi.txt +0 -29
  204. data/data/images/16bit.alpha +0 -0
  205. data/data/images/16bit.dat +0 -0
  206. data/data/images/16bit.png +0 -0
  207. data/data/images/arrow.png +0 -0
  208. data/data/images/arrow2.png +0 -0
  209. data/data/images/barcode_issue.png +0 -0
  210. data/data/images/dice.alpha +0 -0
  211. data/data/images/dice.dat +0 -0
  212. data/data/images/dice.png +0 -0
  213. data/data/images/dice_interlaced.png +0 -0
  214. data/data/images/indexed_color.dat +0 -0
  215. data/data/images/indexed_color.png +0 -0
  216. data/data/images/letterhead.jpg +0 -0
  217. data/data/images/page_white_text.alpha +0 -0
  218. data/data/images/page_white_text.dat +0 -0
  219. data/data/images/page_white_text.png +0 -0
  220. data/data/images/pigs.jpg +0 -0
  221. data/data/images/prawn.png +0 -0
  222. data/data/images/ruport.png +0 -0
  223. data/data/images/ruport_data.dat +0 -0
  224. data/data/images/ruport_transparent.png +0 -0
  225. data/data/images/ruport_type0.png +0 -0
  226. data/data/images/stef.jpg +0 -0
  227. data/data/images/tru256.bmp +0 -0
  228. data/data/images/web-links.dat +0 -1
  229. data/data/images/web-links.png +0 -0
  230. data/data/pdfs/complex_template.pdf +0 -0
  231. data/data/pdfs/contains_ttf_font.pdf +0 -0
  232. data/data/pdfs/encrypted.pdf +0 -0
  233. data/data/pdfs/form.pdf +1 -819
  234. data/data/pdfs/hexagon.pdf +0 -61
  235. data/data/pdfs/indirect_reference.pdf +0 -86
  236. data/data/pdfs/multipage_template.pdf +0 -127
  237. data/data/pdfs/nested_pages.pdf +0 -118
  238. data/data/pdfs/page_without_mediabox.pdf +0 -193
  239. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  240. data/data/pdfs/two_hexagons.pdf +0 -90
  241. data/data/pdfs/version_1_6.pdf +0 -61
  242. data/data/shift_jis_text.txt +0 -1
  243. data/lib/pdf/core/annotations.rb +0 -60
  244. data/lib/pdf/core/byte_string.rb +0 -9
  245. data/lib/pdf/core/destinations.rb +0 -90
  246. data/lib/pdf/core/document_state.rb +0 -78
  247. data/lib/pdf/core/filter_list.rb +0 -51
  248. data/lib/pdf/core/filters.rb +0 -36
  249. data/lib/pdf/core/graphics_state.rb +0 -68
  250. data/lib/pdf/core/literal_string.rb +0 -16
  251. data/lib/pdf/core/name_tree.rb +0 -177
  252. data/lib/pdf/core/object_store.rb +0 -320
  253. data/lib/pdf/core/outline.rb +0 -315
  254. data/lib/pdf/core/page.rb +0 -212
  255. data/lib/pdf/core/page_geometry.rb +0 -126
  256. data/lib/pdf/core/pdf_object.rb +0 -124
  257. data/lib/pdf/core/reference.rb +0 -103
  258. data/lib/pdf/core/stream.rb +0 -98
  259. data/lib/pdf/core/text.rb +0 -275
  260. data/lib/pdf/core.rb +0 -35
  261. data/lib/prawn/compatibility.rb +0 -91
  262. data/lib/prawn/document/graphics_state.rb +0 -73
  263. data/lib/prawn/document/snapshot.rb +0 -89
  264. data/lib/prawn/font/afm.rb +0 -203
  265. data/lib/prawn/layout.rb +0 -20
  266. data/lib/prawn/table/cell/image.rb +0 -70
  267. data/lib/prawn/table/cell/in_table.rb +0 -27
  268. data/lib/prawn/table/cell/span_dummy.rb +0 -92
  269. data/lib/prawn/table/cell/subtable.rb +0 -65
  270. data/lib/prawn/table/cell/text.rb +0 -153
  271. data/lib/prawn/table/cell.rb +0 -770
  272. data/lib/prawn/table/cells.rb +0 -295
  273. data/lib/prawn/table.rb +0 -643
  274. data/manual/example_file.rb +0 -116
  275. data/manual/example_package.rb +0 -53
  276. data/manual/example_section.rb +0 -46
  277. data/manual/manual/cover.rb +0 -35
  278. data/manual/manual/foreword.rb +0 -85
  279. data/manual/manual/manual.rb +0 -35
  280. data/manual/syntax_highlight.rb +0 -52
  281. data/manual/table/basic_block.rb +0 -53
  282. data/manual/table/before_rendering_page.rb +0 -26
  283. data/manual/table/cell_border_lines.rb +0 -24
  284. data/manual/table/cell_borders_and_bg.rb +0 -31
  285. data/manual/table/cell_dimensions.rb +0 -30
  286. data/manual/table/cell_text.rb +0 -38
  287. data/manual/table/column_widths.rb +0 -30
  288. data/manual/table/content_and_subtables.rb +0 -39
  289. data/manual/table/creation.rb +0 -27
  290. data/manual/table/filtering.rb +0 -36
  291. data/manual/table/flow_and_header.rb +0 -17
  292. data/manual/table/image_cells.rb +0 -33
  293. data/manual/table/position.rb +0 -29
  294. data/manual/table/row_colors.rb +0 -20
  295. data/manual/table/span.rb +0 -30
  296. data/manual/table/style.rb +0 -22
  297. data/manual/table/table.rb +0 -52
  298. data/manual/table/width.rb +0 -27
  299. data/manual/templates/full_template.rb +0 -25
  300. data/manual/templates/page_template.rb +0 -48
  301. data/manual/templates/templates.rb +0 -27
  302. data/manual/text/group.rb +0 -29
  303. data/spec/acceptance/png.rb +0 -23
  304. data/spec/annotations_spec.rb +0 -74
  305. data/spec/bounding_box_spec.rb +0 -493
  306. data/spec/cell_spec.rb +0 -628
  307. data/spec/column_box_spec.rb +0 -33
  308. data/spec/destinations_spec.rb +0 -15
  309. data/spec/document_spec.rb +0 -761
  310. data/spec/extensions/mocha.rb +0 -44
  311. data/spec/filters_spec.rb +0 -34
  312. data/spec/font_metric_cache_spec.rb +0 -52
  313. data/spec/font_spec.rb +0 -464
  314. data/spec/formatted_text_arranger_spec.rb +0 -421
  315. data/spec/formatted_text_box_spec.rb +0 -650
  316. data/spec/formatted_text_fragment_spec.rb +0 -298
  317. data/spec/graphics_spec.rb +0 -651
  318. data/spec/grid_spec.rb +0 -85
  319. data/spec/image_handler_spec.rb +0 -42
  320. data/spec/images_spec.rb +0 -157
  321. data/spec/inline_formatted_text_parser_spec.rb +0 -564
  322. data/spec/jpg_spec.rb +0 -25
  323. data/spec/line_wrap_spec.rb +0 -333
  324. data/spec/measurement_units_spec.rb +0 -23
  325. data/spec/name_tree_spec.rb +0 -112
  326. data/spec/object_store_spec.rb +0 -170
  327. data/spec/outline_spec.rb +0 -448
  328. data/spec/pdf_object_spec.rb +0 -172
  329. data/spec/png_spec.rb +0 -240
  330. data/spec/reference_spec.rb +0 -82
  331. data/spec/repeater_spec.rb +0 -158
  332. data/spec/security_spec.rb +0 -158
  333. data/spec/snapshot_spec.rb +0 -186
  334. data/spec/soft_mask_spec.rb +0 -117
  335. data/spec/span_spec.rb +0 -44
  336. data/spec/stamp_spec.rb +0 -158
  337. data/spec/stream_spec.rb +0 -58
  338. data/spec/stroke_styles_spec.rb +0 -211
  339. data/spec/table/span_dummy_spec.rb +0 -17
  340. data/spec/table_spec.rb +0 -1355
  341. data/spec/template_spec.rb +0 -351
  342. data/spec/text_at_spec.rb +0 -130
  343. data/spec/text_box_spec.rb +0 -1030
  344. data/spec/text_rendering_mode_spec.rb +0 -45
  345. data/spec/text_spacing_spec.rb +0 -93
  346. data/spec/text_spec.rb +0 -425
  347. data/spec/text_with_inline_formatting_spec.rb +0 -35
  348. data/spec/transparency_spec.rb +0 -89
@@ -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,46 +16,45 @@
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
- Prawn::Example.generate(filename) do
23
+ Prawn::ManualBuilder::Example.generate(filename) do
25
24
  # First we create 10 pages and some default outline
26
25
  (1..10).each do |index|
27
26
  text "Page #{index}"
28
27
  start_new_page
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
-
46
- outline.add_subsection_to("Section 1") do
47
- outline.page :title => "Added later - last position",
48
- :destination => 6
44
+
45
+ outline.add_subsection_to('Section 1') do
46
+ outline.page title: 'Added later - last position',
47
+ destination: 6
49
48
  end
50
-
51
- outline.add_subsection_to("Added later - first position") do
52
- outline.page :title => "Another page added later",
53
- :destination => 7
49
+
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,40 +8,39 @@
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
- Prawn::Example.generate(filename) do
15
+ Prawn::ManualBuilder::Example.generate(filename) do
17
16
  # First we create 10 pages and some default outline
18
17
  (1..10).each do |index|
19
18
  text "Page #{index}"
20
19
  start_new_page
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
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for defining the document outline.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::Example.generate("outline.pdf", :page_size => "FOLIO") do
9
-
10
- package "outline" do |p|
11
-
12
- p.section "Basics" do |s|
13
- s.example "sections_and_pages", :eval_source => false
5
+ require_relative '../example_helper'
6
+
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
-
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
12
+
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.
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.
23
22
 
24
- The examples include:")
23
+ The examples include:
24
+ TEXT
25
25
 
26
- list( "How to define sections and pages",
27
- "How to insert sections and/or pages to a previously defined outline structure"
28
- )
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,45 +23,44 @@
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
- Prawn::Example.generate(filename) do
30
+ Prawn::ManualBuilder::Example.generate(filename) do
32
31
  # First we create 10 pages just to have something to link to
33
32
  (1..10).each do |index|
34
33
  text "Page #{index}"
35
34
  start_new_page
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
-
44
- section("Section 2", :destination => 4) do
45
- page :title => "Page 5", :destination => 5
46
-
47
- section("Subsection 2.1", :destination => 6, :closed => true) do
48
- page :title => "Page 7", :destination => 7
42
+
43
+ section('Section 2', destination: 4) do
44
+ page title: 'Page 5', destination: 5
45
+
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
-
58
- outline.page :title => "Page 10", :destination => 10
59
-
56
+
57
+ outline.page title: 'Page 10', destination: 10
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,35 +20,36 @@
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
- Prawn::Example.generate(filename) do
29
- text "This is the first page!"
30
-
27
+ Prawn::ManualBuilder::Example.generate(filename) do
28
+ text 'This is the first page!'
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
53
54
  text "See. This page isn't numbered and doesn't count towards the total."
54
55
  end
@@ -1,31 +1,35 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for stamps and repeaters.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::Example.generate("repeatable_content.pdf", :page_size => "FOLIO") do
9
-
10
- package "repeatable_content" do |p|
11
-
12
- p.example "repeater", :eval_source => false
13
- p.example "stamp"
14
- p.example "page_numbering", :eval_source => false
15
-
5
+ require_relative '../example_helper'
6
+
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
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.
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.
18
21
 
19
- There is also one very specific helper for numbering pages.
22
+ There is also one very specific helper for numbering pages.
20
23
 
21
- The examples show:")
24
+ The examples show:
25
+ TEXT
22
26
 
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
- )
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
- Prawn::Example.generate(filename) do
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
-
47
- repeat(:all, :dynamic => true) do
48
- draw_text page_number, :at => [500, 0]
45
+
46
+ repeat(:all, dynamic: true) do
47
+ draw_text page_number, at: [500, 0]
49
48
  end
50
49
 
51
- 10.times do
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
- Prawn::Example.generate(filename) do
24
- create_stamp("approved") do
25
- rotate(30, :origin => [-5, -5]) do
26
- stroke_color "FF3333"
22
+ Prawn::ManualBuilder::Example.generate(filename) do
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"
29
-
30
- fill_color "993333"
31
- font("Times-Roman") do
32
- draw_text "Approved", :at => [-23, -3]
27
+ stroke_color '000000'
28
+
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
-
38
- stamp "approved"
39
-
40
- stamp_at "approved", [200, 200]
36
+
37
+ stamp 'approved'
38
+
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::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::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::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::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