prawn 2.1.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 (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
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Prawn::Text do
6
+ let(:pdf) { create_pdf }
7
+
8
+ describe '#formatted_text' do
9
+ it 'draws text' do
10
+ string = 'hello world'
11
+ format_array = [{ text: string }]
12
+ pdf.formatted_text(format_array)
13
+ # grab the text from the rendered PDF and ensure it matches
14
+ text = PDF::Inspector::Text.analyze(pdf.render)
15
+ expect(text.strings.first).to eq(string)
16
+ end
17
+ end
18
+
19
+ describe '#text with inline styling' do
20
+ it 'automatically moves to a new page if the tallest fragment' \
21
+ " on the next line won't fit in the available space" do
22
+ pdf.move_cursor_to(pdf.font.height)
23
+ formatted = "this contains <font size='24'>sized</font> text"
24
+ pdf.text(formatted, inline_format: true)
25
+ pages = PDF::Inspector::Page.analyze(pdf.render).pages
26
+ expect(pages.size).to eq(2)
27
+ end
28
+
29
+ it 'embeds links as literal strings' do
30
+ pdf.text "<link href='http://wiki.github.com/sandal/prawn/'>wiki</link>",
31
+ inline_format: true
32
+ expect(pdf.render).to match(%r{/URI\s+\(http://wiki\.github\.com})
33
+ end
34
+ end
35
+ end
@@ -1,22 +1,23 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
3
+ require 'spec_helper'
4
4
 
5
5
  describe Prawn::TransformationStack do
6
- before { create_pdf }
7
- before { pdf.add_to_transformation_stack(2, 0, 0, 2, 100, 100) }
8
-
9
- let(:pdf) { @pdf }
10
- let(:stack) { @pdf.instance_variable_get(:@transformation_stack) }
6
+ let(:pdf) do
7
+ create_pdf do |document|
8
+ document.add_to_transformation_stack(2, 0, 0, 2, 100, 100)
9
+ end
10
+ end
11
+ let(:stack) { pdf.instance_variable_get(:@transformation_stack) }
11
12
 
12
- describe "#add_to_transformation_stack" do
13
- it "creates and adds to the stack" do
13
+ describe '#add_to_transformation_stack' do
14
+ it 'creates and adds to the stack' do
14
15
  pdf.add_to_transformation_stack(1, 0, 0, 1, 20, 20)
15
16
 
16
17
  expect(stack).to eq [[[2, 0, 0, 2, 100, 100], [1, 0, 0, 1, 20, 20]]]
17
18
  end
18
19
 
19
- it "adds to the last stack" do
20
+ it 'adds to the last stack' do
20
21
  pdf.save_transformation_stack
21
22
  pdf.add_to_transformation_stack(1, 0, 0, 1, 20, 20)
22
23
 
@@ -27,8 +28,8 @@ describe Prawn::TransformationStack do
27
28
  end
28
29
  end
29
30
 
30
- describe "#save_transformation_stack" do
31
- it "clones the last stack" do
31
+ describe '#save_transformation_stack' do
32
+ it 'clones the last stack' do
32
33
  pdf.save_transformation_stack
33
34
 
34
35
  expect(stack.length).to eq 2
@@ -37,8 +38,8 @@ describe Prawn::TransformationStack do
37
38
  end
38
39
  end
39
40
 
40
- describe "#restore_transformation_stack" do
41
- it "pops off the last stack" do
41
+ describe '#restore_transformation_stack' do
42
+ it 'pops off the last stack' do
42
43
  pdf.save_transformation_stack
43
44
  pdf.add_to_transformation_stack(1, 0, 0, 1, 20, 20)
44
45
  pdf.restore_transformation_stack
@@ -47,17 +48,19 @@ describe Prawn::TransformationStack do
47
48
  end
48
49
  end
49
50
 
50
- describe "current_transformation_matrix_with_translation" do
51
+ describe 'current_transformation_matrix_with_translation' do
51
52
  before do
52
53
  pdf.add_to_transformation_stack(1, 0, 0, 1, 20, 20)
53
54
  end
54
55
 
55
- it "calculates the last transformation" do
56
- expect(pdf.current_transformation_matrix_with_translation).to eq [2, 0, 0, 2, 140, 140]
56
+ it 'calculates the last transformation' do
57
+ expect(pdf.current_transformation_matrix_with_translation)
58
+ .to eq [2, 0, 0, 2, 140, 140]
57
59
  end
58
60
 
59
- it "adds the supplied x and y coordinates to the transformation stack" do
60
- expect(pdf.current_transformation_matrix_with_translation(15, 15)).to eq [2, 0, 0, 2, 170, 170]
61
+ it 'adds the supplied x and y coordinates to the transformation stack' do
62
+ expect(pdf.current_transformation_matrix_with_translation(15, 15))
63
+ .to eq [2, 0, 0, 2, 170, 170]
61
64
  end
62
65
  end
63
66
  end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Prawn::View do
6
+ let(:view_object) { Object.new.tap { |o| o.extend(described_class) } }
7
+
8
+ it 'provides a Prawn::Document object by default' do
9
+ expect(view_object.document).to be_kind_of(Prawn::Document)
10
+ end
11
+
12
+ it 'delegates unhandled methods to object returned by document method' do
13
+ doc = instance_double('Document')
14
+ allow(view_object).to receive(:document).and_return(doc)
15
+
16
+ allow(doc).to receive(:some_delegated_method)
17
+
18
+ view_object.some_delegated_method
19
+
20
+ expect(doc).to have_received(:some_delegated_method)
21
+ end
22
+
23
+ it 'allows a block-like DSL via the update method' do
24
+ doc = instance_double('Document')
25
+ allow(view_object).to receive(:document).and_return(doc)
26
+
27
+ allow(doc).to receive(:foo)
28
+ allow(doc).to receive(:bar)
29
+
30
+ view_object.update do
31
+ foo
32
+ bar
33
+ end
34
+ expect(doc).to have_received(:foo)
35
+ expect(doc).to have_received(:bar)
36
+ end
37
+
38
+ it 'aliases save_as() to document.render_file()' do
39
+ doc = instance_double('Document')
40
+ allow(doc).to receive(:render_file)
41
+
42
+ allow(view_object).to receive(:document).and_return(doc)
43
+
44
+ view_object.save_as('foo.pdf')
45
+ expect(doc).to have_received(:render_file)
46
+ end
47
+
48
+ describe '#respond_to?', issue: 1064 do
49
+ subject { view_object.respond_to?(method) }
50
+
51
+ context 'when called with an existing method from Prawn::Document' do
52
+ let(:method) { :text }
53
+
54
+ it { is_expected.to be_truthy }
55
+ end
56
+
57
+ context 'when called with a non-existing method' do
58
+ let(:method) { :non_existing_method }
59
+
60
+ it { is_expected.to be_falsey }
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'digest/sha2'
5
+
6
+ MANUAL_HASH =
7
+ case RUBY_ENGINE
8
+ when 'ruby'
9
+ '79248d58f9d89e44081da875fa15ad9a70cc07e9eaa4e8b706001044a3570e3f'\
10
+ 'bc4b5ba3e1150868d88add3a43972265219d4d11c60cbbc1bebf50e7d26cdb60'
11
+ when 'jruby'
12
+ '22cf478cc5563cf0283d239ca5e87df44151fb422b5fd426c3aec47ca1df44fa'\
13
+ '7b3826131d65cadad5430a05ee812000ae9f9419d6bc5ba4024fdf6a799fc184'
14
+ end
15
+
16
+ RSpec.describe Prawn do
17
+ describe 'manual' do
18
+ # JRuby's zlib is a bit quirky. It sometimes produces different output to
19
+ # libzlib (used by MRI). It's still a proper deflate stream and can be
20
+ # decompressed just fine but for whatever reason compressin produses
21
+ # different output.
22
+ #
23
+ # See: https://github.com/jruby/jruby/issues/4244
24
+ it 'contains no unexpected changes' do
25
+ ENV['CI'] ||= 'true'
26
+
27
+ require File.expand_path(File.join(__dir__, %w[.. manual contents]))
28
+ s = prawn_manual_document.render
29
+
30
+ hash = Digest::SHA512.hexdigest(s)
31
+
32
+ expect(hash).to eq MANUAL_HASH
33
+ end
34
+ end
35
+ end
@@ -1,41 +1,38 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  puts "Prawn specs: Running on Ruby Version: #{RUBY_VERSION}"
4
4
 
5
- require "bundler"
6
- Bundler.setup
7
-
8
- if ENV["COVERAGE"]
9
- require "simplecov"
5
+ if ENV['COVERAGE']
6
+ require 'simplecov'
10
7
  SimpleCov.start do
11
- add_filter "/spec/"
8
+ add_filter '/spec/'
12
9
  end
13
10
  end
14
11
 
15
- require_relative "../lib/prawn"
12
+ require_relative '../lib/prawn'
16
13
 
17
14
  Prawn.debug = true
18
- Prawn::Font::AFM.hide_m17n_warning = true
15
+ Prawn::Fonts::AFM.hide_m17n_warning = true
19
16
 
20
- require "rspec"
21
- require "pdf/reader"
22
- require "pdf/inspector"
17
+ require 'rspec'
18
+ require 'pdf/reader'
19
+ require 'pdf/inspector'
23
20
 
24
21
  # Requires supporting ruby files with custom matchers and macros, etc,
25
22
  # in spec/extensions/ and its subdirectories.
26
- Dir[File.dirname(__FILE__) + "/extensions/**/*.rb"].each { |f| require f }
23
+ Dir[File.join(__dir__, 'extensions', '**', '*.rb')].sort.each { |f| require f }
27
24
 
28
25
  RSpec.configure do |config|
29
26
  config.include EncodingHelpers
30
27
  end
31
28
 
32
- def create_pdf(klass = Prawn::Document)
33
- @pdf = klass.new(:margin => 0)
29
+ def create_pdf(klass = Prawn::Document, &block)
30
+ klass.new(margin: 0, &block)
34
31
  end
35
32
 
36
33
  RSpec::Matchers.define :have_parseable_xobjects do
37
34
  match do |actual|
38
- expect { PDF::Inspector::XObject.analyze(actual.render) }.not_to raise_error
35
+ expect { PDF::Inspector::XObject.analyze(actual.render) }.to_not raise_error
39
36
  true
40
37
  end
41
38
  failure_message do |actual|
@@ -44,6 +41,8 @@ RSpec::Matchers.define :have_parseable_xobjects do
44
41
  end
45
42
 
46
43
  # Make some methods public to assist in testing
47
- module Prawn::Graphics
48
- public :map_to_absolute
49
- end
44
+ # module Prawn
45
+ # module Graphics
46
+ # public :map_to_absolute
47
+ # end
48
+ # end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory Brown
@@ -9,167 +9,129 @@ authors:
9
9
  - Daniel Nelson
10
10
  - Jonathan Greenberg
11
11
  - James Healy
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
- cert_chain: []
15
- date: 2016-03-01 00:00:00.000000000 Z
14
+ cert_chain:
15
+ - |
16
+ -----BEGIN CERTIFICATE-----
17
+ MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhhbGV4
18
+ L0RDPXBvaW50bGVzcy9EQz1vbmUwHhcNMjAwODAxMTQxMjE1WhcNMjEwODAxMTQx
19
+ MjE1WjAjMSEwHwYDVQQDDBhhbGV4L0RDPXBvaW50bGVzcy9EQz1vbmUwggEiMA0G
20
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPOVLPGEK+eaP6zJfifrpWvPTg4qo3
21
+ XNJJPom80SwqX2hVCVsRDK4RYgKUQqKRQzHhlx14wZHwWLETBVbNDGX3uqyCnTWU
22
+ JUKh3ydiZShXpNHoV/NW7hhEYvNsDcBAjYTmbvXOhuYCo0Tz/0N2Oiun/0wIICtP
23
+ vytY9TY0/lklWjAbsqJjNOu3o8IYkJBAN/rU96E/6WhFwjnxLcTnV9RfFRXdjG5j
24
+ CughoB2xSwKX8gwbQ8fsnaZRmdyDGYNpz6sGF0zycfiLkTttbLA2nYATCALy98CH
25
+ nsyZNsTjb4WINCuY2yEDjwesw9f/ROkNC68EgQ5M+aMjp+D0WcYGfzojAgMBAAGj
26
+ dzB1MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRPgIwSVbeonua/
27
+ Ny/8576oxdUbrjAdBgNVHREEFjAUgRJhbGV4QHBvaW50bGVzcy5vbmUwHQYDVR0S
28
+ BBYwFIESYWxleEBwb2ludGxlc3Mub25lMA0GCSqGSIb3DQEBCwUAA4IBAQAzhGxF
29
+ M0bXJ9GWD9vdVHOyzBQBJcJAvnsz2yV3+r4eJBsQynFIscsea8lHFL/d1eHYP0mN
30
+ k0fhK+WDcPlrj0Sn/Ezhk2qogTIekwDOK6pZkGRQzD45leJqQMnYd+/TXK3ri485
31
+ Gi4oJ6NitnnUT59SQnjD5JcENfc0EcRzclmVRFE8W4O+ORgo4Dypq1rwYUzxeyUk
32
+ mP5jNBWtH+hGUph28GQb0Hph6YnQb8zEFB88Xq80PK1SzkIPHpbTBk9mwPf6ypeX
33
+ Un1TJEahAlgENVml6CyDXSwk0H8N1V3gm1mb9Fe1T2Z/kAzvjo0qTDEtMVLU7Bxh
34
+ uqMUrdETjTnRYCVq
35
+ -----END CERTIFICATE-----
36
+ date: 2020-12-29 00:00:00.000000000 Z
16
37
  dependencies:
17
38
  - !ruby/object:Gem::Dependency
18
- name: ttfunk
39
+ name: pdf-core
19
40
  requirement: !ruby/object:Gem::Requirement
20
41
  requirements:
21
42
  - - "~>"
22
43
  - !ruby/object:Gem::Version
23
- version: 1.4.0
44
+ version: 0.9.0
24
45
  type: :runtime
25
46
  prerelease: false
26
47
  version_requirements: !ruby/object:Gem::Requirement
27
48
  requirements:
28
49
  - - "~>"
29
50
  - !ruby/object:Gem::Version
30
- version: 1.4.0
51
+ version: 0.9.0
31
52
  - !ruby/object:Gem::Dependency
32
- name: pdf-core
53
+ name: ttfunk
33
54
  requirement: !ruby/object:Gem::Requirement
34
55
  requirements:
35
56
  - - "~>"
36
57
  - !ruby/object:Gem::Version
37
- version: 0.6.1
58
+ version: '1.7'
38
59
  type: :runtime
39
60
  prerelease: false
40
61
  version_requirements: !ruby/object:Gem::Requirement
41
62
  requirements:
42
63
  - - "~>"
43
64
  - !ruby/object:Gem::Version
44
- version: 0.6.1
65
+ version: '1.7'
45
66
  - !ruby/object:Gem::Dependency
46
67
  name: pdf-inspector
47
68
  requirement: !ruby/object:Gem::Requirement
48
69
  requirements:
49
- - - "~>"
50
- - !ruby/object:Gem::Version
51
- version: 1.2.1
52
- type: :development
53
- prerelease: false
54
- version_requirements: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - "~>"
70
+ - - ">="
57
71
  - !ruby/object:Gem::Version
58
72
  version: 1.2.1
59
- - !ruby/object:Gem::Dependency
60
- name: yard
61
- requirement: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - ">="
73
+ - - "<"
64
74
  - !ruby/object:Gem::Version
65
- version: '0'
75
+ version: 2.0.a
66
76
  type: :development
67
77
  prerelease: false
68
78
  version_requirements: !ruby/object:Gem::Requirement
69
79
  requirements:
70
80
  - - ">="
71
81
  - !ruby/object:Gem::Version
72
- version: '0'
73
- - !ruby/object:Gem::Dependency
74
- name: rspec
75
- requirement: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - "~>"
78
- - !ruby/object:Gem::Version
79
- version: '3.0'
80
- type: :development
81
- prerelease: false
82
- version_requirements: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - "~>"
82
+ version: 1.2.1
83
+ - - "<"
85
84
  - !ruby/object:Gem::Version
86
- version: '3.0'
85
+ version: 2.0.a
87
86
  - !ruby/object:Gem::Dependency
88
- name: rake
87
+ name: pdf-reader
89
88
  requirement: !ruby/object:Gem::Requirement
90
89
  requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- type: :development
95
- prerelease: false
96
- version_requirements: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - ">="
90
+ - - "~>"
99
91
  - !ruby/object:Gem::Version
100
- version: '0'
101
- - !ruby/object:Gem::Dependency
102
- name: simplecov
103
- requirement: !ruby/object:Gem::Requirement
104
- requirements:
92
+ version: '1.4'
105
93
  - - ">="
106
94
  - !ruby/object:Gem::Version
107
- version: '0'
95
+ version: 1.4.1
108
96
  type: :development
109
97
  prerelease: false
110
98
  version_requirements: !ruby/object:Gem::Requirement
111
99
  requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- - !ruby/object:Gem::Dependency
116
- name: prawn-manual_builder
117
- requirement: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - ">="
100
+ - - "~>"
120
101
  - !ruby/object:Gem::Version
121
- version: 0.2.0
122
- type: :development
123
- prerelease: false
124
- version_requirements: !ruby/object:Gem::Requirement
125
- requirements:
102
+ version: '1.4'
126
103
  - - ">="
127
104
  - !ruby/object:Gem::Version
128
- version: 0.2.0
105
+ version: 1.4.1
129
106
  - !ruby/object:Gem::Dependency
130
- name: pdf-reader
107
+ name: prawn-dev
131
108
  requirement: !ruby/object:Gem::Requirement
132
109
  requirements:
133
110
  - - "~>"
134
111
  - !ruby/object:Gem::Version
135
- version: '1.2'
112
+ version: 0.1.0
136
113
  type: :development
137
114
  prerelease: false
138
115
  version_requirements: !ruby/object:Gem::Requirement
139
116
  requirements:
140
117
  - - "~>"
141
118
  - !ruby/object:Gem::Version
142
- version: '1.2'
143
- - !ruby/object:Gem::Dependency
144
- name: rubocop
145
- requirement: !ruby/object:Gem::Requirement
146
- requirements:
147
- - - '='
148
- - !ruby/object:Gem::Version
149
- version: 0.30.1
150
- type: :development
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- requirements:
154
- - - '='
155
- - !ruby/object:Gem::Version
156
- version: 0.30.1
119
+ version: 0.1.0
157
120
  - !ruby/object:Gem::Dependency
158
- name: code_statistics
121
+ name: prawn-manual_builder
159
122
  requirement: !ruby/object:Gem::Requirement
160
123
  requirements:
161
- - - '='
124
+ - - ">="
162
125
  - !ruby/object:Gem::Version
163
- version: 0.2.13
126
+ version: 0.3.0
164
127
  type: :development
165
128
  prerelease: false
166
129
  version_requirements: !ruby/object:Gem::Requirement
167
130
  requirements:
168
- - - '='
131
+ - - ">="
169
132
  - !ruby/object:Gem::Version
170
- version: 0.2.13
171
- description: |2
172
- Prawn is a fast, tiny, and nimble PDF generator for Ruby
133
+ version: 0.3.0
134
+ description: " Prawn is a fast, tiny, and nimble PDF generator for Ruby\n"
173
135
  email:
174
136
  - gregory.t.brown@gmail.com
175
137
  - brad@bradediger.com
@@ -202,51 +164,6 @@ files:
202
164
  - data/fonts/Times-Italic.afm
203
165
  - data/fonts/Times-Roman.afm
204
166
  - data/fonts/ZapfDingbats.afm
205
- - data/images/16bit.alpha
206
- - data/images/16bit.color
207
- - data/images/16bit.png
208
- - data/images/arrow.png
209
- - data/images/arrow2.png
210
- - data/images/blend_modes_bottom_layer.jpg
211
- - data/images/blend_modes_top_layer.jpg
212
- - data/images/dice.alpha
213
- - data/images/dice.color
214
- - data/images/dice.png
215
- - data/images/dice_interlaced.png
216
- - data/images/fractal.jpg
217
- - data/images/indexed_color.dat
218
- - data/images/indexed_color.png
219
- - data/images/indexed_transparency.png
220
- - data/images/indexed_transparency_alpha.dat
221
- - data/images/indexed_transparency_color.dat
222
- - data/images/letterhead.jpg
223
- - data/images/license.md
224
- - data/images/page_white_text.alpha
225
- - data/images/page_white_text.color
226
- - data/images/page_white_text.png
227
- - data/images/pigs.jpg
228
- - data/images/prawn.png
229
- - data/images/ruport.png
230
- - data/images/ruport_data.dat
231
- - data/images/ruport_transparent.png
232
- - data/images/ruport_type0.png
233
- - data/images/stef.jpg
234
- - data/images/tru256.bmp
235
- - data/images/web-links.dat
236
- - data/images/web-links.png
237
- - data/pdfs/complex_template.pdf
238
- - data/pdfs/contains_ttf_font.pdf
239
- - data/pdfs/encrypted.pdf
240
- - data/pdfs/form.pdf
241
- - data/pdfs/hexagon.pdf
242
- - data/pdfs/indirect_reference.pdf
243
- - data/pdfs/multipage_template.pdf
244
- - data/pdfs/nested_pages.pdf
245
- - data/pdfs/page_without_mediabox.pdf
246
- - data/pdfs/resources_as_indirect_object.pdf
247
- - data/pdfs/two_hexagons.pdf
248
- - data/pdfs/version_1_6.pdf
249
- - data/shift_jis_text.txt
250
167
  - lib/prawn.rb
251
168
  - lib/prawn/document.rb
252
169
  - lib/prawn/document/bounding_box.rb
@@ -256,10 +173,12 @@ files:
256
173
  - lib/prawn/encoding.rb
257
174
  - lib/prawn/errors.rb
258
175
  - lib/prawn/font.rb
259
- - lib/prawn/font/afm.rb
260
- - lib/prawn/font/dfont.rb
261
- - lib/prawn/font/ttf.rb
262
176
  - lib/prawn/font_metric_cache.rb
177
+ - lib/prawn/fonts/afm.rb
178
+ - lib/prawn/fonts/dfont.rb
179
+ - lib/prawn/fonts/otf.rb
180
+ - lib/prawn/fonts/ttc.rb
181
+ - lib/prawn/fonts/ttf.rb
263
182
  - lib/prawn/graphics.rb
264
183
  - lib/prawn/graphics/blend_mode.rb
265
184
  - lib/prawn/graphics/cap_style.rb
@@ -397,54 +316,54 @@ files:
397
316
  - manual/text/utf8.rb
398
317
  - manual/text/win_ansi_charset.rb
399
318
  - prawn.gemspec
400
- - spec/acceptance/png_spec.rb
401
- - spec/annotations_spec.rb
402
- - spec/blend_mode_spec.rb
403
- - spec/bounding_box_spec.rb
404
- - spec/column_box_spec.rb
405
319
  - spec/data/curves.pdf
406
- - spec/destinations_spec.rb
407
- - spec/document_spec.rb
408
320
  - spec/extensions/encoding_helpers.rb
409
- - spec/font_metric_cache_spec.rb
410
- - spec/font_spec.rb
411
- - spec/formatted_text_arranger_spec.rb
412
- - spec/formatted_text_box_spec.rb
413
- - spec/formatted_text_fragment_spec.rb
414
- - spec/graphics_spec.rb
415
- - spec/grid_spec.rb
416
- - spec/image_handler_spec.rb
417
- - spec/images_spec.rb
418
- - spec/inline_formatted_text_parser_spec.rb
419
- - spec/jpg_spec.rb
420
- - spec/line_wrap_spec.rb
421
- - spec/measurement_units_spec.rb
422
- - spec/outline_spec.rb
423
- - spec/png_spec.rb
424
- - spec/reference_spec.rb
425
- - spec/repeater_spec.rb
426
- - spec/security_spec.rb
427
- - spec/soft_mask_spec.rb
428
- - spec/span_spec.rb
321
+ - spec/prawn/document/bounding_box_spec.rb
322
+ - spec/prawn/document/column_box_spec.rb
323
+ - spec/prawn/document/security_spec.rb
324
+ - spec/prawn/document_annotations_spec.rb
325
+ - spec/prawn/document_destinations_spec.rb
326
+ - spec/prawn/document_grid_spec.rb
327
+ - spec/prawn/document_reference_spec.rb
328
+ - spec/prawn/document_span_spec.rb
329
+ - spec/prawn/document_spec.rb
330
+ - spec/prawn/font_metric_cache_spec.rb
331
+ - spec/prawn/font_spec.rb
332
+ - spec/prawn/graphics/blend_mode_spec.rb
333
+ - spec/prawn/graphics/transparency_spec.rb
334
+ - spec/prawn/graphics_spec.rb
335
+ - spec/prawn/graphics_stroke_styles_spec.rb
336
+ - spec/prawn/image_handler_spec.rb
337
+ - spec/prawn/images/jpg_spec.rb
338
+ - spec/prawn/images/png_spec.rb
339
+ - spec/prawn/images_spec.rb
340
+ - spec/prawn/measurements_extensions_spec.rb
341
+ - spec/prawn/outline_spec.rb
342
+ - spec/prawn/repeater_spec.rb
343
+ - spec/prawn/soft_mask_spec.rb
344
+ - spec/prawn/stamp_spec.rb
345
+ - spec/prawn/text/box_spec.rb
346
+ - spec/prawn/text/formatted/arranger_spec.rb
347
+ - spec/prawn/text/formatted/box_spec.rb
348
+ - spec/prawn/text/formatted/fragment_spec.rb
349
+ - spec/prawn/text/formatted/line_wrap_spec.rb
350
+ - spec/prawn/text/formatted/parser_spec.rb
351
+ - spec/prawn/text_draw_text_spec.rb
352
+ - spec/prawn/text_rendering_mode_spec.rb
353
+ - spec/prawn/text_spacing_spec.rb
354
+ - spec/prawn/text_spec.rb
355
+ - spec/prawn/text_with_inline_formatting_spec.rb
356
+ - spec/prawn/transformation_stack_spec.rb
357
+ - spec/prawn/view_spec.rb
358
+ - spec/prawn_manual_spec.rb
429
359
  - spec/spec_helper.rb
430
- - spec/stamp_spec.rb
431
- - spec/stroke_styles_spec.rb
432
- - spec/text_at_spec.rb
433
- - spec/text_box_spec.rb
434
- - spec/text_rendering_mode_spec.rb
435
- - spec/text_spacing_spec.rb
436
- - spec/text_spec.rb
437
- - spec/text_with_inline_formatting_spec.rb
438
- - spec/transformation_stack_spec.rb
439
- - spec/transparency_spec.rb
440
- - spec/view_spec.rb
441
- homepage: http://prawn.majesticseacreature.com
360
+ homepage: http://prawnpdf.org
442
361
  licenses:
443
362
  - PRAWN
444
363
  - GPL-2.0
445
364
  - GPL-3.0
446
365
  metadata: {}
447
- post_install_message:
366
+ post_install_message:
448
367
  rdoc_options: []
449
368
  require_paths:
450
369
  - lib
@@ -452,54 +371,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
452
371
  requirements:
453
372
  - - ">="
454
373
  - !ruby/object:Gem::Version
455
- version: 2.0.0
374
+ version: '2.5'
456
375
  required_rubygems_version: !ruby/object:Gem::Requirement
457
376
  requirements:
458
377
  - - ">="
459
378
  - !ruby/object:Gem::Version
460
379
  version: 1.3.6
461
380
  requirements: []
462
- rubyforge_project: prawn
463
- rubygems_version: 2.4.5.1
464
- signing_key:
381
+ rubygems_version: 3.1.4
382
+ signing_key:
465
383
  specification_version: 4
466
384
  summary: A fast and nimble PDF generator for Ruby
467
- test_files:
468
- - spec/annotations_spec.rb
469
- - spec/blend_mode_spec.rb
470
- - spec/bounding_box_spec.rb
471
- - spec/column_box_spec.rb
472
- - spec/destinations_spec.rb
473
- - spec/document_spec.rb
474
- - spec/font_metric_cache_spec.rb
475
- - spec/font_spec.rb
476
- - spec/formatted_text_arranger_spec.rb
477
- - spec/formatted_text_box_spec.rb
478
- - spec/formatted_text_fragment_spec.rb
479
- - spec/graphics_spec.rb
480
- - spec/grid_spec.rb
481
- - spec/image_handler_spec.rb
482
- - spec/images_spec.rb
483
- - spec/inline_formatted_text_parser_spec.rb
484
- - spec/jpg_spec.rb
485
- - spec/line_wrap_spec.rb
486
- - spec/measurement_units_spec.rb
487
- - spec/outline_spec.rb
488
- - spec/png_spec.rb
489
- - spec/reference_spec.rb
490
- - spec/repeater_spec.rb
491
- - spec/security_spec.rb
492
- - spec/soft_mask_spec.rb
493
- - spec/span_spec.rb
494
- - spec/stamp_spec.rb
495
- - spec/stroke_styles_spec.rb
496
- - spec/text_at_spec.rb
497
- - spec/text_box_spec.rb
498
- - spec/text_rendering_mode_spec.rb
499
- - spec/text_spacing_spec.rb
500
- - spec/text_spec.rb
501
- - spec/text_with_inline_formatting_spec.rb
502
- - spec/transformation_stack_spec.rb
503
- - spec/transparency_spec.rb
504
- - spec/view_spec.rb
505
- has_rdoc:
385
+ test_files: []