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,25 +1,22 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The image size can be set with the <code>:width</code> and
|
4
2
|
# <code>:height</code> options.
|
5
3
|
#
|
6
4
|
# If only one of those is provided, the image will be scaled proportionally.
|
7
5
|
# When both are provided, the image will be stretched to fit the dimensions
|
8
6
|
# without maintaining the aspect ratio.
|
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
|
-
text
|
16
|
-
image "#{Prawn::DATADIR}/images/pigs.jpg", :
|
12
|
+
text 'Scale by setting only the width'
|
13
|
+
image "#{Prawn::DATADIR}/images/pigs.jpg", width: 150
|
17
14
|
move_down 20
|
18
15
|
|
19
|
-
text
|
20
|
-
image "#{Prawn::DATADIR}/images/pigs.jpg", :
|
16
|
+
text 'Scale by setting only the height'
|
17
|
+
image "#{Prawn::DATADIR}/images/pigs.jpg", height: 100
|
21
18
|
move_down 20
|
22
19
|
|
23
|
-
text
|
24
|
-
image "#{Prawn::DATADIR}/images/pigs.jpg", :
|
20
|
+
text 'Stretch to fit the width and height provided'
|
21
|
+
image "#{Prawn::DATADIR}/images/pigs.jpg", width: 500, height: 100
|
25
22
|
end
|
data/manual/layout/boxes.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# After defined the grid is there but nothing happens. To start taking effect
|
4
2
|
# we need to use the grid boxes.
|
5
3
|
#
|
@@ -7,15 +5,14 @@
|
|
7
5
|
# received. With no arguments it will return the grid itself. With integers it
|
8
6
|
# will return the grid box at those indices. With two arrays it will return a
|
9
7
|
# multi-box spanning the region of the two grid boxes at the arrays indices.
|
10
|
-
|
11
|
-
|
12
|
-
%w[.. example_helper]))
|
8
|
+
|
9
|
+
require_relative '../example_helper'
|
13
10
|
|
14
11
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
12
|
Prawn::ManualBuilder::Example.generate(filename) do
|
16
13
|
# The grid only need to be defined once, but since all the examples should be
|
17
14
|
# able to run alone we are repeating it on every example
|
18
|
-
define_grid(:
|
15
|
+
define_grid(columns: 5, rows: 8, gutter: 10)
|
19
16
|
|
20
17
|
grid(4, 0).show
|
21
18
|
grid(5, 1).show
|
data/manual/layout/content.rb
CHANGED
@@ -1,25 +1,22 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Now that we know how to access the boxes we might as well add some content
|
4
2
|
# to them.
|
5
3
|
#
|
6
4
|
# This can be done by taping into the bounding box for a given grid box or
|
7
5
|
# multi-box with the <code>bounding_box</code> method.
|
8
|
-
|
9
|
-
|
10
|
-
%w[.. example_helper]))
|
6
|
+
|
7
|
+
require_relative '../example_helper'
|
11
8
|
|
12
9
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
13
10
|
Prawn::ManualBuilder::Example.generate(filename) do
|
14
11
|
# The grid only need to be defined once, but since all the examples should be
|
15
12
|
# able to run alone we are repeating it on every example
|
16
|
-
define_grid(:
|
13
|
+
define_grid(columns: 5, rows: 8, gutter: 10)
|
17
14
|
|
18
15
|
grid([5, 0], [7, 1]).bounding_box do
|
19
|
-
text "Adding some content to this multi_box.\n" +
|
16
|
+
text "Adding some content to this multi_box.\n" + ' _ ' * 200
|
20
17
|
end
|
21
18
|
|
22
19
|
grid(6, 3).bounding_box do
|
23
|
-
text "Just a little snippet here.\n" +
|
20
|
+
text "Just a little snippet here.\n" + ' _ ' * 10
|
24
21
|
end
|
25
22
|
end
|
data/manual/layout/layout.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Examples for using grid layouts.
|
4
|
-
#
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
6
|
-
%w[.. example_helper]))
|
7
2
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
p.example
|
3
|
+
require_relative '../example_helper'
|
4
|
+
|
5
|
+
Prawn::ManualBuilder::Example.generate('layout.pdf', page_size: 'FOLIO') do
|
6
|
+
package 'layout' do |p|
|
7
|
+
p.example 'simple_grid'
|
8
|
+
p.example 'boxes'
|
9
|
+
p.example 'content'
|
13
10
|
|
14
11
|
p.intro do
|
15
|
-
prose
|
12
|
+
prose <<-END
|
13
|
+
Prawn has support for two-dimensional grid based layouts out of the box.
|
16
14
|
|
17
|
-
|
15
|
+
The examples show:
|
16
|
+
END
|
18
17
|
|
19
|
-
list(
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
list(
|
19
|
+
'How to define the document grid',
|
20
|
+
'How to configure the grid rows and columns gutters',
|
21
|
+
'How to create boxes according to the grid'
|
22
|
+
)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The document grid on Prawn is just a table-like structure with a defined
|
4
2
|
# number of rows and columns. There are some helpers to create boxes of content
|
5
3
|
# based on the grid coordinates.
|
@@ -7,16 +5,15 @@
|
|
7
5
|
# <code>define_grid</code> accepts the following options which are pretty much
|
8
6
|
# self-explanatory: <code>:rows</code>, <code>:columns</code>,
|
9
7
|
# <code>:gutter</code>, <code>:row_gutter</code>, <code>:column_gutter</code>
|
10
|
-
|
11
|
-
|
12
|
-
%w[.. example_helper]))
|
8
|
+
|
9
|
+
require_relative '../example_helper'
|
13
10
|
|
14
11
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
15
12
|
Prawn::ManualBuilder::Example.generate(filename) do
|
16
13
|
# The grid only need to be defined once, but since all the examples should be
|
17
14
|
# able to run alone we are repeating it on every example
|
18
|
-
define_grid(:
|
19
|
-
text
|
15
|
+
define_grid(columns: 5, rows: 8, gutter: 10)
|
16
|
+
text 'We defined the grid, roll over to the next page to see its outline'
|
20
17
|
|
21
18
|
start_new_page
|
22
19
|
grid.show_all
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# We have already seen how to define an outline tree sequentially.
|
4
2
|
#
|
5
3
|
# If you'd like to add nodes to the middle of an outline tree the
|
@@ -16,9 +14,8 @@
|
|
16
14
|
#
|
17
15
|
# If the parent title provided is the title of a page. The page will be
|
18
16
|
# converted into a section to receive the subsection created.
|
19
|
-
|
20
|
-
|
21
|
-
%w[.. example_helper]))
|
17
|
+
|
18
|
+
require_relative '../example_helper'
|
22
19
|
|
23
20
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
24
21
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -29,33 +26,33 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
29
26
|
end
|
30
27
|
|
31
28
|
outline.define do
|
32
|
-
section(
|
33
|
-
page :
|
34
|
-
page :
|
29
|
+
section('Section 1', destination: 1) do
|
30
|
+
page title: 'Page 2', destination: 2
|
31
|
+
page title: 'Page 3', destination: 3
|
35
32
|
end
|
36
33
|
end
|
37
34
|
|
38
35
|
# Now we will start adding nodes to the previous outline
|
39
|
-
outline.add_subsection_to(
|
40
|
-
outline.section(
|
41
|
-
outline.page :
|
42
|
-
outline.page :
|
36
|
+
outline.add_subsection_to('Section 1', :first) do
|
37
|
+
outline.section('Added later - first position') do
|
38
|
+
outline.page title: 'Page 4', destination: 4
|
39
|
+
outline.page title: 'Page 5', destination: 5
|
43
40
|
end
|
44
41
|
end
|
45
42
|
|
46
|
-
outline.add_subsection_to(
|
47
|
-
outline.page :
|
48
|
-
:
|
43
|
+
outline.add_subsection_to('Section 1') do
|
44
|
+
outline.page title: 'Added later - last position',
|
45
|
+
destination: 6
|
49
46
|
end
|
50
47
|
|
51
|
-
outline.add_subsection_to(
|
52
|
-
outline.page :
|
53
|
-
:
|
48
|
+
outline.add_subsection_to('Added later - first position') do
|
49
|
+
outline.page title: 'Another page added later',
|
50
|
+
destination: 7
|
54
51
|
end
|
55
52
|
|
56
53
|
# The title provided is for a page which will be converted into a section
|
57
|
-
outline.add_subsection_to(
|
58
|
-
outline.page :
|
59
|
-
:
|
54
|
+
outline.add_subsection_to('Page 3') do
|
55
|
+
outline.page title: 'Last page added',
|
56
|
+
destination: 8
|
60
57
|
end
|
61
58
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Another way to insert nodes into an existing outline is the
|
4
2
|
# <code>insert_section_after</code> method.
|
5
3
|
#
|
@@ -8,9 +6,8 @@
|
|
8
6
|
#
|
9
7
|
# As is the case with <code>add_subsection_to</code> the section added
|
10
8
|
# doesn't need to be a section, it may be just a page.
|
11
|
-
|
12
|
-
|
13
|
-
%w[.. example_helper]))
|
9
|
+
|
10
|
+
require_relative '../example_helper'
|
14
11
|
|
15
12
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
16
13
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -21,27 +18,27 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
21
18
|
end
|
22
19
|
|
23
20
|
outline.define do
|
24
|
-
section(
|
25
|
-
page :
|
26
|
-
page :
|
21
|
+
section('Section 1', destination: 1) do
|
22
|
+
page title: 'Page 2', destination: 2
|
23
|
+
page title: 'Page 3', destination: 3
|
27
24
|
end
|
28
25
|
end
|
29
26
|
|
30
27
|
# Now we will start adding nodes to the previous outline
|
31
|
-
outline.insert_section_after(
|
32
|
-
outline.section(
|
33
|
-
outline.page :
|
28
|
+
outline.insert_section_after('Page 2') do
|
29
|
+
outline.section('Section after Page 2') do
|
30
|
+
outline.page title: 'Page 4', destination: 4
|
34
31
|
end
|
35
32
|
end
|
36
33
|
|
37
|
-
outline.insert_section_after(
|
38
|
-
outline.section(
|
39
|
-
outline.page :
|
34
|
+
outline.insert_section_after('Section 1') do
|
35
|
+
outline.section('Section after Section 1') do
|
36
|
+
outline.page title: 'Page 5', destination: 5
|
40
37
|
end
|
41
38
|
end
|
42
39
|
|
43
40
|
# Adding just a page
|
44
|
-
outline.insert_section_after(
|
45
|
-
outline.page :
|
41
|
+
outline.insert_section_after('Page 3') do
|
42
|
+
outline.page title: 'Page after Page 3', destination: 6
|
46
43
|
end
|
47
44
|
end
|
data/manual/outline/outline.rb
CHANGED
@@ -1,29 +1,31 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Examples for defining the document outline.
|
4
|
-
#
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
6
|
-
%w[.. example_helper]))
|
7
2
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
require_relative '../example_helper'
|
4
|
+
|
5
|
+
Prawn::ManualBuilder::Example.generate('outline.pdf', page_size: 'FOLIO') do
|
6
|
+
package 'outline' do |p|
|
7
|
+
p.section 'Basics' do |s|
|
8
|
+
s.example 'sections_and_pages', eval_source: false
|
12
9
|
end
|
13
10
|
|
14
|
-
p.section
|
15
|
-
s.example
|
16
|
-
s.example
|
11
|
+
p.section 'Adding nodes later' do |s|
|
12
|
+
s.example 'add_subsection_to', eval_source: false
|
13
|
+
s.example 'insert_section_after', eval_source: false
|
17
14
|
end
|
18
15
|
|
19
16
|
p.intro do
|
20
|
-
prose
|
17
|
+
prose <<-END
|
18
|
+
The outline of a PDF document is the table of contents tab you see to
|
19
|
+
the right or left of your PDF viewer.
|
21
20
|
|
22
|
-
|
21
|
+
The examples include:
|
22
|
+
END
|
23
23
|
|
24
|
-
list(
|
25
|
-
|
26
|
-
|
24
|
+
list(
|
25
|
+
'How to define sections and pages',
|
26
|
+
'How to insert sections and/or pages to a previously defined outline '\
|
27
|
+
'structure'
|
28
|
+
)
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The document outline tree is the set of links used to navigate through the
|
4
2
|
# various document sections and pages.
|
5
3
|
#
|
@@ -23,9 +21,8 @@
|
|
23
21
|
# <code>section</code> and <code>page</code> may also be used without the
|
24
22
|
# <code>define</code> method but they will need to instantiate the
|
25
23
|
# <code>outline</code> object every time.
|
26
|
-
|
27
|
-
|
28
|
-
%w[.. example_helper]))
|
24
|
+
|
25
|
+
require_relative '../example_helper'
|
29
26
|
|
30
27
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
31
28
|
Prawn::ManualBuilder::Example.generate(filename) do
|
@@ -36,32 +33,32 @@ Prawn::ManualBuilder::Example.generate(filename) do
|
|
36
33
|
end
|
37
34
|
|
38
35
|
outline.define do
|
39
|
-
section(
|
40
|
-
page :
|
41
|
-
page :
|
36
|
+
section('Section 1', destination: 1) do
|
37
|
+
page title: 'Page 2', destination: 2
|
38
|
+
page title: 'Page 3', destination: 3
|
42
39
|
end
|
43
40
|
|
44
|
-
section(
|
45
|
-
page :
|
41
|
+
section('Section 2', destination: 4) do
|
42
|
+
page title: 'Page 5', destination: 5
|
46
43
|
|
47
|
-
section(
|
48
|
-
page :
|
44
|
+
section('Subsection 2.1', destination: 6, closed: true) do
|
45
|
+
page title: 'Page 7', destination: 7
|
49
46
|
end
|
50
47
|
end
|
51
48
|
end
|
52
49
|
|
53
50
|
# Outside of the define block
|
54
|
-
outline.section(
|
55
|
-
outline.page :
|
51
|
+
outline.section('Section 3', destination: 8) do
|
52
|
+
outline.page title: 'Page 9', destination: 9
|
56
53
|
end
|
57
54
|
|
58
|
-
outline.page :
|
55
|
+
outline.page title: 'Page 10', destination: 10
|
59
56
|
|
60
57
|
# Section and Pages without links. While a section without a link may be
|
61
58
|
# useful to group some pages, a page without a link is useless
|
62
|
-
outline.update do
|
63
|
-
section(
|
64
|
-
page :
|
59
|
+
outline.update do # update is an alias to define
|
60
|
+
section('Section without link') do
|
61
|
+
page title: 'Page without link'
|
65
62
|
end
|
66
63
|
end
|
67
64
|
end
|
@@ -1,32 +1,34 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Below is the code to generate page numbers that alternate being rendered
|
4
2
|
# on the right and left side of the page. The first page will have a "1" in
|
5
3
|
# the bottom right corner. The second page will have a "2" in the bottom
|
6
4
|
# left corner of the page. The third a "3" in the bottom right, etc.
|
7
|
-
|
8
|
-
|
5
|
+
|
6
|
+
require_relative '../example_helper'
|
9
7
|
|
10
8
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
11
9
|
Prawn::ManualBuilder::Example.generate(filename) do
|
12
|
-
text
|
10
|
+
text 'This is the first page!'
|
13
11
|
|
14
12
|
10.times do
|
15
13
|
start_new_page
|
16
|
-
text
|
14
|
+
text 'Here comes yet another page.'
|
17
15
|
end
|
18
16
|
|
19
|
-
string =
|
20
|
-
odd_options = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
17
|
+
string = '<page>'
|
18
|
+
odd_options = {
|
19
|
+
at: [bounds.right - 150, 0],
|
20
|
+
width: 150,
|
21
|
+
align: :right,
|
22
|
+
page_filter: :odd,
|
23
|
+
start_count_at: 1
|
24
|
+
}
|
25
|
+
even_options = {
|
26
|
+
at: [0, bounds.left],
|
27
|
+
width: 150,
|
28
|
+
align: :left,
|
29
|
+
page_filter: :even,
|
30
|
+
start_count_at: 2
|
31
|
+
}
|
30
32
|
number_pages string, odd_options
|
31
33
|
number_pages string, even_options
|
32
34
|
end
|