prawn 2.0.2 → 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.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/GPLv2 +20 -21
- data/Gemfile +3 -9
- data/Rakefile +20 -23
- data/lib/prawn.rb +37 -49
- data/lib/prawn/document.rb +181 -133
- data/lib/prawn/document/bounding_box.rb +41 -29
- data/lib/prawn/document/column_box.rb +7 -7
- data/lib/prawn/document/internals.rb +18 -8
- data/lib/prawn/document/span.rb +21 -16
- data/lib/prawn/encoding.rb +69 -68
- data/lib/prawn/errors.rb +12 -7
- data/lib/prawn/font.rb +115 -69
- data/lib/prawn/font_metric_cache.rb +14 -8
- data/lib/prawn/{font → fonts}/afm.rb +102 -68
- data/lib/prawn/{font → fonts}/dfont.rb +5 -11
- data/lib/prawn/fonts/otf.rb +11 -0
- data/lib/prawn/fonts/ttc.rb +36 -0
- data/lib/prawn/{font → fonts}/ttf.rb +87 -68
- data/lib/prawn/graphics.rb +120 -80
- data/lib/prawn/graphics/blend_mode.rb +65 -0
- data/lib/prawn/graphics/cap_style.rb +3 -3
- data/lib/prawn/graphics/color.rb +27 -25
- data/lib/prawn/graphics/dash.rb +23 -11
- data/lib/prawn/graphics/join_style.rb +9 -3
- data/lib/prawn/graphics/patterns.rb +197 -67
- data/lib/prawn/graphics/transformation.rb +17 -8
- data/lib/prawn/graphics/transparency.rb +17 -13
- data/lib/prawn/grid.rb +48 -47
- data/lib/prawn/image_handler.rb +5 -5
- data/lib/prawn/images.rb +39 -30
- data/lib/prawn/images/image.rb +2 -1
- data/lib/prawn/images/jpg.rb +28 -22
- data/lib/prawn/images/png.rb +107 -66
- data/lib/prawn/measurement_extensions.rb +10 -9
- data/lib/prawn/measurements.rb +19 -15
- data/lib/prawn/outline.rb +97 -77
- data/lib/prawn/repeater.rb +14 -10
- data/lib/prawn/security.rb +81 -61
- data/lib/prawn/security/arcfour.rb +2 -2
- data/lib/prawn/soft_mask.rb +26 -26
- data/lib/prawn/stamp.rb +20 -13
- data/lib/prawn/text.rb +68 -52
- data/lib/prawn/text/box.rb +11 -8
- data/lib/prawn/text/formatted.rb +5 -5
- data/lib/prawn/text/formatted/arranger.rb +78 -49
- data/lib/prawn/text/formatted/box.rb +134 -100
- data/lib/prawn/text/formatted/fragment.rb +11 -14
- data/lib/prawn/text/formatted/line_wrap.rb +121 -63
- data/lib/prawn/text/formatted/parser.rb +139 -117
- data/lib/prawn/text/formatted/wrap.rb +43 -31
- data/lib/prawn/transformation_stack.rb +44 -0
- data/lib/prawn/utilities.rb +7 -22
- data/lib/prawn/version.rb +2 -2
- data/lib/prawn/view.rb +17 -7
- data/manual/basic_concepts/adding_pages.rb +6 -7
- data/manual/basic_concepts/basic_concepts.rb +31 -22
- data/manual/basic_concepts/creation.rb +10 -11
- data/manual/basic_concepts/cursor.rb +4 -5
- data/manual/basic_concepts/measurement.rb +6 -7
- data/manual/basic_concepts/origin.rb +5 -6
- data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
- data/manual/basic_concepts/view.rb +22 -16
- data/manual/bounding_box/bounding_box.rb +29 -24
- data/manual/bounding_box/bounds.rb +11 -12
- data/manual/bounding_box/canvas.rb +4 -5
- data/manual/bounding_box/creation.rb +6 -7
- data/manual/bounding_box/indentation.rb +14 -15
- data/manual/bounding_box/nesting.rb +24 -17
- data/manual/bounding_box/russian_boxes.rb +14 -13
- data/manual/bounding_box/stretchy.rb +12 -13
- data/manual/contents.rb +28 -22
- data/manual/cover.rb +33 -28
- data/manual/document_and_page_options/background.rb +11 -13
- data/manual/document_and_page_options/document_and_page_options.rb +25 -20
- data/manual/document_and_page_options/metadata.rb +18 -16
- data/manual/document_and_page_options/page_margins.rb +18 -20
- data/manual/document_and_page_options/page_size.rb +13 -12
- data/manual/document_and_page_options/print_scaling.rb +17 -15
- data/manual/example_helper.rb +5 -4
- data/manual/graphics/blend_mode.rb +52 -0
- data/manual/graphics/circle_and_ellipse.rb +4 -5
- data/manual/graphics/color.rb +7 -9
- data/manual/graphics/common_lines.rb +7 -8
- data/manual/graphics/fill_and_stroke.rb +4 -5
- data/manual/graphics/fill_rules.rb +9 -10
- data/manual/graphics/gradients.rb +27 -21
- data/manual/graphics/graphics.rb +48 -39
- data/manual/graphics/helper.rb +12 -9
- data/manual/graphics/line_width.rb +8 -7
- data/manual/graphics/lines_and_curves.rb +7 -8
- data/manual/graphics/polygon.rb +6 -8
- data/manual/graphics/rectangle.rb +4 -5
- data/manual/graphics/rotate.rb +6 -7
- data/manual/graphics/scale.rb +14 -15
- data/manual/graphics/soft_masks.rb +4 -5
- data/manual/graphics/stroke_cap.rb +6 -7
- data/manual/graphics/stroke_dash.rb +11 -12
- data/manual/graphics/stroke_join.rb +5 -6
- data/manual/graphics/translate.rb +9 -10
- data/manual/graphics/transparency.rb +7 -8
- data/manual/how_to_read_this_manual.rb +6 -6
- data/manual/images/absolute_position.rb +6 -7
- data/manual/images/fit.rb +7 -8
- data/manual/images/horizontal.rb +9 -10
- data/manual/images/images.rb +28 -24
- data/manual/images/plain_image.rb +5 -6
- data/manual/images/scale.rb +9 -10
- data/manual/images/vertical.rb +13 -14
- data/manual/images/width_and_height.rb +10 -11
- data/manual/layout/boxes.rb +5 -6
- data/manual/layout/content.rb +7 -8
- data/manual/layout/layout.rb +18 -16
- data/manual/layout/simple_grid.rb +6 -7
- data/manual/outline/add_subsection_to.rb +20 -21
- data/manual/outline/insert_section_after.rb +15 -16
- data/manual/outline/outline.rb +21 -17
- data/manual/outline/sections_and_pages.rb +17 -18
- data/manual/repeatable_content/alternate_page_numbering.rb +21 -17
- data/manual/repeatable_content/page_numbering.rb +17 -16
- data/manual/repeatable_content/repeatable_content.rb +25 -19
- data/manual/repeatable_content/repeater.rb +14 -15
- data/manual/repeatable_content/stamp.rb +14 -15
- data/manual/security/encryption.rb +9 -10
- data/manual/security/permissions.rb +19 -14
- data/manual/security/security.rb +19 -16
- data/manual/table.rb +3 -3
- data/manual/text/alignment.rb +16 -17
- data/manual/text/color.rb +12 -11
- data/manual/text/column_box.rb +9 -10
- data/manual/text/fallback_fonts.rb +25 -21
- data/manual/text/font.rb +11 -12
- data/manual/text/font_size.rb +13 -14
- data/manual/text/font_style.rb +7 -8
- data/manual/text/formatted_callbacks.rb +25 -21
- data/manual/text/formatted_text.rb +33 -25
- data/manual/text/free_flowing_text.rb +20 -21
- data/manual/text/inline.rb +18 -19
- data/manual/text/kerning_and_character_spacing.rb +14 -15
- data/manual/text/leading.rb +7 -8
- data/manual/text/line_wrapping.rb +37 -18
- data/manual/text/paragraph_indentation.rb +13 -14
- data/manual/text/positioned_text.rb +15 -16
- data/manual/text/registering_families.rb +20 -21
- data/manual/text/rendering_and_color.rb +9 -10
- data/manual/text/right_to_left_text.rb +26 -19
- data/manual/text/rotation.rb +28 -23
- data/manual/text/single_usage.rb +8 -9
- data/manual/text/text.rb +57 -52
- data/manual/text/text_box_excess.rb +20 -17
- data/manual/text/text_box_extensions.rb +18 -15
- data/manual/text/text_box_overflow.rb +18 -19
- data/manual/text/utf8.rb +11 -12
- data/manual/text/win_ansi_charset.rb +21 -19
- data/prawn.gemspec +45 -33
- data/spec/extensions/encoding_helpers.rb +3 -3
- data/spec/prawn/document/bounding_box_spec.rb +546 -0
- data/spec/prawn/document/column_box_spec.rb +75 -0
- data/spec/prawn/document/security_spec.rb +176 -0
- data/spec/prawn/document_annotations_spec.rb +76 -0
- data/spec/prawn/document_destinations_spec.rb +15 -0
- data/spec/prawn/document_grid_spec.rb +99 -0
- data/spec/prawn/document_reference_spec.rb +27 -0
- data/spec/prawn/document_span_spec.rb +36 -0
- data/spec/prawn/document_spec.rb +802 -0
- data/spec/prawn/font_metric_cache_spec.rb +54 -0
- data/spec/prawn/font_spec.rb +542 -0
- data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
- data/spec/prawn/graphics/transparency_spec.rb +81 -0
- data/spec/prawn/graphics_spec.rb +837 -0
- data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
- data/spec/prawn/image_handler_spec.rb +53 -0
- data/spec/prawn/images/jpg_spec.rb +20 -0
- data/spec/prawn/images/png_spec.rb +283 -0
- data/spec/prawn/images_spec.rb +224 -0
- data/spec/prawn/measurements_extensions_spec.rb +24 -0
- data/spec/prawn/outline_spec.rb +412 -0
- data/spec/prawn/repeater_spec.rb +165 -0
- data/spec/prawn/soft_mask_spec.rb +74 -0
- data/spec/prawn/stamp_spec.rb +172 -0
- data/spec/prawn/text/box_spec.rb +1112 -0
- data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
- data/spec/prawn/text/formatted/box_spec.rb +846 -0
- data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
- data/spec/prawn/text/formatted/line_wrap_spec.rb +494 -0
- data/spec/prawn/text/formatted/parser_spec.rb +697 -0
- data/spec/prawn/text_draw_text_spec.rb +149 -0
- data/spec/prawn/text_rendering_mode_spec.rb +48 -0
- data/spec/prawn/text_spacing_spec.rb +95 -0
- data/spec/prawn/text_spec.rb +603 -0
- data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
- data/spec/prawn/transformation_stack_spec.rb +66 -0
- data/spec/prawn/view_spec.rb +63 -0
- data/spec/prawn_manual_spec.rb +35 -0
- data/spec/spec_helper.rb +19 -23
- metadata +145 -185
- metadata.gz.sig +4 -0
- data/data/images/16bit.alpha +0 -0
- data/data/images/16bit.color +0 -0
- data/data/images/16bit.png +0 -0
- data/data/images/arrow.png +0 -0
- data/data/images/arrow2.png +0 -0
- data/data/images/dice.alpha +0 -0
- data/data/images/dice.color +0 -0
- data/data/images/dice.png +0 -0
- data/data/images/dice_interlaced.png +0 -0
- data/data/images/fractal.jpg +0 -0
- data/data/images/indexed_color.dat +0 -0
- data/data/images/indexed_color.png +0 -0
- data/data/images/letterhead.jpg +0 -0
- data/data/images/license.md +0 -8
- data/data/images/page_white_text.alpha +0 -0
- data/data/images/page_white_text.color +0 -0
- data/data/images/page_white_text.png +0 -0
- data/data/images/pal_bk.png +0 -0
- data/data/images/pigs.jpg +0 -0
- data/data/images/prawn.png +0 -0
- data/data/images/ruport.png +0 -0
- data/data/images/ruport_data.dat +0 -0
- data/data/images/ruport_transparent.png +0 -0
- data/data/images/ruport_type0.png +0 -0
- data/data/images/stef.jpg +0 -0
- data/data/images/tru256.bmp +0 -0
- data/data/images/web-links.dat +0 -1
- data/data/images/web-links.png +0 -0
- data/data/pdfs/complex_template.pdf +0 -0
- data/data/pdfs/contains_ttf_font.pdf +0 -0
- data/data/pdfs/encrypted.pdf +0 -0
- data/data/pdfs/form.pdf +1 -819
- data/data/pdfs/hexagon.pdf +0 -61
- data/data/pdfs/indirect_reference.pdf +0 -86
- data/data/pdfs/multipage_template.pdf +0 -127
- data/data/pdfs/nested_pages.pdf +0 -118
- data/data/pdfs/page_without_mediabox.pdf +0 -193
- data/data/pdfs/resources_as_indirect_object.pdf +0 -83
- data/data/pdfs/two_hexagons.pdf +0 -90
- data/data/pdfs/version_1_6.pdf +0 -61
- data/data/shift_jis_text.txt +0 -1
- data/spec/acceptance/png.rb +0 -24
- data/spec/annotations_spec.rb +0 -67
- data/spec/bounding_box_spec.rb +0 -501
- data/spec/column_box_spec.rb +0 -59
- data/spec/destinations_spec.rb +0 -13
- data/spec/document_spec.rb +0 -742
- data/spec/extensions/mocha.rb +0 -45
- data/spec/font_metric_cache_spec.rb +0 -52
- data/spec/font_spec.rb +0 -475
- data/spec/formatted_text_arranger_spec.rb +0 -423
- data/spec/formatted_text_box_spec.rb +0 -716
- data/spec/formatted_text_fragment_spec.rb +0 -299
- data/spec/graphics_spec.rb +0 -666
- data/spec/grid_spec.rb +0 -95
- data/spec/image_handler_spec.rb +0 -53
- data/spec/images_spec.rb +0 -167
- data/spec/inline_formatted_text_parser_spec.rb +0 -568
- data/spec/jpg_spec.rb +0 -23
- data/spec/line_wrap_spec.rb +0 -366
- data/spec/measurement_units_spec.rb +0 -22
- data/spec/outline_spec.rb +0 -409
- data/spec/png_spec.rb +0 -235
- data/spec/reference_spec.rb +0 -25
- data/spec/repeater_spec.rb +0 -154
- data/spec/security_spec.rb +0 -151
- data/spec/soft_mask_spec.rb +0 -78
- data/spec/span_spec.rb +0 -43
- data/spec/stamp_spec.rb +0 -179
- data/spec/stroke_styles_spec.rb +0 -208
- data/spec/text_at_spec.rb +0 -142
- data/spec/text_box_spec.rb +0 -1038
- data/spec/text_rendering_mode_spec.rb +0 -45
- data/spec/text_spacing_spec.rb +0 -93
- data/spec/text_spec.rb +0 -549
- data/spec/text_with_inline_formatting_spec.rb +0 -35
- data/spec/transparency_spec.rb +0 -91
- data/spec/view_spec.rb +0 -42
@@ -1,20 +1,22 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
# (Optional; PDF 1.6) The page scaling option to be selected when a print dialog
|
4
|
-
# Valid values are <code>None</code>, which
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# Note: If the print dialog is suppressed and its parameters are provided directly by the application, the value of this entry should still be used.
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# (Optional; PDF 1.6) The page scaling option to be selected when a print dialog
|
4
|
+
# is displayed for this document. Valid values are <code>None</code>, which
|
5
|
+
# indicates that the print dialog should reflect no page scaling, and
|
6
|
+
# <code>AppDefault</code>, which indicates that applications should use the
|
7
|
+
# current print scaling. If this entry has an unrecognized value, applications
|
8
|
+
# should use the current print scaling. Default value: <code>AppDefault</code>.
|
10
9
|
#
|
10
|
+
# Note: If the print dialog is suppressed and its parameters are provided
|
11
|
+
# directly by the application, the value of this entry should still be used.
|
11
12
|
|
12
|
-
|
13
|
-
%w[.. example_helper]))
|
13
|
+
require_relative '../example_helper'
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
16
|
+
Prawn::Document.generate(
|
17
|
+
filename,
|
18
|
+
page_layout: :landscape, print_scaling: :none
|
18
19
|
) do
|
19
|
-
text
|
20
|
+
text 'When you print this document, the scale to fit in print preview '\
|
21
|
+
'should be disabled by default.'
|
20
22
|
end
|
data/manual/example_helper.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
require
|
3
|
+
$LOAD_PATH.unshift File.join(__dir__, '../lib')
|
4
|
+
require 'prawn'
|
5
|
+
require 'prawn/manual_builder'
|
5
6
|
|
6
7
|
Prawn::ManualBuilder.manual_dir = File.dirname(__FILE__)
|
7
|
-
Prawn::
|
8
|
+
Prawn::Fonts::AFM.hide_m17n_warning = true
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Blend modes can be used to change the way two layers (images, graphics,
|
4
|
+
# text, etc.) are blended together. The <code>blend_mode</code> method
|
5
|
+
# accepts a single blend mode or an array of blend modes. PDF viewers should
|
6
|
+
# blend the layers based on the first recognized blend mode.
|
7
|
+
#
|
8
|
+
# Valid blend modes in v1.4 of the PDF spec include :Normal, :Multiply, :Screen,
|
9
|
+
# :Overlay, :Darken, :Lighten, :ColorDodge, :ColorBurn, :HardLight, :SoftLight,
|
10
|
+
# :Difference, :Exclusion, :Hue, :Saturation, :Color, and :Luminosity.
|
11
|
+
|
12
|
+
require_relative '../example_helper'
|
13
|
+
|
14
|
+
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
16
|
+
start_new_page
|
17
|
+
|
18
|
+
# https://commons.wikimedia.org/wiki/File:Blend_modes_2.-bottom-layer.jpg#/media/File:Blend_modes_2.-bottom-layer.jpg
|
19
|
+
bottom_layer = "#{Prawn::DATADIR}/images/blend_modes_bottom_layer.jpg"
|
20
|
+
|
21
|
+
# https://commons.wikimedia.org/wiki/File:Blend_modes_1.-top-layer.jpg#/media/File:Blend_modes_1.-top-layer.jpg
|
22
|
+
top_layer = "#{Prawn::DATADIR}/images/blend_modes_top_layer.jpg"
|
23
|
+
|
24
|
+
blend_modes = %i[
|
25
|
+
Normal Multiply Screen Overlay Darken Lighten ColorDodge
|
26
|
+
ColorBurn HardLight SoftLight Difference Exclusion Hue
|
27
|
+
Saturation Color Luminosity
|
28
|
+
]
|
29
|
+
blend_modes.each_with_index do |blend_mode, index|
|
30
|
+
x = index % 4 * 135
|
31
|
+
y = cursor - (index / 4 * 200)
|
32
|
+
|
33
|
+
image bottom_layer, at: [x, y], fit: [125, 125]
|
34
|
+
blend_mode(blend_mode) do
|
35
|
+
image top_layer, at: [x, y], fit: [125, 125]
|
36
|
+
end
|
37
|
+
|
38
|
+
y -= 130
|
39
|
+
|
40
|
+
fill_color '009ddc'
|
41
|
+
fill_rectangle [x, y], 75, 25
|
42
|
+
blend_mode(blend_mode) do
|
43
|
+
fill_color 'fdb827'
|
44
|
+
fill_rectangle [x + 50, y], 75, 25
|
45
|
+
end
|
46
|
+
|
47
|
+
y -= 30
|
48
|
+
|
49
|
+
fill_color '000000'
|
50
|
+
text_box blend_mode.to_s, at: [x, y]
|
51
|
+
end
|
52
|
+
end
|
@@ -1,14 +1,13 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# To define a <code>circle</code> all you need is the center point and the
|
4
4
|
# radius.
|
5
5
|
#
|
6
6
|
# To define an <code>ellipse</code> you provide the center point and two radii
|
7
7
|
# (or axes) values. If the second radius value is ommitted, both radii will be
|
8
8
|
# equal and you will end up drawing a circle.
|
9
|
-
|
10
|
-
|
11
|
-
%w[.. example_helper]))
|
9
|
+
|
10
|
+
require_relative '../example_helper'
|
12
11
|
|
13
12
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
14
13
|
Prawn::ManualBuilder::Example.generate(filename) do
|
data/manual/graphics/color.rb
CHANGED
@@ -1,19 +1,17 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# We can change the stroke and fill colors providing an HTML rgb 6 digit color
|
4
4
|
# code string ("AB1234") or 4 values for CMYK.
|
5
|
-
|
6
|
-
|
7
|
-
%w[.. example_helper]))
|
5
|
+
|
6
|
+
require_relative '../example_helper'
|
8
7
|
|
9
8
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
10
9
|
Prawn::ManualBuilder::Example.generate(filename) do
|
11
10
|
stroke_axis
|
12
11
|
|
13
|
-
# Fill with Yellow using RGB
|
14
|
-
fill_color
|
15
|
-
fill_polygon [50, 150], [150, 200], [250, 150],
|
16
|
-
[250, 50], [150, 0], [50, 50]
|
12
|
+
# Fill with Yellow using RGB (Unlike css, there is no leading #)
|
13
|
+
fill_color 'FFFFCC'
|
14
|
+
fill_polygon [50, 150], [150, 200], [250, 150], [250, 50], [150, 0], [50, 50]
|
17
15
|
|
18
16
|
# Stroke with Purple using CMYK
|
19
17
|
stroke_color 50, 100, 0, 0
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Prawn provides helpers for drawing some commonly used lines:
|
4
4
|
#
|
5
5
|
# <code>vertical_line</code> and <code>horizontal_line</code> do just what their
|
@@ -8,23 +8,22 @@
|
|
8
8
|
#
|
9
9
|
# <code>horizontal_rule</code> draws a horizontal line on the current bounding
|
10
10
|
# box from border to border, using the current y position.
|
11
|
-
|
12
|
-
|
13
|
-
%w[.. example_helper]))
|
11
|
+
|
12
|
+
require_relative '../example_helper'
|
14
13
|
|
15
14
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
16
15
|
Prawn::ManualBuilder::Example.generate(filename) do
|
17
16
|
stroke_axis
|
18
17
|
|
19
|
-
stroke_color
|
18
|
+
stroke_color 'ff0000'
|
20
19
|
|
21
20
|
stroke do
|
22
21
|
# just lower the current y position
|
23
22
|
move_down 50
|
24
23
|
horizontal_rule
|
25
24
|
|
26
|
-
vertical_line 100, 300, :
|
25
|
+
vertical_line 100, 300, at: 50
|
27
26
|
|
28
|
-
horizontal_line 200, 500, :
|
27
|
+
horizontal_line 200, 500, at: 150
|
29
28
|
end
|
30
29
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# There are two drawing primitives in Prawn: <code>fill</code> and
|
4
4
|
# <code>stroke</code>.
|
5
5
|
#
|
@@ -17,9 +17,8 @@
|
|
17
17
|
# Most of the methods which define drawing paths have methods of the same name
|
18
18
|
# starting with stroke_ and fill_ which create the drawing path and then stroke
|
19
19
|
# or fill it.
|
20
|
-
|
21
|
-
|
22
|
-
%w[.. example_helper]))
|
20
|
+
|
21
|
+
require_relative '../example_helper'
|
23
22
|
|
24
23
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
25
24
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Prawn's fill operators (<code>fill</code> and <code>fill_and_stroke</code>
|
4
4
|
# both accept a <code>:fill_rule</code> option. These rules determine which
|
5
5
|
# parts of the page are counted as "inside" vs. "outside" the path. There are
|
@@ -15,9 +15,8 @@
|
|
15
15
|
#
|
16
16
|
# The differences between the fill rules only come into play with complex
|
17
17
|
# paths; they are identical for simple shapes.
|
18
|
-
|
19
|
-
|
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
|
@@ -26,13 +25,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
26
25
|
stroke_color 'ff0000'
|
27
26
|
line_width 2
|
28
27
|
|
29
|
-
text_box
|
30
|
-
:
|
31
|
-
:
|
28
|
+
text_box 'Nonzero Winding Number', at: [50, 215],
|
29
|
+
width: 170,
|
30
|
+
align: :center
|
32
31
|
polygon(*pentagram.map { |x, y| [x + 50, y] })
|
33
32
|
fill_and_stroke
|
34
33
|
|
35
|
-
text_box
|
34
|
+
text_box 'Even-Odd', at: [330, 215], width: 170, align: :center
|
36
35
|
polygon(*pentagram.map { |x, y| [x + 330, y] })
|
37
|
-
fill_and_stroke(:
|
36
|
+
fill_and_stroke(fill_rule: :even_odd)
|
38
37
|
end
|
@@ -1,37 +1,43 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Note that because of the way PDF renders radial gradients in order to get
|
4
4
|
# solid fill your start circle must be fully inside your end circle.
|
5
5
|
# Otherwise you will get triangle fill like illustrated in the example below.
|
6
6
|
|
7
|
-
|
8
|
-
%w[.. example_helper]))
|
7
|
+
require_relative '../example_helper'
|
9
8
|
|
10
9
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
11
10
|
Prawn::ManualBuilder::Example.generate(filename) do
|
12
|
-
stroke_axis
|
13
11
|
self.line_width = 10
|
14
12
|
|
15
|
-
|
16
|
-
|
13
|
+
# Linear Gradients
|
14
|
+
fill_gradient [0, 250], [100, 150], 'ff0000', '0000ff'
|
15
|
+
fill_rectangle [0, 250], 100, 100
|
16
|
+
|
17
|
+
stroke_gradient [150, 150], [250, 250], '00ffff', 'ffff00'
|
18
|
+
stroke_rectangle [150, 250], 100, 100
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
fill_gradient [300, 250], [400, 150], 'ff0000', '0000ff'
|
21
|
+
stroke_gradient [300, 150], [400, 250], '00ffff', 'ffff00'
|
22
|
+
fill_and_stroke_rectangle [300, 250], 100, 100
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
+
rotate 45, origin: [500, 200] do
|
25
|
+
stops = { 0 => 'ff0000', 0.6 => '999900', 0.8 => '00cc00', 1 => '4444ff' }
|
26
|
+
fill_gradient from: [460, 240], to: [540, 160], stops: stops
|
27
|
+
fill_rectangle [460, 240], 80, 80
|
28
|
+
end
|
24
29
|
|
25
|
-
|
26
|
-
|
30
|
+
# Radial gradients
|
31
|
+
fill_gradient [50, 50], 0, [50, 50], 70.71, 'ff0000', '0000ff'
|
32
|
+
fill_rectangle [0, 100], 100, 100
|
27
33
|
|
28
|
-
stroke_gradient [
|
29
|
-
stroke_rectangle [
|
34
|
+
stroke_gradient [200, 50], 45, [200, 50], 70.71, '00ffff', 'ffff00'
|
35
|
+
stroke_rectangle [150, 100], 100, 100
|
30
36
|
|
31
|
-
stroke_gradient [
|
32
|
-
fill_gradient [
|
33
|
-
fill_and_stroke_rectangle [
|
37
|
+
stroke_gradient [350, 50], 45, [350, 50], 70.71, '00ffff', 'ffff00'
|
38
|
+
fill_gradient [350, 50], 0, [350, 50], 70.71, 'ff0000', '0000ff'
|
39
|
+
fill_and_stroke_rectangle [300, 100], 100, 100
|
34
40
|
|
35
|
-
fill_gradient [500,
|
36
|
-
fill_rectangle [
|
41
|
+
fill_gradient [500, 100], 50, [500, 0], 0, 'ff0000', '0000ff'
|
42
|
+
fill_rectangle [450, 100], 100, 100
|
37
43
|
end
|
data/manual/graphics/graphics.rb
CHANGED
@@ -1,55 +1,64 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Examples for the Graphics package.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Prawn::ManualBuilder::Example.generate(
|
9
|
-
package
|
10
|
-
p.section
|
11
|
-
s.example
|
12
|
-
s.example
|
4
|
+
|
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 'graphics' do |p|
|
10
|
+
p.section 'Basics' do |s|
|
11
|
+
s.example 'helper'
|
12
|
+
s.example 'fill_and_stroke'
|
13
13
|
end
|
14
14
|
|
15
|
-
p.section
|
16
|
-
s.example
|
17
|
-
s.example
|
18
|
-
s.example
|
19
|
-
s.example
|
20
|
-
s.example
|
15
|
+
p.section 'Shapes' do |s|
|
16
|
+
s.example 'lines_and_curves'
|
17
|
+
s.example 'common_lines'
|
18
|
+
s.example 'rectangle'
|
19
|
+
s.example 'polygon'
|
20
|
+
s.example 'circle_and_ellipse'
|
21
21
|
end
|
22
22
|
|
23
|
-
p.section
|
24
|
-
s.example
|
25
|
-
s.example
|
26
|
-
s.example
|
27
|
-
s.example
|
28
|
-
s.example
|
29
|
-
s.example
|
30
|
-
s.example
|
31
|
-
s.example
|
32
|
-
s.example
|
23
|
+
p.section 'Fill and Stroke settings' do |s|
|
24
|
+
s.example 'line_width'
|
25
|
+
s.example 'stroke_cap'
|
26
|
+
s.example 'stroke_join'
|
27
|
+
s.example 'stroke_dash'
|
28
|
+
s.example 'color'
|
29
|
+
s.example 'gradients'
|
30
|
+
s.example 'transparency'
|
31
|
+
s.example 'soft_masks'
|
32
|
+
s.example 'blend_mode'
|
33
|
+
s.example 'fill_rules'
|
33
34
|
end
|
34
35
|
|
35
|
-
p.section
|
36
|
-
s.example
|
37
|
-
s.example
|
38
|
-
s.example
|
36
|
+
p.section 'Transformations' do |s|
|
37
|
+
s.example 'rotate'
|
38
|
+
s.example 'translate'
|
39
|
+
s.example 'scale'
|
39
40
|
end
|
40
41
|
|
41
42
|
p.intro do
|
42
|
-
prose
|
43
|
+
prose <<-TEXT
|
44
|
+
Here we show all the drawing methods provided by Prawn. Use them to draw
|
45
|
+
the most beautiful imaginable things.
|
43
46
|
|
44
|
-
|
47
|
+
Most of the content that you'll add to your pdf document will use the
|
48
|
+
graphics package. Even text is rendered on a page just like a rectangle
|
49
|
+
so even if you never use any of the shapes described here you should at
|
50
|
+
least read the basic examples.
|
45
51
|
|
46
|
-
|
52
|
+
The examples show:
|
53
|
+
TEXT
|
47
54
|
|
48
|
-
list(
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
55
|
+
list(
|
56
|
+
'All the possible ways that you can fill or stroke shapes on a page',
|
57
|
+
'How to draw all the shapes that Prawn has to offer from a measly '\
|
58
|
+
'line to a mighty polygon or ellipse',
|
59
|
+
'The configuration options for stroking lines and filling shapes',
|
60
|
+
'How to apply transformations to your drawing space'
|
61
|
+
)
|
53
62
|
end
|
54
63
|
end
|
55
64
|
end
|
data/manual/graphics/helper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# To produce this manual we use the <code>stroke_axis</code> helper method
|
4
4
|
# within the examples.
|
5
5
|
#
|
@@ -10,15 +10,18 @@
|
|
10
10
|
# Note that the examples define a custom <code>:height</code> option so that
|
11
11
|
# only the example canvas is used (as seen with the output of the first line of
|
12
12
|
# the example code).
|
13
|
-
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
13
|
+
|
14
|
+
require_relative '../example_helper'
|
16
15
|
|
17
16
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
17
|
Prawn::ManualBuilder::Example.generate(filename) do
|
19
18
|
stroke_axis
|
20
|
-
stroke_axis(
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
stroke_axis(
|
20
|
+
at: [70, 70], height: 200, step_length: 50,
|
21
|
+
negative_axes_length: 5, color: '0000FF'
|
22
|
+
)
|
23
|
+
stroke_axis(
|
24
|
+
at: [140, 140], width: 200, height: cursor.to_i - 140,
|
25
|
+
step_length: 20, negative_axes_length: 40, color: 'FF0000'
|
26
|
+
)
|
24
27
|
end
|