prawn 2.1.0 → 2.2.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 +4 -4
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/Gemfile +1 -9
- data/Rakefile +12 -22
- data/lib/prawn.rb +29 -48
- data/lib/prawn/document.rb +148 -123
- data/lib/prawn/document/bounding_box.rb +33 -26
- data/lib/prawn/document/column_box.rb +5 -7
- data/lib/prawn/document/internals.rb +6 -6
- data/lib/prawn/document/span.rb +20 -17
- data/lib/prawn/encoding.rb +65 -67
- data/lib/prawn/errors.rb +10 -7
- data/lib/prawn/font.rb +78 -62
- data/lib/prawn/font/afm.rb +93 -66
- data/lib/prawn/font/dfont.rb +2 -10
- data/lib/prawn/font/ttc.rb +34 -0
- data/lib/prawn/font/ttf.rb +73 -65
- data/lib/prawn/font_metric_cache.rb +9 -8
- data/lib/prawn/graphics.rb +110 -70
- data/lib/prawn/graphics/blend_mode.rb +7 -8
- data/lib/prawn/graphics/cap_style.rb +2 -4
- data/lib/prawn/graphics/color.rb +23 -26
- data/lib/prawn/graphics/dash.rb +22 -12
- data/lib/prawn/graphics/join_style.rb +8 -4
- data/lib/prawn/graphics/patterns.rb +185 -96
- data/lib/prawn/graphics/transformation.rb +11 -9
- data/lib/prawn/graphics/transparency.rb +15 -13
- data/lib/prawn/grid.rb +20 -20
- data/lib/prawn/image_handler.rb +4 -6
- data/lib/prawn/images.rb +22 -15
- data/lib/prawn/images/image.rb +0 -1
- data/lib/prawn/images/jpg.rb +26 -22
- data/lib/prawn/images/png.rb +60 -57
- data/lib/prawn/measurement_extensions.rb +8 -9
- data/lib/prawn/measurements.rb +14 -15
- data/lib/prawn/outline.rb +96 -78
- data/lib/prawn/repeater.rb +12 -10
- data/lib/prawn/security.rb +66 -48
- data/lib/prawn/security/arcfour.rb +1 -3
- data/lib/prawn/soft_mask.rb +23 -25
- data/lib/prawn/stamp.rb +16 -12
- data/lib/prawn/text.rb +59 -45
- data/lib/prawn/text/box.rb +9 -8
- data/lib/prawn/text/formatted.rb +4 -6
- data/lib/prawn/text/formatted/arranger.rb +51 -30
- data/lib/prawn/text/formatted/box.rb +112 -88
- data/lib/prawn/text/formatted/fragment.rb +10 -15
- data/lib/prawn/text/formatted/line_wrap.rb +118 -61
- data/lib/prawn/text/formatted/parser.rb +134 -110
- data/lib/prawn/text/formatted/wrap.rb +42 -32
- data/lib/prawn/transformation_stack.rb +3 -4
- data/lib/prawn/utilities.rb +6 -21
- data/lib/prawn/version.rb +1 -3
- data/lib/prawn/view.rb +4 -2
- data/manual/basic_concepts/adding_pages.rb +4 -7
- data/manual/basic_concepts/basic_concepts.rb +29 -22
- data/manual/basic_concepts/creation.rb +8 -11
- data/manual/basic_concepts/cursor.rb +2 -5
- data/manual/basic_concepts/measurement.rb +3 -6
- data/manual/basic_concepts/origin.rb +3 -6
- data/manual/basic_concepts/other_cursor_helpers.rb +9 -12
- data/manual/basic_concepts/view.rb +20 -16
- data/manual/bounding_box/bounding_box.rb +27 -24
- data/manual/bounding_box/bounds.rb +9 -12
- data/manual/bounding_box/canvas.rb +2 -5
- data/manual/bounding_box/creation.rb +4 -7
- data/manual/bounding_box/indentation.rb +12 -15
- data/manual/bounding_box/nesting.rb +22 -17
- data/manual/bounding_box/russian_boxes.rb +8 -9
- data/manual/bounding_box/stretchy.rb +10 -13
- data/manual/contents.rb +26 -22
- data/manual/cover.rb +22 -20
- data/manual/document_and_page_options/background.rb +9 -13
- data/manual/document_and_page_options/document_and_page_options.rb +23 -20
- data/manual/document_and_page_options/metadata.rb +16 -16
- data/manual/document_and_page_options/page_margins.rb +16 -20
- data/manual/document_and_page_options/page_size.rb +11 -12
- data/manual/document_and_page_options/print_scaling.rb +15 -15
- data/manual/example_helper.rb +2 -4
- data/manual/graphics/blend_mode.rb +10 -9
- data/manual/graphics/circle_and_ellipse.rb +2 -5
- data/manual/graphics/color.rb +5 -9
- data/manual/graphics/common_lines.rb +5 -8
- data/manual/graphics/fill_and_stroke.rb +2 -5
- data/manual/graphics/fill_rules.rb +7 -10
- data/manual/graphics/gradients.rb +25 -21
- data/manual/graphics/graphics.rb +49 -43
- data/manual/graphics/helper.rb +10 -9
- data/manual/graphics/line_width.rb +5 -7
- data/manual/graphics/lines_and_curves.rb +5 -8
- data/manual/graphics/polygon.rb +4 -8
- data/manual/graphics/rectangle.rb +2 -5
- data/manual/graphics/rotate.rb +4 -7
- data/manual/graphics/scale.rb +12 -15
- data/manual/graphics/soft_masks.rb +1 -4
- data/manual/graphics/stroke_cap.rb +3 -6
- data/manual/graphics/stroke_dash.rb +9 -12
- data/manual/graphics/stroke_join.rb +2 -5
- data/manual/graphics/translate.rb +7 -10
- data/manual/graphics/transparency.rb +5 -8
- data/manual/how_to_read_this_manual.rb +4 -6
- data/manual/images/absolute_position.rb +4 -7
- data/manual/images/fit.rb +5 -8
- data/manual/images/horizontal.rb +6 -9
- data/manual/images/images.rb +25 -23
- data/manual/images/plain_image.rb +3 -6
- data/manual/images/scale.rb +7 -10
- data/manual/images/vertical.rb +10 -13
- data/manual/images/width_and_height.rb +8 -11
- data/manual/layout/boxes.rb +3 -6
- data/manual/layout/content.rb +5 -8
- data/manual/layout/layout.rb +16 -16
- data/manual/layout/simple_grid.rb +4 -7
- data/manual/outline/add_subsection_to.rb +18 -21
- data/manual/outline/insert_section_after.rb +13 -16
- data/manual/outline/outline.rb +19 -17
- data/manual/outline/sections_and_pages.rb +15 -18
- data/manual/repeatable_content/alternate_page_numbering.rb +19 -17
- data/manual/repeatable_content/page_numbering.rb +15 -16
- data/manual/repeatable_content/repeatable_content.rb +23 -19
- data/manual/repeatable_content/repeater.rb +12 -15
- data/manual/repeatable_content/stamp.rb +12 -15
- data/manual/security/encryption.rb +7 -10
- data/manual/security/permissions.rb +17 -14
- data/manual/security/security.rb +17 -16
- data/manual/table.rb +2 -4
- data/manual/text/alignment.rb +14 -17
- data/manual/text/color.rb +10 -11
- data/manual/text/column_box.rb +5 -8
- data/manual/text/fallback_fonts.rb +23 -21
- data/manual/text/font.rb +9 -12
- data/manual/text/font_size.rb +11 -14
- data/manual/text/font_style.rb +4 -7
- data/manual/text/formatted_callbacks.rb +23 -21
- data/manual/text/formatted_text.rb +31 -25
- data/manual/text/free_flowing_text.rb +18 -21
- data/manual/text/inline.rb +16 -19
- data/manual/text/kerning_and_character_spacing.rb +12 -15
- data/manual/text/leading.rb +5 -8
- data/manual/text/line_wrapping.rb +33 -17
- data/manual/text/paragraph_indentation.rb +11 -14
- data/manual/text/positioned_text.rb +13 -16
- data/manual/text/registering_families.rb +16 -19
- data/manual/text/rendering_and_color.rb +7 -10
- data/manual/text/right_to_left_text.rb +24 -19
- data/manual/text/rotation.rb +26 -23
- data/manual/text/single_usage.rb +6 -9
- data/manual/text/text.rb +56 -52
- data/manual/text/text_box_excess.rb +18 -17
- data/manual/text/text_box_extensions.rb +16 -15
- data/manual/text/text_box_overflow.rb +15 -18
- data/manual/text/utf8.rb +9 -12
- data/manual/text/win_ansi_charset.rb +18 -19
- data/prawn.gemspec +37 -27
- data/spec/extensions/encoding_helpers.rb +0 -2
- data/spec/manual_spec.rb +33 -0
- data/spec/prawn/document/bounding_box_spec.rb +546 -0
- data/spec/prawn/document/column_box_spec.rb +73 -0
- data/spec/prawn/document/security_spec.rb +173 -0
- data/spec/prawn/document_annotations_spec.rb +74 -0
- data/spec/prawn/document_destinations_spec.rb +13 -0
- data/spec/prawn/document_grid_spec.rb +96 -0
- data/spec/prawn/document_reference_spec.rb +25 -0
- data/spec/prawn/document_span_spec.rb +34 -0
- data/spec/prawn/document_spec.rb +751 -0
- data/spec/prawn/font_metric_cache_spec.rb +52 -0
- data/spec/prawn/font_spec.rb +513 -0
- data/spec/prawn/graphics/blend_mode_spec.rb +61 -0
- data/spec/prawn/graphics/transparency_spec.rb +79 -0
- data/spec/prawn/graphics_spec.rb +817 -0
- data/spec/prawn/graphics_stroke_styles_spec.rb +227 -0
- data/spec/{image_handler_spec.rb → prawn/image_handler_spec.rb} +13 -15
- data/spec/prawn/images/jpg_spec.rb +18 -0
- data/spec/prawn/images/png_spec.rb +281 -0
- data/spec/prawn/images_spec.rb +170 -0
- data/spec/prawn/measurements_extensions_spec.rb +22 -0
- data/spec/prawn/outline_spec.rb +408 -0
- data/spec/prawn/repeater_spec.rb +163 -0
- data/spec/prawn/soft_mask_spec.rb +72 -0
- data/spec/prawn/stamp_spec.rb +168 -0
- data/spec/prawn/text/box_spec.rb +1113 -0
- data/spec/prawn/text/formatted/arranger_spec.rb +464 -0
- data/spec/prawn/text/formatted/box_spec.rb +825 -0
- data/spec/prawn/text/formatted/fragment_spec.rb +341 -0
- data/spec/prawn/text/formatted/line_wrap_spec.rb +491 -0
- data/spec/prawn/text/formatted/parser_spec.rb +667 -0
- data/spec/prawn/text_draw_text_spec.rb +147 -0
- data/spec/prawn/text_rendering_mode_spec.rb +42 -0
- data/spec/prawn/text_spacing_spec.rb +93 -0
- data/spec/prawn/text_spec.rb +601 -0
- data/spec/prawn/text_with_inline_formatting_spec.rb +33 -0
- data/spec/{transformation_stack_spec.rb → prawn/transformation_stack_spec.rb} +21 -20
- data/spec/prawn/view_spec.rb +45 -0
- data/spec/spec_helper.rb +16 -16
- metadata +96 -151
- metadata.gz.sig +1 -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/blend_modes_bottom_layer.jpg +0 -0
- data/data/images/blend_modes_top_layer.jpg +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/indexed_transparency.png +0 -0
- data/data/images/indexed_transparency_alpha.dat +0 -0
- data/data/images/indexed_transparency_color.dat +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/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_spec.rb +0 -35
- data/spec/annotations_spec.rb +0 -67
- data/spec/blend_mode_spec.rb +0 -71
- 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 -738
- data/spec/font_metric_cache_spec.rb +0 -52
- data/spec/font_spec.rb +0 -475
- data/spec/formatted_text_arranger_spec.rb +0 -452
- data/spec/formatted_text_box_spec.rb +0 -716
- data/spec/formatted_text_fragment_spec.rb +0 -299
- data/spec/graphics_spec.rb +0 -705
- data/spec/grid_spec.rb +0 -95
- 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 -257
- 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 -1042
- data/spec/text_rendering_mode_spec.rb +0 -45
- data/spec/text_spacing_spec.rb +0 -93
- data/spec/text_spec.rb +0 -543
- 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,37 +1,39 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Prawn enables the declaration of fallback fonts for those glyphs that may not
|
4
2
|
# be present in the desired font. Use the <code>:fallback_fonts</code> option
|
5
3
|
# with any of the text or text box methods, or set fallback_fonts document-wide.
|
6
|
-
|
7
|
-
|
8
|
-
%w[.. example_helper]))
|
4
|
+
|
5
|
+
require_relative '../example_helper'
|
9
6
|
|
10
7
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
11
8
|
Prawn::ManualBuilder::Example.generate(filename) do
|
12
9
|
file = "#{Prawn::DATADIR}/fonts/gkai00mp.ttf"
|
13
|
-
font_families[
|
14
|
-
:
|
10
|
+
font_families['Kai'] = {
|
11
|
+
normal: { file: file, font: 'Kai' }
|
15
12
|
}
|
16
13
|
|
17
14
|
file = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
|
18
|
-
font_families[
|
19
|
-
:
|
15
|
+
font_families['Panic Sans'] = {
|
16
|
+
normal: { file: file, font: 'PanicSans' }
|
20
17
|
}
|
21
18
|
|
22
|
-
font(
|
23
|
-
text(
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
font('Panic Sans') do
|
20
|
+
text(
|
21
|
+
'When fallback fonts are included, each glyph will be rendered ' \
|
22
|
+
'using the first font that includes the glyph, starting with the ' \
|
23
|
+
'current font and then moving through the fallback fonts from left ' \
|
24
|
+
'to right.' \
|
25
|
+
"\n\n" \
|
26
|
+
"hello ƒ 你好\n再见 ƒ goodbye",
|
27
|
+
fallback_fonts: ['Times-Roman', 'Kai']
|
28
|
+
)
|
30
29
|
end
|
31
30
|
move_down 20
|
32
31
|
|
33
|
-
formatted_text(
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
formatted_text(
|
33
|
+
[
|
34
|
+
{ text: 'Fallback fonts can even override' },
|
35
|
+
{ text: 'fragment fonts (你好)', font: 'Times-Roman' }
|
36
|
+
],
|
37
|
+
fallback_fonts: ['Times-Roman', 'Kai']
|
38
|
+
)
|
37
39
|
end
|
data/manual/text/font.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>font</code> method can be used in three different ways.
|
4
2
|
#
|
5
3
|
# If we don't pass it any arguments it will return the current font being used
|
@@ -12,30 +10,29 @@
|
|
12
10
|
# specified font will only be used to render text inside the block.
|
13
11
|
#
|
14
12
|
# The default font is Helvetica.
|
15
|
-
|
16
|
-
|
17
|
-
%w[.. example_helper]))
|
13
|
+
|
14
|
+
require_relative '../example_helper'
|
18
15
|
|
19
16
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
20
17
|
Prawn::ManualBuilder::Example.generate(filename) do
|
21
18
|
text "Let's see which font we are using: #{font.inspect}"
|
22
19
|
|
23
20
|
move_down 20
|
24
|
-
font
|
25
|
-
text
|
21
|
+
font 'Times-Roman'
|
22
|
+
text 'Written in Times.'
|
26
23
|
|
27
24
|
move_down 20
|
28
|
-
font(
|
29
|
-
text
|
25
|
+
font('Courier') do
|
26
|
+
text 'Written in Courier because we are inside the block.'
|
30
27
|
end
|
31
28
|
|
32
29
|
move_down 20
|
33
|
-
text
|
30
|
+
text 'Written in Times again as we left the previous block.'
|
34
31
|
|
35
32
|
move_down 20
|
36
33
|
text "Let's see which font we are using again: #{font.inspect}"
|
37
34
|
|
38
35
|
move_down 20
|
39
|
-
font
|
40
|
-
text
|
36
|
+
font 'Helvetica'
|
37
|
+
text 'Back to normal.'
|
41
38
|
end
|
data/manual/text/font_size.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>font_size</code> method works just like the <code>font</code>
|
4
2
|
# method.
|
5
3
|
#
|
@@ -10,9 +8,8 @@
|
|
10
8
|
# option to the text methods.
|
11
9
|
#
|
12
10
|
# The default font size is <code>12</code>.
|
13
|
-
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
11
|
+
|
12
|
+
require_relative '../example_helper'
|
16
13
|
|
17
14
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
15
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -20,26 +17,26 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
20
17
|
|
21
18
|
move_down 10
|
22
19
|
font_size 16
|
23
|
-
text
|
20
|
+
text 'Yeah, something bigger!'
|
24
21
|
|
25
22
|
move_down 10
|
26
|
-
font_size(25) { text
|
23
|
+
font_size(25) { text 'Even bigger!' }
|
27
24
|
|
28
25
|
move_down 10
|
29
|
-
text
|
26
|
+
text 'Back to 16 again.'
|
30
27
|
|
31
28
|
move_down 10
|
32
|
-
text
|
29
|
+
text 'Single line on 20 using the :size option.', size: 20
|
33
30
|
|
34
31
|
move_down 10
|
35
|
-
text
|
32
|
+
text 'Back to 16 once more.'
|
36
33
|
|
37
34
|
move_down 10
|
38
|
-
font(
|
39
|
-
text
|
35
|
+
font('Courier', size: 10) do
|
36
|
+
text 'Yeah, using Courier 10 courtesy of the font method.'
|
40
37
|
end
|
41
38
|
|
42
39
|
move_down 10
|
43
|
-
font(
|
44
|
-
text
|
40
|
+
font('Helvetica', size: 12)
|
41
|
+
text 'Back to normal'
|
45
42
|
end
|
data/manual/text/font_style.rb
CHANGED
@@ -1,22 +1,19 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Most font families come with some styles other than normal. Most common are
|
4
2
|
# <code>bold</code>, <code>italic</code> and <code>bold_italic</code>.
|
5
3
|
#
|
6
4
|
# The style can be set the using the <code>:style</code> option, with either the
|
7
5
|
# <code>font</code> method which will set the font and style for rest of the
|
8
6
|
# document, or with the inline text methods.
|
9
|
-
|
10
|
-
|
11
|
-
%w[.. example_helper]))
|
7
|
+
|
8
|
+
require_relative '../example_helper'
|
12
9
|
|
13
10
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
14
11
|
Prawn::ManualBuilder::Example.generate(filename) do
|
15
|
-
[
|
12
|
+
['Courier', 'Helvetica', 'Times-Roman'].each do |example_font|
|
16
13
|
move_down 20
|
17
14
|
|
18
15
|
[:bold, :bold_italic, :italic, :normal].each do |style|
|
19
|
-
font example_font, :
|
16
|
+
font example_font, style: style
|
20
17
|
text "I'm writing in #{example_font} (#{style})"
|
21
18
|
end
|
22
19
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>:callback</code> option is also available for the formatted text
|
4
2
|
# methods.
|
5
3
|
#
|
@@ -10,37 +8,40 @@
|
|
10
8
|
#
|
11
9
|
# This example defines two new callback classes and provide callback objects
|
12
10
|
# for the formatted_text
|
13
|
-
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
11
|
+
|
12
|
+
require_relative '../example_helper'
|
16
13
|
|
17
14
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
15
|
Prawn::ManualBuilder::Example.generate(filename) do
|
19
16
|
class HighlightCallback
|
20
17
|
def initialize(options)
|
21
|
-
@color
|
18
|
+
@color = options[:color]
|
22
19
|
@document = options[:document]
|
23
20
|
end
|
24
21
|
|
25
22
|
def render_behind(fragment)
|
26
|
-
original_color
|
23
|
+
original_color = @document.fill_color
|
27
24
|
@document.fill_color = @color
|
28
|
-
@document.fill_rectangle(
|
29
|
-
|
30
|
-
|
25
|
+
@document.fill_rectangle(
|
26
|
+
fragment.top_left,
|
27
|
+
fragment.width,
|
28
|
+
fragment.height
|
29
|
+
)
|
31
30
|
@document.fill_color = original_color
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
35
34
|
class ConnectedBorderCallback
|
36
35
|
def initialize(options)
|
37
|
-
@radius
|
36
|
+
@radius = options[:radius]
|
38
37
|
@document = options[:document]
|
39
38
|
end
|
40
39
|
|
41
40
|
def render_in_front(fragment)
|
42
|
-
@document.stroke_polygon(
|
43
|
-
|
41
|
+
@document.stroke_polygon(
|
42
|
+
fragment.top_left, fragment.top_right,
|
43
|
+
fragment.bottom_right, fragment.bottom_left
|
44
|
+
)
|
44
45
|
|
45
46
|
@document.fill_circle(fragment.top_left, @radius)
|
46
47
|
@document.fill_circle(fragment.top_right, @radius)
|
@@ -49,13 +50,14 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
52
|
-
highlight = HighlightCallback.new(:
|
53
|
-
border
|
53
|
+
highlight = HighlightCallback.new(color: 'ffff00', document: self)
|
54
|
+
border = ConnectedBorderCallback.new(radius: 2.5, document: self)
|
54
55
|
|
55
|
-
formatted_text [
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
formatted_text [
|
57
|
+
{ text: 'hello', callback: highlight },
|
58
|
+
{ text: ' ' },
|
59
|
+
{ text: 'world', callback: border },
|
60
|
+
{ text: ' ' },
|
61
|
+
{ text: 'hello world', callback: [highlight, border] }
|
62
|
+
], size: 20
|
61
63
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# There are two other text methods available: <code>formatted_text</code> and
|
4
2
|
# <code>formatted_text_box</code>.
|
5
3
|
#
|
@@ -20,31 +18,39 @@
|
|
20
18
|
# <code>:link</code> (an URL to create a link), and <code>:local</code>
|
21
19
|
# (a link to a local file).
|
22
20
|
|
23
|
-
|
24
|
-
%w[.. example_helper]))
|
21
|
+
require_relative '../example_helper'
|
25
22
|
|
26
23
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
27
24
|
Prawn::ManualBuilder::Example.generate(filename) do
|
28
|
-
formatted_text [
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
25
|
+
formatted_text [
|
26
|
+
{ text: 'Some bold. ', styles: [:bold] },
|
27
|
+
{ text: 'Some italic. ', styles: [:italic] },
|
28
|
+
{ text: 'Bold italic. ', styles: [:bold, :italic] },
|
29
|
+
{ text: 'Bigger Text. ', size: 20 },
|
30
|
+
{ text: 'More spacing. ', character_spacing: 3 },
|
31
|
+
{ text: 'Different Font. ', font: 'Courier' },
|
32
|
+
{ text: 'Some coloring. ', color: 'FF00FF' },
|
33
|
+
{
|
34
|
+
text: 'Link to the wiki. ',
|
35
|
+
color: '0000FF',
|
36
|
+
link: 'https://github.com/prawnpdf/prawn/wiki'
|
37
|
+
},
|
38
|
+
{
|
39
|
+
text: 'Link to a local file. ',
|
40
|
+
color: '0000FF',
|
41
|
+
local: './local_file.txt'
|
42
|
+
}
|
43
|
+
]
|
42
44
|
|
43
|
-
formatted_text_box
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
formatted_text_box(
|
46
|
+
[
|
47
|
+
{ text: 'Just your regular' },
|
48
|
+
{ text: ' text_box ', font: 'Courier' },
|
49
|
+
{
|
50
|
+
text: 'with some additional formatting options added to the mix.',
|
51
|
+
color: [50, 100, 0, 0], styles: [:italic]
|
52
|
+
}
|
53
|
+
],
|
54
|
+
at: [100, 100], width: 200, height: 100
|
55
|
+
)
|
50
56
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Text rendering can be as simple or as complex as you want.
|
4
2
|
#
|
5
3
|
# This example covers the most basic method: <code>text</code>. It is meant for
|
@@ -12,40 +10,39 @@
|
|
12
10
|
#
|
13
11
|
# This example also shows text flowing across pages following the margin box and
|
14
12
|
# other bounding boxes.
|
15
|
-
|
16
|
-
|
17
|
-
%w[.. example_helper]))
|
13
|
+
|
14
|
+
require_relative '../example_helper'
|
18
15
|
|
19
16
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
20
17
|
Prawn::ManualBuilder::Example.generate(filename) do
|
21
18
|
move_cursor_to 50
|
22
|
-
text
|
19
|
+
text 'This text will flow to the next page. ' * 20
|
23
20
|
|
24
21
|
y_position = cursor - 50
|
25
|
-
bounding_box([0, y_position], :
|
22
|
+
bounding_box([0, y_position], width: 200, height: 150) do
|
26
23
|
transparent(0.5) { stroke_bounds }
|
27
|
-
text
|
24
|
+
text 'This text will flow along this bounding box we created for it. ' * 5
|
28
25
|
end
|
29
26
|
|
30
|
-
bounding_box([300, y_position], :
|
27
|
+
bounding_box([300, y_position], width: 200, height: 150) do
|
31
28
|
transparent(0.5) { stroke_bounds } # This will stroke on one page
|
32
29
|
|
33
|
-
text
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
text 'Now look what happens when the free flowing text reaches the end ' \
|
31
|
+
'of a bounding box that is narrower than the margin box.' +
|
32
|
+
' . ' * 200 +
|
33
|
+
'It continues on the next page as if the previous bounding box ' \
|
34
|
+
'was cloned. If we want it to have the same border as the one on ' \
|
35
|
+
'the previous page we will need to stroke the boundaries again.'
|
39
36
|
|
40
37
|
transparent(0.5) { stroke_bounds } # And this will stroke on the next
|
41
38
|
end
|
42
39
|
|
43
40
|
move_cursor_to 200
|
44
|
-
span(350, :
|
45
|
-
text
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
span(350, position: :center) do
|
42
|
+
text 'Span is a different kind of bounding box as it lets the text ' \
|
43
|
+
"flow gracefully onto the next page. It doesn't matter if the text " \
|
44
|
+
'started on the middle of the previous page, when it flows to the ' \
|
45
|
+
'next page it will start at the beginning.' + ' _ ' * 500 +
|
46
|
+
'I told you it would start on the beginning of this page.'
|
50
47
|
end
|
51
48
|
end
|
data/manual/text/inline.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Inline formatting gives you the option to format specific portions of a text.
|
4
2
|
# It uses HTML-esque syntax inside the text string. Supported tags are:
|
5
3
|
# <code>b</code> (bold), <code>i</code> (italic), <code>u</code> (underline),
|
@@ -10,32 +8,31 @@
|
|
10
8
|
# <code>size</code>, <code>name</code>, and <code>character_spacing</code>;
|
11
9
|
# <code>color</code> accepts <code>rgb</code> and <code>cmyk</code>;
|
12
10
|
# <code>link</code> accepts <code>href</code> for external links.
|
13
|
-
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
11
|
+
|
12
|
+
require_relative '../example_helper'
|
16
13
|
|
17
14
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
15
|
Prawn::ManualBuilder::Example.generate(filename) do
|
19
16
|
%w[b i u strikethrough sub sup].each do |tag|
|
20
|
-
text "Just your regular text <#{tag}>except this portion</#{tag}> "
|
21
|
-
|
22
|
-
|
17
|
+
text "Just your regular text <#{tag}>except this portion</#{tag}> " \
|
18
|
+
"is using the #{tag} tag",
|
19
|
+
inline_format: true
|
23
20
|
move_down 10
|
24
21
|
end
|
25
22
|
|
26
|
-
text "This <font size='18'>line</font> uses "
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
text "This <font size='18'>line</font> uses " \
|
24
|
+
"<font name='Courier'>all the font tag</font> attributes in " \
|
25
|
+
"<font character_spacing='2'>a single line</font>. ",
|
26
|
+
inline_format: true
|
30
27
|
move_down 10
|
31
28
|
|
32
|
-
text "Coloring in <color rgb='FF00FF'>both RGB</color> "
|
33
|
-
|
34
|
-
|
29
|
+
text "Coloring in <color rgb='FF00FF'>both RGB</color> " \
|
30
|
+
"<color c='100' m='0' y='0' k='0'>and CMYK</color>",
|
31
|
+
inline_format: true
|
35
32
|
move_down 10
|
36
33
|
|
37
|
-
text
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
text 'This an external link to the ' \
|
35
|
+
"<u><link href='https://github.com/prawnpdf/prawn/wiki'>Prawn wiki" \
|
36
|
+
'</link></u>',
|
37
|
+
inline_format: true
|
41
38
|
end
|