prawn 2.1.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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 +9 -41
  7. data/lib/prawn.rb +37 -49
  8. data/lib/prawn/document.rb +193 -141
  9. data/lib/prawn/document/bounding_box.rb +50 -30
  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 +22 -16
  13. data/lib/prawn/encoding.rb +69 -68
  14. data/lib/prawn/errors.rb +12 -7
  15. data/lib/prawn/font.rb +104 -69
  16. data/lib/prawn/font_metric_cache.rb +20 -13
  17. data/lib/prawn/{font → fonts}/afm.rb +108 -72
  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 +126 -81
  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 +43 -39
  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 +204 -102
  29. data/lib/prawn/graphics/transformation.rb +15 -9
  30. data/lib/prawn/graphics/transparency.rb +17 -13
  31. data/lib/prawn/grid.rb +84 -48
  32. data/lib/prawn/image_handler.rb +5 -5
  33. data/lib/prawn/images.rb +60 -49
  34. data/lib/prawn/images/image.rb +2 -1
  35. data/lib/prawn/images/jpg.rb +31 -22
  36. data/lib/prawn/images/png.rb +67 -63
  37. data/lib/prawn/measurement_extensions.rb +10 -9
  38. data/lib/prawn/measurements.rb +19 -15
  39. data/lib/prawn/outline.rb +98 -77
  40. data/lib/prawn/repeater.rb +15 -11
  41. data/lib/prawn/security.rb +93 -70
  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 +76 -60
  46. data/lib/prawn/text/box.rb +18 -14
  47. data/lib/prawn/text/formatted.rb +5 -5
  48. data/lib/prawn/text/formatted/arranger.rb +80 -40
  49. data/lib/prawn/text/formatted/box.rb +140 -101
  50. data/lib/prawn/text/formatted/fragment.rb +11 -14
  51. data/lib/prawn/text/formatted/line_wrap.rb +128 -67
  52. data/lib/prawn/text/formatted/parser.rb +147 -123
  53. data/lib/prawn/text/formatted/wrap.rb +48 -32
  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 +7 -8
  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 +7 -8
  69. data/manual/bounding_box/creation.rb +6 -7
  70. data/manual/bounding_box/indentation.rb +14 -15
  71. data/manual/bounding_box/nesting.rb +25 -18
  72. data/manual/bounding_box/russian_boxes.rb +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 +15 -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 +18 -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 +5 -6
  88. data/manual/graphics/fill_rules.rb +10 -10
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +48 -40
  91. data/manual/graphics/helper.rb +19 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +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 +15 -16
  101. data/manual/graphics/stroke_join.rb +5 -6
  102. data/manual/graphics/translate.rb +10 -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 +10 -11
  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 +16 -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 +21 -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 +10 -8
  137. data/manual/text/formatted_callbacks.rb +33 -24
  138. data/manual/text/formatted_text.rb +36 -25
  139. data/manual/text/free_flowing_text.rb +22 -23
  140. data/manual/text/inline.rb +18 -19
  141. data/manual/text/kerning_and_character_spacing.rb +14 -15
  142. data/manual/text/leading.rb +7 -8
  143. data/manual/text/line_wrapping.rb +37 -18
  144. data/manual/text/paragraph_indentation.rb +12 -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 +33 -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 +20 -19
  155. data/manual/text/utf8.rb +11 -12
  156. data/manual/text/win_ansi_charset.rb +27 -25
  157. data/prawn.gemspec +41 -34
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +550 -0
  160. data/spec/prawn/document/column_box_spec.rb +75 -0
  161. data/spec/prawn/document/security_spec.rb +176 -0
  162. data/spec/prawn/document_annotations_spec.rb +76 -0
  163. data/spec/prawn/document_destinations_spec.rb +15 -0
  164. data/spec/prawn/document_grid_spec.rb +99 -0
  165. data/spec/prawn/document_reference_spec.rb +27 -0
  166. data/spec/prawn/document_span_spec.rb +44 -0
  167. data/spec/prawn/document_spec.rb +805 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +544 -0
  170. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  171. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  172. data/spec/prawn/graphics_spec.rb +872 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/{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 +229 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +512 -0
  180. data/spec/prawn/repeater_spec.rb +166 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +173 -0
  183. data/spec/prawn/text/box_spec.rb +1110 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +849 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +150 -0
  190. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  191. data/spec/prawn/text_spacing_spec.rb +95 -0
  192. data/spec/prawn/text_spec.rb +603 -0
  193. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  194. data/spec/{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 +102 -222
  199. metadata.gz.sig +0 -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,29 +1,33 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for defining the document outline.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("outline.pdf", :page_size => "FOLIO") do
9
- package "outline" do |p|
10
- p.section "Basics" do |s|
11
- s.example "sections_and_pages", :eval_source => false
5
+ require_relative '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('outline.pdf', page_size: 'FOLIO') do
8
+ package 'outline' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'sections_and_pages', eval_source: false
12
11
  end
13
12
 
14
- p.section "Adding nodes later" do |s|
15
- s.example "add_subsection_to", :eval_source => false
16
- s.example "insert_section_after", :eval_source => false
13
+ p.section 'Adding nodes later' do |s|
14
+ s.example 'add_subsection_to', eval_source: false
15
+ s.example 'insert_section_after', eval_source: false
17
16
  end
18
17
 
19
18
  p.intro do
20
- prose("The outline of a PDF document is the table of contents tab you see to the right or left of your PDF viewer.
19
+ prose <<-TEXT
20
+ The outline of a PDF document is the table of contents tab you see to
21
+ the right or left of your PDF viewer.
21
22
 
22
- The examples include:")
23
+ The examples include:
24
+ TEXT
23
25
 
24
- list( "How to define sections and pages",
25
- "How to insert sections and/or pages to a previously defined outline structure"
26
- )
26
+ list(
27
+ 'How to define sections and pages',
28
+ 'How to insert sections and/or pages to a previously defined outline '\
29
+ 'structure'
30
+ )
27
31
  end
28
32
  end
29
33
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The document outline tree is the set of links used to navigate through the
4
4
  # various document sections and pages.
5
5
  #
@@ -23,9 +23,8 @@
23
23
  # <code>section</code> and <code>page</code> may also be used without the
24
24
  # <code>define</code> method but they will need to instantiate the
25
25
  # <code>outline</code> object every time.
26
- #
27
- require File.expand_path(File.join(File.dirname(__FILE__),
28
- %w[.. example_helper]))
26
+
27
+ require_relative '../example_helper'
29
28
 
30
29
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
31
30
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -36,32 +35,32 @@ Prawn::ManualBuilder::Example.generate(filename) do
36
35
  end
37
36
 
38
37
  outline.define do
39
- section("Section 1", :destination => 1) do
40
- page :title => "Page 2", :destination => 2
41
- page :title => "Page 3", :destination => 3
38
+ section('Section 1', destination: 1) do
39
+ page title: 'Page 2', destination: 2
40
+ page title: 'Page 3', destination: 3
42
41
  end
43
42
 
44
- section("Section 2", :destination => 4) do
45
- page :title => "Page 5", :destination => 5
43
+ section('Section 2', destination: 4) do
44
+ page title: 'Page 5', destination: 5
46
45
 
47
- section("Subsection 2.1", :destination => 6, :closed => true) do
48
- page :title => "Page 7", :destination => 7
46
+ section('Subsection 2.1', destination: 6, closed: true) do
47
+ page title: 'Page 7', destination: 7
49
48
  end
50
49
  end
51
50
  end
52
51
 
53
52
  # Outside of the define block
54
- outline.section("Section 3", :destination => 8) do
55
- outline.page :title => "Page 9", :destination => 9
53
+ outline.section('Section 3', destination: 8) do
54
+ outline.page title: 'Page 9', destination: 9
56
55
  end
57
56
 
58
- outline.page :title => "Page 10", :destination => 10
57
+ outline.page title: 'Page 10', destination: 10
59
58
 
60
59
  # Section and Pages without links. While a section without a link may be
61
60
  # useful to group some pages, a page without a link is useless
62
- outline.update do # update is an alias to define
63
- section("Section without link") do
64
- page :title => "Page without link"
61
+ outline.update do # update is an alias to define
62
+ section('Section without link') do
63
+ page title: 'Page without link'
65
64
  end
66
65
  end
67
66
  end
@@ -1,32 +1,36 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Below is the code to generate page numbers that alternate being rendered
4
4
  # on the right and left side of the page. The first page will have a "1" in
5
5
  # the bottom right corner. The second page will have a "2" in the bottom
6
6
  # left corner of the page. The third a "3" in the bottom right, etc.
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
7
+
8
+ require_relative '../example_helper'
9
9
 
10
10
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
11
  Prawn::ManualBuilder::Example.generate(filename) do
12
- text "This is the first page!"
12
+ text 'This is the first page!'
13
13
 
14
14
  10.times do
15
15
  start_new_page
16
- text "Here comes yet another page."
16
+ text 'Here comes yet another page.'
17
17
  end
18
18
 
19
- string = "<page>"
20
- odd_options = { :at => [bounds.right - 150, 0],
21
- :width => 150,
22
- :align => :right,
23
- :page_filter => :odd,
24
- :start_count_at => 1 }
25
- even_options = { :at => [0, bounds.left],
26
- :width => 150,
27
- :align => :left,
28
- :page_filter => :even,
29
- :start_count_at => 2 }
19
+ string = '<page>'
20
+ odd_options = {
21
+ at: [bounds.right - 150, 0],
22
+ width: 150,
23
+ align: :right,
24
+ page_filter: :odd,
25
+ start_count_at: 1
26
+ }
27
+ even_options = {
28
+ at: [0, bounds.left],
29
+ width: 150,
30
+ align: :left,
31
+ page_filter: :even,
32
+ start_count_at: 2
33
+ }
30
34
  number_pages string, odd_options
31
35
  number_pages string, even_options
32
36
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>number_pages</code> method is a simple way to number the pages of
4
4
  # your document. It should be called towards the end of the document since
5
5
  # pages created after the call won't be numbered.
@@ -20,33 +20,34 @@
20
20
  # <code>color</code> which accepts the same values as <code>fill_color</code>
21
21
  #
22
22
  # As well as any option accepted by <code>text_box</code>
23
- #
24
- require File.expand_path(File.join(File.dirname(__FILE__),
25
- %w[.. example_helper]))
23
+
24
+ require_relative '../example_helper'
26
25
 
27
26
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
28
27
  Prawn::ManualBuilder::Example.generate(filename) do
29
- text "This is the first page!"
28
+ text 'This is the first page!'
30
29
 
31
30
  10.times do
32
31
  start_new_page
33
- text "Here comes yet another page."
32
+ text 'Here comes yet another page.'
34
33
  end
35
34
 
36
- string = "page <page> of <total>"
35
+ string = 'page <page> of <total>'
37
36
  # Green page numbers 1 to 7
38
- options = { :at => [bounds.right - 150, 0],
39
- :width => 150,
40
- :align => :right,
41
- :page_filter => (1..7),
42
- :start_count_at => 1,
43
- :color => "007700" }
37
+ options = {
38
+ at: [bounds.right - 150, 0],
39
+ width: 150,
40
+ align: :right,
41
+ page_filter: (1..7),
42
+ start_count_at: 1,
43
+ color: '007700'
44
+ }
44
45
  number_pages string, options
45
46
 
46
47
  # Gray page numbers from 8 on up
47
- options[:page_filter] = lambda{ |pg| pg > 7 }
48
+ options[:page_filter] = ->(pg) { pg > 7 }
48
49
  options[:start_count_at] = 8
49
- options[:color] = "333333"
50
+ options[:color] = '333333'
50
51
  number_pages string, options
51
52
 
52
53
  start_new_page
@@ -1,29 +1,35 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for stamps and repeaters.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("repeatable_content.pdf", :page_size => "FOLIO") do
9
- package "repeatable_content" do |p|
10
- p.example "repeater", :eval_source => false
11
- p.example "stamp"
12
- p.example "page_numbering", :eval_source => false
13
- p.example "alternate_page_numbering", :eval_source => false
5
+ require_relative '../example_helper'
6
+
7
+ filename = File.basename(__FILE__).gsub('.rb', '.pdf')
8
+ Prawn::ManualBuilder::Example.generate(filename, page_size: 'FOLIO') do
9
+ package 'repeatable_content' do |p|
10
+ p.example 'repeater', eval_source: false
11
+ p.example 'stamp'
12
+ p.example 'page_numbering', eval_source: false
13
+ p.example 'alternate_page_numbering', eval_source: false
14
14
 
15
15
  p.intro do
16
- prose("Prawn offers two ways to handle repeatable content blocks. Repeater is useful for content that gets repeated at well defined intervals while Stamp is more appropriate if you need better control of when to repeat it.
16
+ prose <<-TEXT
17
+ Prawn offers two ways to handle repeatable content blocks. Repeater is
18
+ useful for content that gets repeated at well defined intervals while
19
+ Stamp is more appropriate if you need better control of when to repeat
20
+ it.
17
21
 
18
- There is also one very specific helper for numbering pages.
22
+ There is also one very specific helper for numbering pages.
19
23
 
20
- The examples show:")
24
+ The examples show:
25
+ TEXT
21
26
 
22
- list( "How to repeat content on several pages with a single invocation",
23
- "How to create a new Stamp",
24
- 'How to "stamp" the content block on the page',
25
- "How to number the document pages with one simple call"
26
- )
27
+ list(
28
+ 'How to repeat content on several pages with a single invocation',
29
+ 'How to create a new Stamp',
30
+ 'How to "stamp" the content block on the page',
31
+ 'How to number the document pages with one simple call'
32
+ )
27
33
  end
28
34
  end
29
35
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>repeat</code> method is quite versatile when it comes to define
4
4
  # the intervals at which the content block should repeat.
5
5
  #
@@ -14,42 +14,41 @@
14
14
  #
15
15
  # It is also important to say that no matter where you define the repeater it
16
16
  # will be applied to all matching pages.
17
- #
18
- require File.expand_path(File.join(File.dirname(__FILE__),
19
- %w[.. example_helper]))
17
+
18
+ require_relative '../example_helper'
20
19
 
21
20
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
22
21
  Prawn::ManualBuilder::Example.generate(filename) do
23
22
  repeat(:all) do
24
- draw_text "All pages", :at => bounds.top_left
23
+ draw_text 'All pages', at: bounds.top_left
25
24
  end
26
25
 
27
26
  repeat(:odd) do
28
- draw_text "Only odd pages", :at => [0, 0]
27
+ draw_text 'Only odd pages', at: [0, 0]
29
28
  end
30
29
 
31
30
  repeat(:even) do
32
- draw_text "Only even pages", :at => [0, 0]
31
+ draw_text 'Only even pages', at: [0, 0]
33
32
  end
34
33
 
35
34
  repeat([1, 3, 7]) do
36
- draw_text "Only on pages 1, 3 and 7", :at => [100, 0]
35
+ draw_text 'Only on pages 1, 3 and 7', at: [100, 0]
37
36
  end
38
37
 
39
38
  repeat(2..4) do
40
- draw_text "From the 2nd to the 4th page", :at => [300, 0]
39
+ draw_text 'From the 2nd to the 4th page', at: [300, 0]
41
40
  end
42
41
 
43
- repeat(lambda { |pg| pg % 3 == 0 }) do
44
- draw_text "Every third page", :at => [250, 20]
42
+ repeat(->(pg) { (pg % 3).zero? }) do
43
+ draw_text 'Every third page', at: [250, 20]
45
44
  end
46
45
 
47
- repeat(:all, :dynamic => true) do
48
- draw_text page_number, :at => [500, 0]
46
+ repeat(:all, dynamic: true) do
47
+ draw_text page_number, at: [500, 0]
49
48
  end
50
49
 
51
50
  10.times do
52
51
  start_new_page
53
- draw_text "A wonderful page", :at => [400, 400]
52
+ draw_text 'A wonderful page', at: [400, 400]
54
53
  end
55
54
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Stamps should be used when you have content that will be included multiple
4
4
  # times in a document. Its advantages over creating the content anew each time
5
5
  # are:
@@ -15,27 +15,26 @@
15
15
  # There are two methods to render the stamp on a page <code>stamp</code> and
16
16
  # <code>stamp_at</code>. The first will render the stamp as is while the
17
17
  # second accepts a point to serve as an offset to the stamp content.
18
- #
19
- require File.expand_path(File.join(File.dirname(__FILE__),
20
- %w[.. example_helper]))
18
+
19
+ require_relative '../example_helper'
21
20
 
22
21
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
23
22
  Prawn::ManualBuilder::Example.generate(filename) do
24
- create_stamp("approved") do
25
- rotate(30, :origin => [-5, -5]) do
26
- stroke_color "FF3333"
23
+ create_stamp('approved') do
24
+ rotate(30, origin: [-5, -5]) do
25
+ stroke_color 'FF3333'
27
26
  stroke_ellipse [0, 0], 29, 15
28
- stroke_color "000000"
27
+ stroke_color '000000'
29
28
 
30
- fill_color "993333"
31
- font("Times-Roman") do
32
- draw_text "Approved", :at => [-23, -3]
29
+ fill_color '993333'
30
+ font('Times-Roman') do
31
+ draw_text 'Approved', at: [-23, -3]
33
32
  end
34
- fill_color "000000"
33
+ fill_color '000000'
35
34
  end
36
35
  end
37
36
 
38
- stamp "approved"
37
+ stamp 'approved'
39
38
 
40
- stamp_at "approved", [200, 200]
39
+ stamp_at 'approved', [200, 200]
41
40
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>encrypt_document</code> method, as you might have already guessed,
4
4
  # is used to encrypt the PDF document.
5
5
  #
@@ -12,18 +12,17 @@
12
12
  # documentation (you can find it here:
13
13
  # https://github.com/prawnpdf/prawn/blob/master/lib/prawn/security.rb ) before
14
14
  # using this for anything super serious.
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
15
+
16
+ require_relative '../example_helper'
18
17
 
19
18
  # Bare encryption. No password needed.
20
- Prawn::ManualBuilder::Example.generate("bare_encryption.pdf") do
21
- text "See, no password was asked but the document is still encrypted."
19
+ Prawn::ManualBuilder::Example.generate('bare_encryption.pdf') do
20
+ text 'See, no password was asked but the document is still encrypted.'
22
21
  encrypt_document
23
22
  end
24
23
 
25
24
  # Simple password. All permissions granted.
26
- Prawn::ManualBuilder::Example.generate("simple_password.pdf") do
27
- text "You was asked for a password."
28
- encrypt_document(:user_password => 'foo', :owner_password => 'bar')
25
+ Prawn::ManualBuilder::Example.generate('simple_password.pdf') do
26
+ text 'You was asked for a password.'
27
+ encrypt_document(user_password: 'foo', owner_password: 'bar')
29
28
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Some permissions may be set for the regular user with the following options:
4
4
  # <code>:print_document</code>, <code>:modify_contents</code>,
5
5
  # <code>:copy_contents</code>, <code>:modify_annotations</code>. All this
@@ -14,23 +14,30 @@
14
14
  # documentation (you can find it here:
15
15
  # https://github.com/prawnpdf/prawn/blob/master/lib/prawn/security.rb ) before
16
16
  # using this for anything super serious.
17
- #
18
- require File.expand_path(File.join(File.dirname(__FILE__),
19
- %w[.. example_helper]))
17
+
18
+ require_relative '../example_helper'
20
19
 
21
20
  # User cannot print the document.
22
- Prawn::ManualBuilder::Example.generate("cannot_print.pdf") do
21
+ Prawn::ManualBuilder::Example.generate('cannot_print.pdf') do
23
22
  text "If you used the user password you won't be able to print the doc."
24
- encrypt_document(:user_password => 'foo', :owner_password => 'bar',
25
- :permissions => { :print_document => false })
23
+ encrypt_document(
24
+ user_password: 'foo',
25
+ owner_password: 'bar',
26
+ permissions: { print_document: false }
27
+ )
26
28
  end
27
29
 
28
30
  # All permissions revoked and owner password set to random
29
- Prawn::ManualBuilder::Example.generate("no_permissions.pdf") do
31
+ Prawn::ManualBuilder::Example.generate('no_permissions.pdf') do
30
32
  text "You may only view this and won't be able to use the owner password."
31
- encrypt_document(:user_password => 'foo', :owner_password => :random,
32
- :permissions => { :print_document => false,
33
- :modify_contents => false,
34
- :copy_contents => false,
35
- :modify_annotations => false })
33
+ encrypt_document(
34
+ user_password: 'foo',
35
+ owner_password: :random,
36
+ permissions: {
37
+ print_document: false,
38
+ modify_contents: false,
39
+ copy_contents: false,
40
+ modify_annotations: false
41
+ }
42
+ )
36
43
  end