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,29 +1,29 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # This transformation is used to translate the user space. Just provide the
4
4
  # x and y coordinates for the new origin.
5
- #
6
- require File.expand_path(File.join(File.dirname(__FILE__),
7
- %w[.. example_helper]))
5
+
6
+ require_relative '../example_helper'
8
7
 
9
8
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
10
- Prawn::Example.generate(filename) do
9
+ Prawn::ManualBuilder::Example.generate(filename) do
11
10
  stroke_axis
12
-
11
+
13
12
  1.upto(3) do |i|
14
-
15
13
  x = i * 50
16
14
  y = i * 100
17
15
  translate(x, y) do
18
-
19
16
  # Draw a point on the new origin
20
17
  fill_circle [0, 0], 2
21
18
  draw_text "New origin after translation to [#{x}, #{y}]",
22
- :at => [5, -2], :size => 8
23
-
19
+ at: [5, -2],
20
+ size: 8
21
+
24
22
  stroke_rectangle [100, 75], 100, 50
25
- text_box "Top left corner at [100,75]",
26
- :at => [110, 65], :width => 80, :size => 8
23
+ text_box 'Top left corner at [100,75]',
24
+ at: [110, 65],
25
+ width: 80,
26
+ size: 8
27
27
  end
28
28
  end
29
29
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Although the name of the method is <code>transparency</code>, what we are
4
4
  # actually setting is the opacity for fill and stroke. So <code>0</code> means
5
5
  # completely transparent and <code>1.0</code> means completely opaque
@@ -7,29 +7,27 @@
7
7
  # You may call it providing one or two values. The first value sets fill opacity
8
8
  # and the second value sets stroke opacity. If the second value is omitted fill
9
9
  # and stroke will have the same opacity.
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
- Prawn::Example.generate(filename) do
14
+ Prawn::ManualBuilder::Example.generate(filename) do
16
15
  stroke_axis
17
16
 
18
17
  self.line_width = 5
19
- fill_color "ff0000"
18
+ fill_color 'ff0000'
20
19
  fill_rectangle [0, 100], 500, 100
21
-
22
- fill_color "000000"
23
- stroke_color "ffffff"
24
-
20
+
21
+ fill_color '000000'
22
+ stroke_color 'ffffff'
23
+
25
24
  base_x = 100
26
25
  [[0.5, 1], 0.5, [1, 0.5]].each do |args|
27
-
28
26
  transparent(*args) do
29
27
  fill_circle [base_x, 100], 50
30
28
  stroke_rectangle [base_x - 20, 100], 40, 80
31
29
  end
32
-
30
+
33
31
  base_x += 150
34
32
  end
35
33
  end
@@ -1,41 +1,39 @@
1
- # encoding: utf-8
2
- #
3
- # Prawn manual how to read this manual page.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
1
+ # frozen_string_literal: true
2
+
3
+ # Prawn manual how to read this manual page.
4
+
5
+ require_relative 'example_helper'
7
6
 
8
7
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
9
- Prawn::Example.generate(filename) do
10
- header("How to read this manual")
11
-
8
+ Prawn::ManualBuilder::Example.generate(filename) do
9
+ header('How to read this manual')
10
+
12
11
  prose <<-END_TEXT
13
12
  This manual is a collection of examples categorized by theme and organized from the least to the most complex. While it covers most of the common use cases it is not a comprehensive guide.
14
-
13
+
15
14
  The best way to read it depends on your previous knowledge of Prawn and what you need to accomplish.
16
-
15
+
17
16
  If you are beginning with Prawn the first chapter will teach you the most basic concepts and how to create pdf documents. For an overview of the other features each chapter beyond the first either has a Basics section (which offer enough insight on the feature without showing all the advanced stuff you might never use) or is simple enough with only a few examples.
18
-
17
+
19
18
  Once you understand the basics you might want to come back to this manual looking for examples that accomplish tasks you need.
20
-
19
+
21
20
  Advanced users are encouraged to go beyond this manual and read the source code directly if any doubt is not directly covered on this manual.
22
21
  END_TEXT
23
-
24
- move_down(BOX_MARGIN)
25
- header("Reading the examples")
26
-
22
+
23
+ move_down(Prawn::ManualBuilder::Example::BOX_MARGIN)
24
+ header('Reading the examples')
25
+
27
26
  prose <<-END_TEXT
28
27
  The title of each example is the relative path from the Prawn source manual/ folder.
29
-
30
- The first body of text is the introductory text for the example. Generaly it is a short description of the features illustrated by the example.
31
-
28
+
29
+ The first body of text is the introductory text for the example. Generally it is a short description of the features illustrated by the example.
30
+
32
31
  Next comes the example source code block in fixed width font.
33
-
32
+
34
33
  Most of the example snippets illustrate features that alter the page in place. The effect of these snippets is shown right below a dashed line. If it doesn't make sense to evaluate the snippet inline, a box with the link for the example file is shown instead.
35
34
 
36
- Note that the <code>stroke_axis</code> method, used occasionally in the manual, is not part of standard Prawn and is used for demonstrative purposes. It is defined in this file:
37
-
38
- https://github.com/prawnpdf/prawn/blob/master/manual/example_helper.rb
39
- END_TEXT
35
+ Note that the <code>stroke_axis</code> method used throughout the manual is part of standard Prawn. It is defined in this file:
40
36
 
37
+ https://github.com/prawnpdf/prawn/blob/master/lib/prawn/graphics.rb
38
+ END_TEXT
41
39
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # One of the options that the <code>image</code> method accepts is
4
4
  # <code>:at</code>. If you've read some of the graphics examples you are
5
5
  # probably already familiar with it. Just provide it the upper-left corner where
@@ -8,16 +8,15 @@
8
8
  # While sometimes useful this option won't be practical. Notice that the cursor
9
9
  # won't be moved after the image is rendered and there is nothing forbidding the
10
10
  # text to overlap with the image.
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
  y_position = cursor
18
17
  text "The image won't go below this line of text."
19
-
20
- image "#{Prawn::DATADIR}/images/fractal.jpg", :at => [200, y_position]
21
-
22
- text "And this line of text will go just below the previous one."
18
+
19
+ image "#{Prawn::DATADIR}/images/fractal.jpg", at: [200, y_position]
20
+
21
+ text 'And this line of text will go just below the previous one.'
23
22
  end
data/manual/images/fit.rb CHANGED
@@ -1,21 +1,20 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # <code>:fit</code> option is useful when you want the image to have the
4
4
  # maximum size within a container preserving the aspect ratio without
5
5
  # overlapping.
6
6
  #
7
7
  # Just provide the container width and height pair.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
- Prawn::Example.generate(filename) do
12
+ Prawn::ManualBuilder::Example.generate(filename) do
14
13
  size = 300
15
-
16
- text "Using the fit option"
17
- bounding_box([0, cursor], :width => size, :height => size) do
18
- image "#{Prawn::DATADIR}/images/pigs.jpg", :fit => [size, size]
14
+
15
+ text 'Using the fit option'
16
+ bounding_box([0, cursor], width: size, height: size) do
17
+ image "#{Prawn::DATADIR}/images/pigs.jpg", fit: [size, size]
19
18
  stroke_bounds
20
19
  end
21
20
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The image may be positioned relatively to the current bounding box. The
4
4
  # horizontal position may be set with the <code>:position</code> option.
5
5
  #
6
6
  # It may be <code>:left</code>, <code>:center</code>, <code>:right</code> or a
7
7
  # number representing an x-offset from the left boundary.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
- Prawn::Example.generate(filename) do
14
- bounding_box([50, cursor], :width => 400, :height => 450) do
12
+ Prawn::ManualBuilder::Example.generate(filename) do
13
+ bounding_box([50, cursor], width: 400, height: 450) do
15
14
  stroke_bounds
16
-
17
- [:left, :center, :right].each do |position|
18
- text "Image aligned to the #{position}."
19
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => position
15
+
16
+ %i[left center right].each do |position|
17
+ text "Image aligned to the #{position}."
18
+ image "#{Prawn::DATADIR}/images/stef.jpg", position: position
20
19
  end
21
-
22
- text "The next image has a 50 point offset from the left boundary"
23
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => 50
20
+
21
+ text 'The next image has a 50 point offset from the left boundary'
22
+ image "#{Prawn::DATADIR}/images/stef.jpg", position: 50
24
23
  end
25
24
  end
@@ -1,40 +1,41 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for embedding images.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
-
8
- Prawn::Example.generate("images.pdf", :page_size => "FOLIO") do
9
-
10
- package "images" do |p|
11
-
12
- p.section "Basics" do |s|
13
- s.example "plain_image"
14
- s.example "absolute_position"
4
+
5
+ require_relative '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('images.pdf', page_size: 'FOLIO') do
8
+ package 'images' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'plain_image'
11
+ s.example 'absolute_position'
15
12
  end
16
-
17
- p.section "Relative Positioning" do |s|
18
- s.example "horizontal"
19
- s.example "vertical"
13
+
14
+ p.section 'Relative Positioning' do |s|
15
+ s.example 'horizontal'
16
+ s.example 'vertical'
20
17
  end
21
-
22
- p.section "Size" do |s|
23
- s.example "width_and_height"
24
- s.example "scale"
25
- s.example "fit"
18
+
19
+ p.section 'Size' do |s|
20
+ s.example 'width_and_height'
21
+ s.example 'scale'
22
+ s.example 'fit'
26
23
  end
27
-
24
+
28
25
  p.intro do
29
- prose("Embedding images on PDF documents is fairly easy. Prawn supports both JPG and PNG images.
26
+ prose <<-TEXT
27
+ Embedding images on PDF documents is fairly easy. Prawn supports both
28
+ JPG and PNG images.
30
29
 
31
- The examples show:")
30
+ The examples show:
31
+ TEXT
32
32
 
33
- list( "How to add an image to a page",
34
- "How place the image on a specific position",
35
- "How to configure the image dimensions by setting the width and height or by scaling it"
36
- )
33
+ list(
34
+ 'How to add an image to a page',
35
+ 'How place the image on a specific position',
36
+ 'How to configure the image dimensions by setting the width and '\
37
+ 'height or by scaling it'
38
+ )
37
39
  end
38
-
39
40
  end
40
41
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To embed images onto your PDF file use the <code>image</code> method.
4
4
  # It accepts the file path of the image to be loaded and some optional
5
5
  # arguments.
@@ -7,12 +7,11 @@
7
7
  # If only the image path is provided the image will be rendered starting on
8
8
  # the cursor position. No manipulation is done with the image even if it doesn't
9
9
  # fit entirely on the page like the following snippet.
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
- Prawn::Example.generate(filename) do
16
- text "The image will go right below this line of text."
14
+ Prawn::ManualBuilder::Example.generate(filename) do
15
+ text 'The image will go right below this line of text.'
17
16
  image "#{Prawn::DATADIR}/images/pigs.jpg"
18
17
  end
@@ -1,22 +1,21 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To scale an image use the <code>:scale</code> option.
4
4
  #
5
5
  # It scales the image proportionally given the provided value.
6
- #
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
6
+
7
+ require_relative '../example_helper'
9
8
 
10
9
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
- Prawn::Example.generate(filename) do
12
- text "Normal size"
10
+ Prawn::ManualBuilder::Example.generate(filename) do
11
+ text 'Normal size'
13
12
  image "#{Prawn::DATADIR}/images/stef.jpg"
14
13
  move_down 20
15
-
16
- text "Scaled to 50%"
17
- image "#{Prawn::DATADIR}/images/stef.jpg", :scale => 0.5
14
+
15
+ text 'Scaled to 50%'
16
+ image "#{Prawn::DATADIR}/images/stef.jpg", scale: 0.5
18
17
  move_down 20
19
-
20
- text "Scaled to 200%"
21
- image "#{Prawn::DATADIR}/images/stef.jpg", :scale => 2
18
+
19
+ text 'Scaled to 200%'
20
+ image "#{Prawn::DATADIR}/images/stef.jpg", scale: 2
22
21
  end
@@ -1,28 +1,30 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To set the vertical position of an image use the <code>:vposition</code>
4
4
  # option.
5
5
  #
6
6
  # It may be <code>:top</code>, <code>:center</code>, <code>:bottom</code> or a
7
7
  # number representing the y-offset from the top boundary.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
- Prawn::Example.generate(filename) do
14
- bounding_box([0, cursor], :width => 500, :height => 450) do
12
+ Prawn::ManualBuilder::Example.generate(filename) do
13
+ bounding_box([0, cursor], width: 500, height: 450) do
15
14
  stroke_bounds
16
-
17
- [:top, :center, :bottom].each do |vposition|
18
- text "Image vertically aligned to the #{vposition}.", :valign => vposition
19
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => 250,
20
- :vposition => vposition
15
+
16
+ %i[top center bottom].each do |vposition|
17
+ text "Image vertically aligned to the #{vposition}.", valign: vposition
18
+ image "#{Prawn::DATADIR}/images/stef.jpg",
19
+ position: 250,
20
+ vposition: vposition
21
21
  end
22
-
23
- text_box "The next image has a 100 point offset from the top boundary",
24
- :at => [bounds.width - 110, bounds.top - 10], :width => 100
25
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => :right,
26
- :vposition => 100
22
+
23
+ text_box 'The next image has a 100 point offset from the top boundary',
24
+ at: [bounds.width - 110, bounds.top - 10],
25
+ width: 100
26
+ image "#{Prawn::DATADIR}/images/stef.jpg",
27
+ position: :right,
28
+ vposition: 100
27
29
  end
28
30
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The image size can be set with the <code>:width</code> and
4
4
  # <code>:height</code> options.
5
5
  #
6
6
  # If only one of those is provided, the image will be scaled proportionally.
7
7
  # When both are provided, the image will be stretched to fit the dimensions
8
8
  # without maintaining the aspect ratio.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
9
+
10
+ require_relative '../example_helper'
12
11
 
13
12
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
- Prawn::Example.generate(filename) do
15
- text "Scale by setting only the width"
16
- image "#{Prawn::DATADIR}/images/pigs.jpg", :width => 150
13
+ Prawn::ManualBuilder::Example.generate(filename) do
14
+ text 'Scale by setting only the width'
15
+ image "#{Prawn::DATADIR}/images/pigs.jpg", width: 150
17
16
  move_down 20
18
-
19
- text "Scale by setting only the height"
20
- image "#{Prawn::DATADIR}/images/pigs.jpg", :height => 100
17
+
18
+ text 'Scale by setting only the height'
19
+ image "#{Prawn::DATADIR}/images/pigs.jpg", height: 100
21
20
  move_down 20
22
-
23
- text "Stretch to fit the width and height provided"
24
- image "#{Prawn::DATADIR}/images/pigs.jpg", :width => 500, :height => 100
21
+
22
+ text 'Stretch to fit the width and height provided'
23
+ image "#{Prawn::DATADIR}/images/pigs.jpg", width: 500, height: 100
25
24
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # After defined the grid is there but nothing happens. To start taking effect
4
4
  # we need to use the grid boxes.
5
5
  #
@@ -7,21 +7,20 @@
7
7
  # received. With no arguments it will return the grid itself. With integers it
8
8
  # will return the grid box at those indices. With two arrays it will return a
9
9
  # multi-box spanning the region of the two grid boxes at the arrays indices.
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
- Prawn::Example.generate(filename) do
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
-
20
- grid(4,0).show
21
- grid(5,1).show
22
-
23
- grid([6,2], [7,3]).show
24
-
25
- grid([4,4], [7,4]).show
26
- grid([7,0], [7,1]).show
17
+ define_grid(columns: 5, rows: 8, gutter: 10)
18
+
19
+ grid(4, 0).show
20
+ grid(5, 1).show
21
+
22
+ grid([6, 2], [7, 3]).show
23
+
24
+ grid([4, 4], [7, 4]).show
25
+ grid([7, 0], [7, 1]).show
27
26
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Now that we know how to access the boxes we might as well add some content
4
4
  # to them.
5
5
  #
6
6
  # This can be done by taping into the bounding box for a given grid box or
7
7
  # multi-box with the <code>bounding_box</code> method.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
- Prawn::Example.generate(filename) do
12
+ Prawn::ManualBuilder::Example.generate(filename) do
14
13
  # The grid only need to be defined once, but since all the examples should be
15
14
  # able to run alone we are repeating it on every example
16
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
17
-
18
- grid([5,0], [7,1]).bounding_box do
19
- text "Adding some content to this multi_box.\n" + " _ " * 200
15
+ define_grid(columns: 5, rows: 8, gutter: 10)
16
+
17
+ grid([5, 0], [7, 1]).bounding_box do
18
+ text "Adding some content to this multi_box.\n#{' _ ' * 200}"
20
19
  end
21
-
22
- grid(6,3).bounding_box do
23
- text "Just a little snippet here.\n" + " _ " * 10
20
+
21
+ grid(6, 3).bounding_box do
22
+ text "Just a little snippet here.\n#{' _ ' * 10}"
24
23
  end
25
24
  end
@@ -1,28 +1,27 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for using grid layouts.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::Example.generate("layout.pdf", :page_size => "FOLIO") do
9
-
10
- package "layout" do |p|
11
-
12
- p.example "simple_grid"
13
- p.example "boxes"
14
- p.example "content"
15
-
5
+ require_relative '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('layout.pdf', page_size: 'FOLIO') do
8
+ package 'layout' do |p|
9
+ p.example 'simple_grid'
10
+ p.example 'boxes'
11
+ p.example 'content'
12
+
16
13
  p.intro do
17
- prose("Prawn has support for two-dimensional grid based layouts out of the box.
14
+ prose <<-TEXT
15
+ Prawn has support for two-dimensional grid based layouts out of the box.
18
16
 
19
- The examples show:")
17
+ The examples show:
18
+ TEXT
20
19
 
21
- list( "How to define the document grid",
22
- "How to configure the grid rows and columns gutters",
23
- "How to create boxes according to the grid"
24
- )
20
+ list(
21
+ 'How to define the document grid',
22
+ 'How to configure the grid rows and columns gutters',
23
+ 'How to create boxes according to the grid'
24
+ )
25
25
  end
26
-
27
26
  end
28
27
  end
@@ -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,17 +7,16 @@
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
- Prawn::Example.generate(filename) do
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"
20
-
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'
19
+
21
20
  start_new_page
22
21
  grid.show_all
23
22
  end