prawn 0.13.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
  # Text rendering can be as simple or as complex as you want.
4
4
  #
5
5
  # This example covers the most basic method: <code>text</code>. It is meant for
@@ -12,40 +12,39 @@
12
12
  #
13
13
  # This example also shows text flowing across pages following the margin box and
14
14
  # other bounding boxes.
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
15
+
16
+ require_relative '../example_helper'
18
17
 
19
18
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
20
- Prawn::Example.generate(filename) do
19
+ Prawn::ManualBuilder::Example.generate(filename) do
21
20
  move_cursor_to 50
22
- text "This text will flow to the next page. " * 20
23
-
21
+ text 'This text will flow to the next page. ' * 20
22
+
24
23
  y_position = cursor - 50
25
- bounding_box([0, y_position], :width => 200, :height => 150) do
24
+ bounding_box([0, y_position], width: 200, height: 150) do
26
25
  transparent(0.5) { stroke_bounds }
27
- text "This text will flow along this bounding box we created for it. " * 5
26
+ text 'This text will flow along this bounding box we created for it. ' * 5
28
27
  end
29
-
30
- bounding_box([300, y_position], :width => 200, :height => 150) do
31
- transparent(0.5) { stroke_bounds } # This will stroke on one page
32
-
33
- text "Now look what happens when the free flowing text reaches the end " +
34
- "of a bounding box that is narrower than the margin box." +
35
- " . " * 200 +
36
- "It continues on the next page as if the previous bounding box " +
37
- "was cloned. If we want it to have the same border as the one on " +
38
- "the previous page we will need to stroke the boundaries again."
39
-
40
- transparent(0.5) { stroke_bounds } # And this will stroke on the next
28
+
29
+ bounding_box([300, y_position], width: 200, height: 150) do
30
+ transparent(0.5) { stroke_bounds } # This will stroke on one page
31
+
32
+ text 'Now look what happens when the free flowing text reaches the end ' \
33
+ 'of a bounding box that is narrower than the margin box.' +
34
+ ' . ' * 200 +
35
+ 'It continues on the next page as if the previous bounding box ' \
36
+ 'was cloned. If we want it to have the same border as the one on ' \
37
+ 'the previous page we will need to stroke the boundaries again.'
38
+
39
+ transparent(0.5) { stroke_bounds } # And this will stroke on the next
41
40
  end
42
-
41
+
43
42
  move_cursor_to 200
44
- span(350, :position => :center) do
45
- text "Span is a different kind of bounding box as it lets the text " +
46
- "flow gracefully onto the next page. It doesn't matter if the text " +
47
- "started on the middle of the previous page, when it flows to the " +
48
- "next page it will start at the beginning." + " _ " * 500 +
49
- "I told you it would start on the beginning of this page."
43
+ span(350, position: :center) do
44
+ text 'Span is a different kind of bounding box as it lets the text ' \
45
+ "flow gracefully onto the next page. It doesn't matter if the text " \
46
+ 'started on the middle of the previous page, when it flows to the ' \
47
+ "next page it will start at the beginning.#{' _ ' * 500}" \
48
+ 'I told you it would start on the beginning of this page.'
50
49
  end
51
50
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Inline formatting gives you the option to format specific portions of a text.
4
4
  # It uses HTML-esque syntax inside the text string. Supported tags are:
5
5
  # <code>b</code> (bold), <code>i</code> (italic), <code>u</code> (underline),
@@ -9,35 +9,32 @@
9
9
  # The following tags accept specific attributes: <code>font</code> accepts
10
10
  # <code>size</code>, <code>name</code>, and <code>character_spacing</code>;
11
11
  # <code>color</code> accepts <code>rgb</code> and <code>cmyk</code>;
12
- # <code>link</code> accepts <code>href</code> for external links and
13
- # <code>anchor</code> for internal links.
14
- #
15
- require File.expand_path(File.join(File.dirname(__FILE__),
16
- %w[.. example_helper]))
12
+ # <code>link</code> accepts <code>href</code> for external links.
13
+
14
+ require_relative '../example_helper'
17
15
 
18
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
19
- Prawn::Example.generate(filename) do
17
+ Prawn::ManualBuilder::Example.generate(filename) do
20
18
  %w[b i u strikethrough sub sup].each do |tag|
21
- text "Just your regular text <#{tag}>except this portion</#{tag}> " +
22
- "is using the #{tag} tag",
23
- :inline_format => true
19
+ text "Just your regular text <#{tag}>except this portion</#{tag}> " \
20
+ "is using the #{tag} tag",
21
+ inline_format: true
24
22
  move_down 10
25
23
  end
26
-
27
- text "This <font size='18'>line</font> uses " +
28
- "<font name='Courier'>all the font tag</font> attributes in " +
29
- "<font character_spacing='2'>a single line</font>. ",
30
- :inline_format => true
24
+
25
+ text "This <font size='18'>line</font> uses " \
26
+ "<font name='Courier'>all the font tag</font> attributes in " \
27
+ "<font character_spacing='2'>a single line</font>. ",
28
+ inline_format: true
31
29
  move_down 10
32
-
33
- text "Coloring in <color rgb='FF00FF'>both RGB</color> " +
34
- "<color c='100' m='0' y='0' k='0'>and CMYK</color>",
35
- :inline_format => true
30
+
31
+ text "Coloring in <color rgb='FF00FF'>both RGB</color> " \
32
+ "<color c='100' m='0' y='0' k='0'>and CMYK</color>",
33
+ inline_format: true
36
34
  move_down 10
37
-
38
- text "This an external link to the " +
39
- "<u><link href='https://github.com/prawnpdf/prawn/wiki'>Prawn wiki" +
40
- "</link></u> and this is a link to the " +
41
- "<u><link anchor='Text Reference'>Text Reference</link></u> anchor",
42
- :inline_format => true
35
+
36
+ text 'This an external link to the ' \
37
+ "<u><link href='https://github.com/prawnpdf/prawn/wiki'>Prawn wiki" \
38
+ '</link></u>',
39
+ inline_format: true
43
40
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Kerning is the process of adjusting the spacing between characters in a
4
4
  # proportional font. It is usually done with specific letter pairs. We can
5
5
  # switch it on and off if it is available with the current font. Just pass a
@@ -8,32 +8,31 @@
8
8
  # Character Spacing is the space between characters. It can be increased or
9
9
  # decreased and will have effect on the whole text. Just pass a number to the
10
10
  # <code>:character_spacing</code> option from the text methods.
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
  font_size(30) do
18
- text_box "With kerning:", :kerning => true, :at => [0, y - 40]
19
- text_box "Without kerning:", :kerning => false, :at => [0, y - 80]
20
-
21
- text_box "Tomato", :kerning => true, :at => [250, y - 40]
22
- text_box "Tomato", :kerning => false, :at => [250, y - 80]
23
-
24
- text_box "WAR", :kerning => true, :at => [400, y - 40]
25
- text_box "WAR", :kerning => false, :at => [400, y - 80]
26
-
27
- text_box "F.", :kerning => true, :at => [500, y - 40]
28
- text_box "F.", :kerning => false, :at => [500, y - 80]
17
+ text_box 'With kerning:', kerning: true, at: [0, y - 40]
18
+ text_box 'Without kerning:', kerning: false, at: [0, y - 80]
19
+
20
+ text_box 'Tomato', kerning: true, at: [250, y - 40]
21
+ text_box 'Tomato', kerning: false, at: [250, y - 80]
22
+
23
+ text_box 'WAR', kerning: true, at: [400, y - 40]
24
+ text_box 'WAR', kerning: false, at: [400, y - 80]
25
+
26
+ text_box 'F.', kerning: true, at: [500, y - 40]
27
+ text_box 'F.', kerning: false, at: [500, y - 80]
29
28
  end
30
-
29
+
31
30
  move_down 80
32
-
33
- string = "What have you done to the space between the characters?"
31
+
32
+ string = 'What have you done to the space between the characters?'
34
33
  [-2, -1, 0, 0.5, 1, 2].each do |spacing|
35
34
  move_down 20
36
35
  text "#{string} (character_spacing: #{spacing})",
37
- :character_spacing => spacing
36
+ character_spacing: spacing
38
37
  end
39
38
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Leading is the additional space between lines of text.
4
4
  #
5
5
  # The leading can be set using the <code>default_leading</code> method which
@@ -7,19 +7,18 @@
7
7
  # text methods with the <code>:leading</code> option.
8
8
  #
9
9
  # The default leading is <code>0</code>.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_require '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
- Prawn::Example.generate(filename) do
16
- string = "Hey, what did you do with the space between my lines? " * 10
17
- text string, :leading => 0
18
-
14
+ Prawn::ManualBuilder::Example.generate(filename) do
15
+ string = 'Hey, what did you do with the space between my lines? ' * 10
16
+ text string, leading: 0
17
+
19
18
  move_down 20
20
19
  default_leading 5
21
20
  text string
22
-
21
+
23
22
  move_down 20
24
- text string, :leading => 10
23
+ text string, leading: 10
25
24
  end
@@ -1,41 +1,60 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Line wrapping happens on white space or hyphens. Soft hyphens can be used to
4
4
  # indicate where words can be hyphenated. Non-breaking spaces can be used to
5
5
  # display space without allowing for a break.
6
6
  #
7
7
  # For writing styles that do not make use of spaces, the zero width space serves
8
- # to mark word boundaries. Zero width spaces are available only with TTF fonts.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
8
+ # to mark word boundaries. Zero width spaces are available only with external
9
+ # fonts.
10
+
11
+ require_relative '../example_helper'
12
12
 
13
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
- Prawn::Example.generate(filename) do
15
- text "Hard hyphens:\n" +
16
- "Slip-sliding away, slip sliding awaaaay. You know the " +
17
- "nearer your destination the more you're slip-sliding away."
14
+ Prawn::ManualBuilder::Example.generate(filename) do
15
+ text "Hard hyphens:\n" \
16
+ 'Slip-sliding away, slip sliding awaaaay. You know the ' \
17
+ "nearer your destination the more you're slip-sliding away."
18
18
  move_down 20
19
19
 
20
20
  shy = Prawn::Text::SHY
21
- text "Soft hyphens:\n" +
22
- "Slip slid#{shy}ing away, slip slid#{shy}ing away. You know the " +
23
- "nearer your destinat#{shy}ion the more you're slip slid#{shy}ing away."
21
+ text "Soft hyphens:\n" \
22
+ "Slip slid#{shy}ing away, slip slid#{shy}ing away. You know the " \
23
+ "nearer your destinat#{shy}ion the more you're slip slid#{shy}ing away."
24
24
  move_down 20
25
-
25
+
26
26
  nbsp = Prawn::Text::NBSP
27
- text "Non-breaking spaces:\n" +
28
- "Slip#{nbsp}sliding away, slip#{nbsp}sliding awaaaay. You know the " +
29
- "nearer your destination the more you're slip#{nbsp}sliding away."
27
+ text "Non-breaking spaces:\n" \
28
+ "Slip#{nbsp}sliding away, slip#{nbsp}sliding awaaaay. You know the " \
29
+ "nearer your destination the more you're slip#{nbsp}sliding away."
30
30
  move_down 20
31
31
 
32
- font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", :size => 16) do
33
- long_text = "No word boundaries:\n更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。"
32
+ font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", size: 16) do
33
+ long_text = "No word boundaries:\n更可怕的是,"\
34
+ '同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,'\
35
+ '写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,'\
36
+ '这样的话,你就非常被动了。更可怕的是,'\
37
+ '同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,'\
38
+ '写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,'\
39
+ '这样的话,你就非常被动了。'
34
40
  text long_text
35
41
  move_down 20
36
-
42
+
37
43
  zwsp = Prawn::Text::ZWSP
38
- long_text = "Invisible word boundaries:\n更#{zwsp}可怕的#{zwsp}是,#{zwsp}同质化#{zwsp}竞争#{zwsp}对#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}URL#{zwsp}中#{zwsp}后面#{zwsp}这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}您的#{zwsp}DB#{zwsp}中的#{zwsp}内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把#{zwsp}你的#{zwsp}页面#{zwsp}上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺#{zwsp}次#{zwsp}爬#{zwsp}下来#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}难事,#{zwsp}这样的话,#{zwsp}你#{zwsp}就#{zwsp}非常#{zwsp}被动了。#{zwsp}更#{zwsp}可怕的#{zwsp}是,#{zwsp}同质化#{zwsp}竞争#{zwsp}对#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}URL#{zwsp}中#{zwsp}后面#{zwsp}这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}您的#{zwsp}DB#{zwsp}中的#{zwsp}内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把#{zwsp}你的#{zwsp}页面#{zwsp}上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺#{zwsp}次#{zwsp}爬#{zwsp}下来#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}难事,#{zwsp}这样的话,#{zwsp}你#{zwsp}就#{zwsp}非常#{zwsp}被动了。"
44
+ long_text = "Invisible word boundaries:\n更#{zwsp}可怕的#{zwsp}是,"\
45
+ "#{zwsp}同质化#{zwsp}竞争#{zwsp}对#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}"\
46
+ "URL#{zwsp}中#{zwsp}后面#{zwsp}这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}"\
47
+ "您的#{zwsp}DB#{zwsp}中的#{zwsp}内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把"\
48
+ "#{zwsp}你的#{zwsp}页面#{zwsp}上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺"\
49
+ "#{zwsp}次#{zwsp}爬#{zwsp}下来#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}"\
50
+ "难事,#{zwsp}这样的话,#{zwsp}你#{zwsp}就#{zwsp}非常#{zwsp}被动了。"\
51
+ "#{zwsp}更#{zwsp}可怕的#{zwsp}是,#{zwsp}同质化#{zwsp}竞争#{zwsp}对"\
52
+ "#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}URL#{zwsp}中#{zwsp}后面#{zwsp}"\
53
+ "这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}您的#{zwsp}DB#{zwsp}中的#{zwsp}"\
54
+ "内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把#{zwsp}你的#{zwsp}页面#{zwsp}"\
55
+ "上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺#{zwsp}次#{zwsp}爬#{zwsp}下来"\
56
+ "#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}难事,#{zwsp}这样的话,#{zwsp}你"\
57
+ "#{zwsp}就#{zwsp}非常#{zwsp}被动了。"
39
58
  text long_text
40
59
  end
41
60
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn strips all whitespace from the beginning and the end of strings so there
4
4
  # are two ways to indent paragraphs:
5
5
  #
@@ -9,18 +9,23 @@
9
9
  # The other is to use the <code>:indent_paragraphs</code> option with the text
10
10
  # methods. Just pass a number with the space to indent the first line in each
11
11
  # paragraph.
12
- #
13
- require File.expand_path(File.join(File.dirname(__FILE__),
14
- %w[.. example_helper]))
12
+
13
+ require_relative '../example_helper'
15
14
 
16
15
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
17
- Prawn::Example.generate(filename) do
16
+ Prawn::ManualBuilder::Example.generate(filename) do
18
17
  # Using non-breaking spaces
19
- text " " * 10 + "This paragraph won't be indented. " * 10 +
20
- "\n#{Prawn::Text::NBSP * 10}" + "This one will with NBSP. " * 10
21
-
18
+ text ' ' * 10 + "This paragraph won't be indented. " * 10 +
19
+ "\n#{Prawn::Text::NBSP * 10}" + 'This one will with NBSP. ' * 10
20
+
22
21
  move_down 20
23
- text "This paragraph will be indented. " * 10 +
24
- "\n" + "This one will too. " * 10,
25
- :indent_paragraphs => 60
22
+ text "#{'This paragraph will be indented. ' * 10}\n#{'This one will too. ' * 10}",
23
+ indent_paragraphs: 60
24
+
25
+ move_down 20
26
+
27
+ text 'FROM RIGHT TO LEFT:'
28
+ text "#{'This paragraph will be indented. ' * 10}\n#{'This one will too. ' * 10}",
29
+ indent_paragraphs: 60,
30
+ direction: :rtl
26
31
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Sometimes we want the text on a specific position on the page. The
4
4
  # <code>text</code> method just won't help us.
5
5
  #
@@ -15,24 +15,23 @@
15
15
  # accordingly. Even if you don't provide a <code>:width</code> option the text
16
16
  # will flow to a new line if it reaches the right border.
17
17
  #
18
- # Given that said, <code>text_box</code> is the better option available.
19
- #
20
- require File.expand_path(File.join(File.dirname(__FILE__),
21
- %w[.. example_helper]))
18
+ # Given that, <code>text_box</code> is the better option available.
19
+
20
+ require_relative '../example_helper'
22
21
 
23
22
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
24
- Prawn::Example.generate(filename) do
25
- draw_text "This draw_text line is absolute positioned. However don't " +
26
- "expect it to flow even if it hits the document border",
27
- :at => [200, 300]
28
-
29
- text_box "This is a text box, you can control where it will flow by " +
30
- "specifying the :height and :width options",
31
- :at => [100, 250],
32
- :height => 100,
33
- :width => 100
34
-
35
- text_box "Another text box with no :width option passed, so it will " +
36
- "flow to a new line whenever it reaches the right margin. ",
37
- :at => [200, 100]
23
+ Prawn::ManualBuilder::Example.generate(filename) do
24
+ draw_text "This draw_text line is absolute positioned. However don't " \
25
+ 'expect it to flow even if it hits the document border',
26
+ at: [200, 300]
27
+
28
+ text_box 'This is a text box, you can control where it will flow by ' \
29
+ 'specifying the :height and :width options',
30
+ at: [100, 250],
31
+ height: 100,
32
+ width: 100
33
+
34
+ text_box 'Another text box with no :width option passed, so it will ' \
35
+ 'flow to a new line whenever it reaches the right margin. ',
36
+ at: [200, 100]
38
37
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Registering font families will help you when you want to use a font over and
4
4
  # over or if you would like to take advantage of the <code>:style</code> option
5
5
  # of the text methods and the <code>b</code> and <code>i</code> tags when using
@@ -7,42 +7,45 @@
7
7
  #
8
8
  # To register a font family update the <code>font_families</code>
9
9
  # hash with the font path for each style you want to use.
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
- # Registering a single TTF font
17
- font_families.update("Chalkboard" => {
18
- :normal => "#{Prawn::DATADIR}/fonts/Chalkboard.ttf"
19
- })
20
-
21
- font("Chalkboard") do
22
- text "Using the Chalkboard font providing only its name to the font method"
14
+ Prawn::ManualBuilder::Example.generate(filename) do
15
+ # Registering a single external font
16
+ font_families.update(
17
+ 'DejaVu Sans' => {
18
+ normal: "#{Prawn::DATADIR}/fonts/DejaVuSans.ttf"
19
+ }
20
+ )
21
+
22
+ font('DejaVu Sans') do
23
+ text 'Using the DejaVu Sans font providing only its name to the font method'
23
24
  end
24
25
  move_down 20
25
-
26
+
26
27
  # Registering a DFONT package
27
- font_path = "#{Prawn::DATADIR}/fonts/Action Man.dfont"
28
- font_families.update("Action Man" => {
29
- :normal => { :file => font_path, :font => "ActionMan" },
30
- :italic => { :file => font_path, :font => "ActionMan-Italic" },
31
- :bold => { :file => font_path, :font => "ActionMan-Bold" },
32
- :bold_italic => { :file => font_path, :font => "ActionMan-BoldItalic" }
33
- })
34
-
35
- font "Action Man"
36
- text "Also using the Action Man by providing only its name"
28
+ font_path = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
29
+ font_families.update(
30
+ 'Panic Sans' => {
31
+ normal: { file: font_path, font: 'PanicSans' },
32
+ italic: { file: font_path, font: 'PanicSans-Italic' },
33
+ bold: { file: font_path, font: 'PanicSans-Bold' },
34
+ bold_italic: { file: font_path, font: 'PanicSans-BoldItalic' }
35
+ }
36
+ )
37
+
38
+ font 'Panic Sans'
39
+ text 'Also using Panic Sans by providing only its name'
37
40
  move_down 20
38
-
39
- text "Taking <b>advantage</b> of the <i>inline formatting</i>",
40
- :inline_format => true
41
+
42
+ text 'Taking <b>advantage</b> of the <i>inline formatting</i>',
43
+ inline_format: true
41
44
  move_down 20
42
-
43
- [:bold, :bold_italic, :italic, :normal].each do |style|
45
+
46
+ %i[bold bold_italic italic normal].each do |style|
44
47
  text "Using the #{style} style option.",
45
- :style => style
48
+ style: style
46
49
  move_down 10
47
50
  end
48
51
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # You have already seen how to set the text color using both inline formatting
4
4
  # and the format text methods. There is another way by using the graphics
5
5
  # methods <code>fill_color</code> and <code>stroke_color</code>.
@@ -11,27 +11,26 @@
11
11
  # being filled (the default mode) or just stroked or both filled and stroked.
12
12
  # This can be set using the <code>text_rendering_mode</code> method or the
13
13
  # <code>:mode</code> option on the text methods.
14
- #
15
- require File.expand_path(File.join(File.dirname(__FILE__),
16
- %w[.. example_helper]))
14
+
15
+ require_relative '../example_helper'
17
16
 
18
17
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
19
- Prawn::Example.generate(filename) do
20
- fill_color "00ff00"
21
- stroke_color "0000ff"
22
-
18
+ Prawn::ManualBuilder::Example.generate(filename) do
19
+ fill_color '00ff00'
20
+ stroke_color '0000ff'
21
+
23
22
  font_size(40) do
24
23
  # normal rendering mode: fill
25
- text "This text is filled with green."
24
+ text 'This text is filled with green.'
26
25
  move_down 20
27
26
 
28
27
  # inline rendering mode: stroke
29
- text "This text is stroked with blue", :mode => :stroke
28
+ text 'This text is stroked with blue', mode: :stroke
30
29
  move_down 20
31
30
 
32
31
  # block rendering mode: fill and stroke
33
32
  text_rendering_mode(:fill_stroke) do
34
- text "This text is filled with green and stroked with blue"
33
+ text 'This text is filled with green and stroked with blue'
35
34
  end
36
35
  end
37
36
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn can be used with right-to-left text. The direction can be set
4
4
  # document-wide, on particular text, or on a text-box. Setting the direction to
5
5
  # <code>:rtl</code> automatically changes the default alignment to
@@ -9,35 +9,46 @@
9
9
  # that two fragments going against the main direction cannot be placed next to
10
10
  # each other without appearing in the wrong order.
11
11
  #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
12
+ # Writing bidirectional text that combines both left-to-right and right-to-left
13
+ # languages is easy using the <code>bidi</code> Ruby Gem and its
14
+ # <code>render_visual</code> function. See https://github.com/elad/ruby-bidi for
15
+ # instructions and an example using Prawn.
16
+
17
+ require_relative '../example_helper'
14
18
 
15
19
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
- Prawn::Example.generate(filename) do
20
+ Prawn::ManualBuilder::Example.generate(filename) do
17
21
  # set the direction document-wide
18
22
  self.text_direction = :rtl
19
23
 
20
- font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", :size => 16) do
21
- long_text = "写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小"
24
+ font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", size: 16) do
25
+ long_text = '写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个'\
26
+ '小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页'\
27
+ '面上的关键信息顺次爬下来也不是什么难事写个小'
22
28
  text long_text
23
29
  move_down 20
24
30
 
25
- text "You can override the document direction.", :direction => :ltr
31
+ text 'You can override the document direction.', direction: :ltr
26
32
  move_down 20
27
33
 
28
- formatted_text [{ :text => "更可怕的是,同质化竞争对手可以按照" },
29
- { :text => "URL", :direction => :ltr },
30
- { :text => "中后面这个" },
31
- { :text => "ID", :direction => :ltr },
32
- { :text => "来遍历您的" },
33
- { :text => "DB", :direction => :ltr },
34
- { :text => "中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。" }]
34
+ formatted_text([
35
+ { text: '更可怕的是,同质化竞争对手可以按照' },
36
+ { text: 'URL', direction: :ltr },
37
+ { text: '中后面这个' },
38
+ { text: 'ID', direction: :ltr },
39
+ { text: '来遍历您的' },
40
+ { text: 'DB', direction: :ltr },
41
+ { text: '中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么'\
42
+ '难事,这样的话,你就非常被动了。' }
43
+ ])
35
44
  move_down 20
36
45
 
37
- formatted_text [{ :text => "更可怕的是,同质化竞争对手可以按照" },
38
- { :text => "this", :direction => :ltr },
39
- { :text => "won't", :direction => :ltr, :size => 24 },
40
- { :text => "work", :direction => :ltr },
41
- { :text => "中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事" }]
46
+ formatted_text([
47
+ { text: '更可怕的是,同质化竞争对手可以按照' },
48
+ { text: 'this', direction: :ltr },
49
+ { text: "won't", direction: :ltr, size: 24 },
50
+ { text: 'work', direction: :ltr },
51
+ { text: '中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事' }
52
+ ])
42
53
  end
43
54
  end