prawn 2.1.0 → 2.3.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 (280) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +20 -23
  7. data/lib/prawn.rb +36 -49
  8. data/lib/prawn/document.rb +180 -133
  9. data/lib/prawn/document/bounding_box.rb +41 -29
  10. data/lib/prawn/document/column_box.rb +7 -7
  11. data/lib/prawn/document/internals.rb +8 -6
  12. data/lib/prawn/document/span.rb +21 -16
  13. data/lib/prawn/encoding.rb +69 -68
  14. data/lib/prawn/errors.rb +12 -7
  15. data/lib/prawn/font.rb +102 -69
  16. data/lib/prawn/font_metric_cache.rb +14 -8
  17. data/lib/prawn/{font → fonts}/afm.rb +102 -68
  18. data/lib/prawn/{font → fonts}/dfont.rb +5 -11
  19. data/lib/prawn/fonts/otf.rb +11 -0
  20. data/lib/prawn/fonts/ttc.rb +36 -0
  21. data/lib/prawn/{font → fonts}/ttf.rb +87 -68
  22. data/lib/prawn/graphics.rb +119 -81
  23. data/lib/prawn/graphics/blend_mode.rb +9 -8
  24. data/lib/prawn/graphics/cap_style.rb +3 -3
  25. data/lib/prawn/graphics/color.rb +27 -25
  26. data/lib/prawn/graphics/dash.rb +23 -11
  27. data/lib/prawn/graphics/join_style.rb +9 -3
  28. data/lib/prawn/graphics/patterns.rb +190 -96
  29. data/lib/prawn/graphics/transformation.rb +15 -9
  30. data/lib/prawn/graphics/transparency.rb +17 -13
  31. data/lib/prawn/grid.rb +48 -47
  32. data/lib/prawn/image_handler.rb +5 -5
  33. data/lib/prawn/images.rb +39 -30
  34. data/lib/prawn/images/image.rb +2 -1
  35. data/lib/prawn/images/jpg.rb +28 -22
  36. data/lib/prawn/images/png.rb +65 -62
  37. data/lib/prawn/measurement_extensions.rb +10 -9
  38. data/lib/prawn/measurements.rb +19 -15
  39. data/lib/prawn/outline.rb +97 -77
  40. data/lib/prawn/repeater.rb +14 -10
  41. data/lib/prawn/security.rb +81 -61
  42. data/lib/prawn/security/arcfour.rb +2 -2
  43. data/lib/prawn/soft_mask.rb +26 -26
  44. data/lib/prawn/stamp.rb +20 -13
  45. data/lib/prawn/text.rb +68 -52
  46. data/lib/prawn/text/box.rb +11 -8
  47. data/lib/prawn/text/formatted.rb +5 -5
  48. data/lib/prawn/text/formatted/arranger.rb +53 -32
  49. data/lib/prawn/text/formatted/box.rb +134 -100
  50. data/lib/prawn/text/formatted/fragment.rb +11 -14
  51. data/lib/prawn/text/formatted/line_wrap.rb +122 -63
  52. data/lib/prawn/text/formatted/parser.rb +139 -117
  53. data/lib/prawn/text/formatted/wrap.rb +43 -31
  54. data/lib/prawn/transformation_stack.rb +7 -5
  55. data/lib/prawn/utilities.rb +7 -22
  56. data/lib/prawn/version.rb +2 -2
  57. data/lib/prawn/view.rb +17 -7
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +31 -22
  60. data/manual/basic_concepts/creation.rb +10 -11
  61. data/manual/basic_concepts/cursor.rb +4 -5
  62. data/manual/basic_concepts/measurement.rb +6 -7
  63. data/manual/basic_concepts/origin.rb +5 -6
  64. data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
  65. data/manual/basic_concepts/view.rb +22 -16
  66. data/manual/bounding_box/bounding_box.rb +29 -24
  67. data/manual/bounding_box/bounds.rb +11 -12
  68. data/manual/bounding_box/canvas.rb +4 -5
  69. data/manual/bounding_box/creation.rb +6 -7
  70. data/manual/bounding_box/indentation.rb +14 -15
  71. data/manual/bounding_box/nesting.rb +24 -17
  72. data/manual/bounding_box/russian_boxes.rb +14 -13
  73. data/manual/bounding_box/stretchy.rb +12 -13
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -28
  76. data/manual/document_and_page_options/background.rb +11 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +25 -20
  78. data/manual/document_and_page_options/metadata.rb +18 -16
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -12
  81. data/manual/document_and_page_options/print_scaling.rb +17 -15
  82. data/manual/example_helper.rb +5 -4
  83. data/manual/graphics/blend_mode.rb +12 -9
  84. data/manual/graphics/circle_and_ellipse.rb +4 -5
  85. data/manual/graphics/color.rb +7 -9
  86. data/manual/graphics/common_lines.rb +7 -8
  87. data/manual/graphics/fill_and_stroke.rb +4 -5
  88. data/manual/graphics/fill_rules.rb +9 -10
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +48 -40
  91. data/manual/graphics/helper.rb +12 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +7 -8
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -7
  97. data/manual/graphics/scale.rb +14 -15
  98. data/manual/graphics/soft_masks.rb +3 -4
  99. data/manual/graphics/stroke_cap.rb +6 -7
  100. data/manual/graphics/stroke_dash.rb +11 -12
  101. data/manual/graphics/stroke_join.rb +5 -6
  102. data/manual/graphics/translate.rb +9 -10
  103. data/manual/graphics/transparency.rb +7 -8
  104. data/manual/how_to_read_this_manual.rb +6 -6
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +9 -10
  108. data/manual/images/images.rb +28 -24
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +13 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +5 -6
  114. data/manual/layout/content.rb +7 -8
  115. data/manual/layout/layout.rb +18 -16
  116. data/manual/layout/simple_grid.rb +6 -7
  117. data/manual/outline/add_subsection_to.rb +20 -21
  118. data/manual/outline/insert_section_after.rb +15 -16
  119. data/manual/outline/outline.rb +21 -17
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +21 -17
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +25 -19
  124. data/manual/repeatable_content/repeater.rb +14 -15
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +9 -10
  127. data/manual/security/permissions.rb +19 -14
  128. data/manual/security/security.rb +19 -16
  129. data/manual/table.rb +3 -3
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -11
  132. data/manual/text/column_box.rb +9 -10
  133. data/manual/text/fallback_fonts.rb +25 -21
  134. data/manual/text/font.rb +11 -12
  135. data/manual/text/font_size.rb +13 -14
  136. data/manual/text/font_style.rb +7 -8
  137. data/manual/text/formatted_callbacks.rb +25 -21
  138. data/manual/text/formatted_text.rb +33 -25
  139. data/manual/text/free_flowing_text.rb +20 -21
  140. data/manual/text/inline.rb +18 -19
  141. data/manual/text/kerning_and_character_spacing.rb +14 -15
  142. data/manual/text/leading.rb +7 -8
  143. data/manual/text/line_wrapping.rb +37 -18
  144. data/manual/text/paragraph_indentation.rb +13 -14
  145. data/manual/text/positioned_text.rb +15 -16
  146. data/manual/text/registering_families.rb +20 -21
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +26 -19
  149. data/manual/text/rotation.rb +28 -23
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +57 -52
  152. data/manual/text/text_box_excess.rb +20 -17
  153. data/manual/text/text_box_extensions.rb +18 -15
  154. data/manual/text/text_box_overflow.rb +18 -19
  155. data/manual/text/utf8.rb +11 -12
  156. data/manual/text/win_ansi_charset.rb +21 -19
  157. data/prawn.gemspec +44 -31
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +546 -0
  160. data/spec/prawn/document/column_box_spec.rb +75 -0
  161. data/spec/prawn/document/security_spec.rb +176 -0
  162. data/spec/prawn/document_annotations_spec.rb +76 -0
  163. data/spec/prawn/document_destinations_spec.rb +15 -0
  164. data/spec/prawn/document_grid_spec.rb +99 -0
  165. data/spec/prawn/document_reference_spec.rb +27 -0
  166. data/spec/prawn/document_span_spec.rb +36 -0
  167. data/spec/prawn/document_spec.rb +802 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +542 -0
  170. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  171. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  172. data/spec/prawn/graphics_spec.rb +837 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/{image_handler_spec.rb → prawn/image_handler_spec.rb} +14 -14
  175. data/spec/prawn/images/jpg_spec.rb +20 -0
  176. data/spec/prawn/images/png_spec.rb +283 -0
  177. data/spec/prawn/images_spec.rb +224 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +412 -0
  180. data/spec/prawn/repeater_spec.rb +165 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +172 -0
  183. data/spec/prawn/text/box_spec.rb +1112 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +846 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +494 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +149 -0
  190. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  191. data/spec/prawn/text_spacing_spec.rb +95 -0
  192. data/spec/prawn/text_spec.rb +603 -0
  193. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  194. data/spec/{transformation_stack_spec.rb → prawn/transformation_stack_spec.rb} +22 -19
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +18 -19
  198. metadata +144 -180
  199. metadata.gz.sig +4 -0
  200. data/data/images/16bit.alpha +0 -0
  201. data/data/images/16bit.color +0 -0
  202. data/data/images/16bit.png +0 -0
  203. data/data/images/arrow.png +0 -0
  204. data/data/images/arrow2.png +0 -0
  205. data/data/images/blend_modes_bottom_layer.jpg +0 -0
  206. data/data/images/blend_modes_top_layer.jpg +0 -0
  207. data/data/images/dice.alpha +0 -0
  208. data/data/images/dice.color +0 -0
  209. data/data/images/dice.png +0 -0
  210. data/data/images/dice_interlaced.png +0 -0
  211. data/data/images/fractal.jpg +0 -0
  212. data/data/images/indexed_color.dat +0 -0
  213. data/data/images/indexed_color.png +0 -0
  214. data/data/images/indexed_transparency.png +0 -0
  215. data/data/images/indexed_transparency_alpha.dat +0 -0
  216. data/data/images/indexed_transparency_color.dat +0 -0
  217. data/data/images/letterhead.jpg +0 -0
  218. data/data/images/license.md +0 -8
  219. data/data/images/page_white_text.alpha +0 -0
  220. data/data/images/page_white_text.color +0 -0
  221. data/data/images/page_white_text.png +0 -0
  222. data/data/images/pigs.jpg +0 -0
  223. data/data/images/prawn.png +0 -0
  224. data/data/images/ruport.png +0 -0
  225. data/data/images/ruport_data.dat +0 -0
  226. data/data/images/ruport_transparent.png +0 -0
  227. data/data/images/ruport_type0.png +0 -0
  228. data/data/images/stef.jpg +0 -0
  229. data/data/images/tru256.bmp +0 -0
  230. data/data/images/web-links.dat +0 -1
  231. data/data/images/web-links.png +0 -0
  232. data/data/pdfs/complex_template.pdf +0 -0
  233. data/data/pdfs/contains_ttf_font.pdf +0 -0
  234. data/data/pdfs/encrypted.pdf +0 -0
  235. data/data/pdfs/form.pdf +1 -819
  236. data/data/pdfs/hexagon.pdf +0 -61
  237. data/data/pdfs/indirect_reference.pdf +0 -86
  238. data/data/pdfs/multipage_template.pdf +0 -127
  239. data/data/pdfs/nested_pages.pdf +0 -118
  240. data/data/pdfs/page_without_mediabox.pdf +0 -193
  241. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  242. data/data/pdfs/two_hexagons.pdf +0 -90
  243. data/data/pdfs/version_1_6.pdf +0 -61
  244. data/data/shift_jis_text.txt +0 -1
  245. data/spec/acceptance/png_spec.rb +0 -35
  246. data/spec/annotations_spec.rb +0 -67
  247. data/spec/blend_mode_spec.rb +0 -71
  248. data/spec/bounding_box_spec.rb +0 -501
  249. data/spec/column_box_spec.rb +0 -59
  250. data/spec/destinations_spec.rb +0 -13
  251. data/spec/document_spec.rb +0 -738
  252. data/spec/font_metric_cache_spec.rb +0 -52
  253. data/spec/font_spec.rb +0 -475
  254. data/spec/formatted_text_arranger_spec.rb +0 -452
  255. data/spec/formatted_text_box_spec.rb +0 -716
  256. data/spec/formatted_text_fragment_spec.rb +0 -299
  257. data/spec/graphics_spec.rb +0 -705
  258. data/spec/grid_spec.rb +0 -95
  259. data/spec/images_spec.rb +0 -167
  260. data/spec/inline_formatted_text_parser_spec.rb +0 -568
  261. data/spec/jpg_spec.rb +0 -23
  262. data/spec/line_wrap_spec.rb +0 -366
  263. data/spec/measurement_units_spec.rb +0 -22
  264. data/spec/outline_spec.rb +0 -409
  265. data/spec/png_spec.rb +0 -257
  266. data/spec/reference_spec.rb +0 -25
  267. data/spec/repeater_spec.rb +0 -154
  268. data/spec/security_spec.rb +0 -151
  269. data/spec/soft_mask_spec.rb +0 -78
  270. data/spec/span_spec.rb +0 -43
  271. data/spec/stamp_spec.rb +0 -179
  272. data/spec/stroke_styles_spec.rb +0 -208
  273. data/spec/text_at_spec.rb +0 -142
  274. data/spec/text_box_spec.rb +0 -1042
  275. data/spec/text_rendering_mode_spec.rb +0 -45
  276. data/spec/text_spacing_spec.rb +0 -93
  277. data/spec/text_spec.rb +0 -543
  278. data/spec/text_with_inline_formatting_spec.rb +0 -35
  279. data/spec/transparency_spec.rb +0 -91
  280. data/spec/view_spec.rb +0 -42
@@ -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,46 +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
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
- # Registering a single TTF font
15
+ # Registering a single external font
17
16
  font_families.update(
18
- "DejaVu Sans" => {
19
- :normal => "#{Prawn::DATADIR}/fonts/DejaVuSans.ttf"
17
+ 'DejaVu Sans' => {
18
+ normal: "#{Prawn::DATADIR}/fonts/DejaVuSans.ttf"
20
19
  }
21
20
  )
22
21
 
23
- font("DejaVu Sans") do
24
- text "Using the DejaVu Sans font providing only its name to the font method"
22
+ font('DejaVu Sans') do
23
+ text 'Using the DejaVu Sans font providing only its name to the font method'
25
24
  end
26
25
  move_down 20
27
26
 
28
27
  # Registering a DFONT package
29
28
  font_path = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
30
29
  font_families.update(
31
- "Panic Sans" => {
32
- :normal => { :file => font_path, :font => "PanicSans" },
33
- :italic => { :file => font_path, :font => "PanicSans-Italic" },
34
- :bold => { :file => font_path, :font => "PanicSans-Bold" },
35
- :bold_italic => { :file => font_path, :font => "PanicSans-BoldItalic" }
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' }
36
35
  }
37
36
  )
38
37
 
39
- font "Panic Sans"
40
- text "Also using Panic Sans by providing only its name"
38
+ font 'Panic Sans'
39
+ text 'Also using Panic Sans by providing only its name'
41
40
  move_down 20
42
41
 
43
- text "Taking <b>advantage</b> of the <i>inline formatting</i>",
44
- :inline_format => true
42
+ text 'Taking <b>advantage</b> of the <i>inline formatting</i>',
43
+ inline_format: true
45
44
  move_down 20
46
45
 
47
- [:bold, :bold_italic, :italic, :normal].each do |style|
46
+ %i[bold bold_italic italic normal].each do |style|
48
47
  text "Using the #{style} style option.",
49
- :style => style
48
+ style: style
50
49
  move_down 10
51
50
  end
52
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
18
  Prawn::ManualBuilder::Example.generate(filename) do
20
- fill_color "00ff00"
21
- stroke_color "0000ff"
19
+ fill_color '00ff00'
20
+ stroke_color '0000ff'
22
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
@@ -13,35 +13,42 @@
13
13
  # languages is easy using the <code>bidi</code> Ruby Gem and its
14
14
  # <code>render_visual</code> function. See https://github.com/elad/ruby-bidi for
15
15
  # instructions and an example using Prawn.
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
16
+
17
+ require_relative '../example_helper'
18
18
 
19
19
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
20
20
  Prawn::ManualBuilder::Example.generate(filename) do
21
21
  # set the direction document-wide
22
22
  self.text_direction = :rtl
23
23
 
24
- font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", :size => 16) do
25
- long_text = "写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小"
24
+ font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", size: 16) do
25
+ long_text = '写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个'\
26
+ '小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页'\
27
+ '面上的关键信息顺次爬下来也不是什么难事写个小'
26
28
  text long_text
27
29
  move_down 20
28
30
 
29
- text "You can override the document direction.", :direction => :ltr
31
+ text 'You can override the document direction.', direction: :ltr
30
32
  move_down 20
31
33
 
32
- formatted_text [{ :text => "更可怕的是,同质化竞争对手可以按照" },
33
- { :text => "URL", :direction => :ltr },
34
- { :text => "中后面这个" },
35
- { :text => "ID", :direction => :ltr },
36
- { :text => "来遍历您的" },
37
- { :text => "DB", :direction => :ltr },
38
- { :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
+ ]
39
44
  move_down 20
40
45
 
41
- formatted_text [{ :text => "更可怕的是,同质化竞争对手可以按照" },
42
- { :text => "this", :direction => :ltr },
43
- { :text => "won't", :direction => :ltr, :size => 24 },
44
- { :text => "work", :direction => :ltr },
45
- { :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
+ ]
46
53
  end
47
54
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Rotating text is best avoided on free flowing text, so this example
4
4
  # will only use the <code>text_box</code> method as we can have much more
5
5
  # control over its output.
@@ -7,36 +7,41 @@
7
7
  # To rotate text all we need to do is use the <code>:rotate</code> option
8
8
  # passing an angle in degrees and an optional <code>:rotate_around</code> to
9
9
  # indicate the origin of the rotation (the default is <code>:upper_left</code>).
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
- width = 100
15
+ width = 100
17
16
  height = 60
18
- angle = 30
19
- x = 200
20
- y = cursor - 30
17
+ angle = 30
18
+ x = 200
19
+ y = cursor - 30
21
20
 
22
21
  stroke_rectangle [0, y], width, height
23
- text_box("This text was not rotated",
24
- :at => [0, y], :width => width, :height => height)
22
+ text_box(
23
+ 'This text was not rotated',
24
+ at: [0, y], width: width, height: height
25
+ )
25
26
 
26
27
  stroke_rectangle [0, y - 100], width, height
27
- text_box("This text was rotated around the center",
28
- :at => [0, y - 100], :width => width, :height => height,
29
- :rotate => angle, :rotate_around => :center)
28
+ text_box(
29
+ 'This text was rotated around the center',
30
+ at: [0, y - 100], width: width, height: height,
31
+ rotate: angle, rotate_around: :center
32
+ )
30
33
 
31
- [:lower_left, :upper_left,
32
- :lower_right, :upper_right].each_with_index do |corner, index|
33
- y = y - 100 if index == 2
34
+ %i[lower_left upper_left lower_right upper_right]
35
+ .each_with_index do |corner, index|
36
+ y -= 100 if index == 2
34
37
  stroke_rectangle [x + (index % 2) * 200, y], width, height
35
- text_box("This text was rotated around the #{corner} corner.",
36
- :at => [x + (index % 2) * 200, y],
37
- :width => width,
38
- :height => height,
39
- :rotate => angle,
40
- :rotate_around => corner)
38
+ text_box(
39
+ "This text was rotated around the #{corner} corner.",
40
+ at: [x + (index % 2) * 200, y],
41
+ width: width,
42
+ height: height,
43
+ rotate: angle,
44
+ rotate_around: corner
45
+ )
41
46
  end
42
47
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The PDF format has some built-in font support. If you want to use other fonts
4
4
  # in Prawn you need to embed the font file.
5
5
  #
@@ -12,26 +12,25 @@
12
12
  # times, providing the path each time it is used becomes cumbersome. The example
13
13
  # on the next page shows a better way to deal with fonts which are used several
14
14
  # times in a document.
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
19
  Prawn::ManualBuilder::Example.generate(filename) do
21
20
  # Using a TTF font file
22
21
  font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf") do
23
- text "Written with the DejaVu Sans TTF font."
22
+ text 'Written with the DejaVu Sans TTF font.'
24
23
  end
25
24
  move_down 20
26
25
 
27
- text "Written with the default font."
26
+ text 'Written with the default font.'
28
27
  move_down 20
29
28
 
30
29
  # Using an DFONT font file
31
30
  font("#{Prawn::DATADIR}/fonts/Panic+Sans.dfont") do
32
- text "Written with the Panic Sans DFONT font"
31
+ text 'Written with the Panic Sans DFONT font'
33
32
  end
34
33
  move_down 20
35
34
 
36
- text "Written with the default font once more."
35
+ text 'Written with the default font once more.'
37
36
  end
@@ -1,70 +1,75 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for text rendering.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("text.pdf", :page_size => "FOLIO") do
9
- package "text" do |p|
10
- p.section "Basics" do |s|
11
- s.example "free_flowing_text"
12
- s.example "positioned_text"
13
- s.example "text_box_overflow"
14
- s.example "text_box_excess"
15
- s.example "column_box"
5
+ require '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('text.pdf', page_size: 'FOLIO') do
8
+ package 'text' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'free_flowing_text'
11
+ s.example 'positioned_text'
12
+ s.example 'text_box_overflow'
13
+ s.example 'text_box_excess'
14
+ s.example 'column_box'
16
15
  end
17
16
 
18
- p.section "Styling" do |s|
19
- s.example "font"
20
- s.example "font_size"
21
- s.example "font_style"
22
- s.example "color"
23
- s.example "alignment"
24
- s.example "leading"
25
- s.example "kerning_and_character_spacing"
26
- s.example "paragraph_indentation"
27
- s.example "rotation"
17
+ p.section 'Styling' do |s|
18
+ s.example 'font'
19
+ s.example 'font_size'
20
+ s.example 'font_style'
21
+ s.example 'color'
22
+ s.example 'alignment'
23
+ s.example 'leading'
24
+ s.example 'kerning_and_character_spacing'
25
+ s.example 'paragraph_indentation'
26
+ s.example 'rotation'
28
27
  end
29
28
 
30
- p.section "Advanced Styling" do |s|
31
- s.example "inline"
32
- s.example "formatted_text"
33
- s.example "formatted_callbacks"
34
- s.example "rendering_and_color"
35
- s.example "text_box_extensions"
29
+ p.section 'Advanced Styling' do |s|
30
+ s.example 'inline'
31
+ s.example 'formatted_text'
32
+ s.example 'formatted_callbacks'
33
+ s.example 'rendering_and_color'
34
+ s.example 'text_box_extensions'
36
35
  end
37
36
 
38
- p.section "External Fonts" do |s|
39
- s.example "single_usage"
40
- s.example "registering_families"
37
+ p.section 'External Fonts' do |s|
38
+ s.example 'single_usage'
39
+ s.example 'registering_families'
41
40
  end
42
41
 
43
- p.section "Multilingualization" do |s|
44
- s.example "utf8"
45
- s.example "line_wrapping"
46
- s.example "right_to_left_text"
47
- s.example "fallback_fonts"
48
- s.example "win_ansi_charset"
42
+ p.section 'Multilingualization' do |s|
43
+ s.example 'utf8'
44
+ s.example 'line_wrapping'
45
+ s.example 'right_to_left_text'
46
+ s.example 'fallback_fonts'
47
+ s.example 'win_ansi_charset'
49
48
  end
50
49
 
51
50
  p.intro do
52
- prose("This is probably the feature people will use the most. There is no shortage of options when it comes to text. You'll be hard pressed to find a use case that is not covered by one of the text methods and configurable options.
51
+ prose <<-TEXT
52
+ This is probably the feature people will use the most. There is no
53
+ shortage of options when it comes to text. You'll be hard pressed to
54
+ find a use case that is not covered by one of the text methods and
55
+ configurable options.
53
56
 
54
- The examples show:")
57
+ The examples show:
58
+ TEXT
55
59
 
56
- list( "Text that flows from page to page automatically starting new pages when necessary",
57
- "How to use text boxes and place them on specific positions",
58
- "What to do when a text box is too small to fit its content",
59
- "Flowing text in columns",
60
- "How to change the text style configuring font, size, alignment and many other settings",
61
- "How to style specific portions of a text with inline styling and formatted text",
62
- "How to define formatted callbacks to reuse common styling definitions",
63
- "How to use the different rendering modes available for the text methods",
64
- "How to create your custom text box extensions",
65
- "How to use external fonts on your pdfs",
66
- "What happens when rendering text in different languages"
67
- )
60
+ list(
61
+ 'Text that flows from page to page automatically starting new pages when necessary',
62
+ 'How to use text boxes and place them on specific positions',
63
+ 'What to do when a text box is too small to fit its content',
64
+ 'Flowing text in columns',
65
+ 'How to change the text style configuring font, size, alignment and many other settings',
66
+ 'How to style specific portions of a text with inline styling and formatted text',
67
+ 'How to define formatted callbacks to reuse common styling definitions',
68
+ 'How to use the different rendering modes available for the text methods',
69
+ 'How to create your custom text box extensions',
70
+ 'How to use external fonts on your pdfs',
71
+ 'What happens when rendering text in different languages'
72
+ )
68
73
  end
69
74
  end
70
75
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Whenever the <code>text_box</code> method truncates text, this truncated bit
4
4
  # is not lost, it is the method return value and we can take advantage of that.
5
5
  #
@@ -8,25 +8,28 @@
8
8
  # This example renders as much of the text as will fit in a larger font inside
9
9
  # one text_box and then proceeds to render the remaining text in the default
10
10
  # size in a second text_box.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
11
+
12
+ require '../example_helper'
14
13
 
15
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
15
  Prawn::ManualBuilder::Example.generate(filename) do
17
- string = "This is the beginning of the text. It will be cut somewhere and " +
18
- "the rest of the text will procede to be rendered this time by " +
19
- "calling another method." + " . " * 50
16
+ string = 'This is the beginning of the text. It will be cut somewhere and ' \
17
+ 'the rest of the text will procede to be rendered this time by ' \
18
+ 'calling another method.' + ' . ' * 50
20
19
 
21
20
  y_position = cursor - 20
22
- excess_text = text_box string,
23
- :width => 300,
24
- :height => 50,
25
- :overflow => :truncate,
26
- :at => [100, y_position],
27
- :size => 18
21
+ excess_text = text_box(
22
+ string,
23
+ width: 300,
24
+ height: 50,
25
+ overflow: :truncate,
26
+ at: [100, y_position],
27
+ size: 18
28
+ )
28
29
 
29
- text_box excess_text,
30
- :width => 300,
31
- :at => [100, y_position - 100]
30
+ text_box(
31
+ excess_text,
32
+ width: 300,
33
+ at: [100, y_position - 100]
34
+ )
32
35
  end