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,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>number_pages</code> method is a simple way to number the pages of
|
4
2
|
# your document. It should be called towards the end of the document since
|
5
3
|
# pages created after the call won't be numbered.
|
@@ -20,33 +18,34 @@
|
|
20
18
|
# <code>color</code> which accepts the same values as <code>fill_color</code>
|
21
19
|
#
|
22
20
|
# As well as any option accepted by <code>text_box</code>
|
23
|
-
|
24
|
-
|
25
|
-
%w[.. example_helper]))
|
21
|
+
|
22
|
+
require_relative '../example_helper'
|
26
23
|
|
27
24
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
28
25
|
Prawn::ManualBuilder::Example.generate(filename) do
|
29
|
-
text
|
26
|
+
text 'This is the first page!'
|
30
27
|
|
31
28
|
10.times do
|
32
29
|
start_new_page
|
33
|
-
text
|
30
|
+
text 'Here comes yet another page.'
|
34
31
|
end
|
35
32
|
|
36
|
-
string =
|
33
|
+
string = 'page <page> of <total>'
|
37
34
|
# Green page numbers 1 to 7
|
38
|
-
options = {
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
35
|
+
options = {
|
36
|
+
at: [bounds.right - 150, 0],
|
37
|
+
width: 150,
|
38
|
+
align: :right,
|
39
|
+
page_filter: (1..7),
|
40
|
+
start_count_at: 1,
|
41
|
+
color: '007700'
|
42
|
+
}
|
44
43
|
number_pages string, options
|
45
44
|
|
46
45
|
# Gray page numbers from 8 on up
|
47
|
-
options[:page_filter]
|
46
|
+
options[:page_filter] = ->(pg) { pg > 7 }
|
48
47
|
options[:start_count_at] = 8
|
49
|
-
options[:color]
|
48
|
+
options[:color] = '333333'
|
50
49
|
number_pages string, options
|
51
50
|
|
52
51
|
start_new_page
|
@@ -1,29 +1,33 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Examples for stamps and repeaters.
|
4
|
-
#
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
6
|
-
%w[.. example_helper]))
|
7
2
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
p.example
|
3
|
+
require_relative '../example_helper'
|
4
|
+
|
5
|
+
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
6
|
+
Prawn::ManualBuilder::Example.generate(filename, page_size: 'FOLIO') do
|
7
|
+
package 'repeatable_content' do |p|
|
8
|
+
p.example 'repeater', eval_source: false
|
9
|
+
p.example 'stamp'
|
10
|
+
p.example 'page_numbering', eval_source: false
|
11
|
+
p.example 'alternate_page_numbering', eval_source: false
|
14
12
|
|
15
13
|
p.intro do
|
16
|
-
prose
|
14
|
+
prose <<-END
|
15
|
+
Prawn offers two ways to handle repeatable content blocks. Repeater is
|
16
|
+
useful for content that gets repeated at well defined intervals while
|
17
|
+
Stamp is more appropriate if you need better control of when to repeat
|
18
|
+
it.
|
17
19
|
|
18
|
-
|
20
|
+
There is also one very specific helper for numbering pages.
|
19
21
|
|
20
|
-
|
22
|
+
The examples show:
|
23
|
+
END
|
21
24
|
|
22
|
-
list(
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
list(
|
26
|
+
'How to repeat content on several pages with a single invocation',
|
27
|
+
'How to create a new Stamp',
|
28
|
+
'How to "stamp" the content block on the page',
|
29
|
+
'How to number the document pages with one simple call'
|
30
|
+
)
|
27
31
|
end
|
28
32
|
end
|
29
33
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>repeat</code> method is quite versatile when it comes to define
|
4
2
|
# the intervals at which the content block should repeat.
|
5
3
|
#
|
@@ -14,42 +12,41 @@
|
|
14
12
|
#
|
15
13
|
# It is also important to say that no matter where you define the repeater it
|
16
14
|
# will be applied to all matching pages.
|
17
|
-
|
18
|
-
|
19
|
-
%w[.. example_helper]))
|
15
|
+
|
16
|
+
require_relative '../example_helper'
|
20
17
|
|
21
18
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
22
19
|
Prawn::ManualBuilder::Example.generate(filename) do
|
23
20
|
repeat(:all) do
|
24
|
-
draw_text
|
21
|
+
draw_text 'All pages', at: bounds.top_left
|
25
22
|
end
|
26
23
|
|
27
24
|
repeat(:odd) do
|
28
|
-
draw_text
|
25
|
+
draw_text 'Only odd pages', at: [0, 0]
|
29
26
|
end
|
30
27
|
|
31
28
|
repeat(:even) do
|
32
|
-
draw_text
|
29
|
+
draw_text 'Only even pages', at: [0, 0]
|
33
30
|
end
|
34
31
|
|
35
32
|
repeat([1, 3, 7]) do
|
36
|
-
draw_text
|
33
|
+
draw_text 'Only on pages 1, 3 and 7', at: [100, 0]
|
37
34
|
end
|
38
35
|
|
39
36
|
repeat(2..4) do
|
40
|
-
draw_text
|
37
|
+
draw_text 'From the 2nd to the 4th page', at: [300, 0]
|
41
38
|
end
|
42
39
|
|
43
|
-
repeat(
|
44
|
-
draw_text
|
40
|
+
repeat(->(pg) { (pg % 3).zero? }) do
|
41
|
+
draw_text 'Every third page', at: [250, 20]
|
45
42
|
end
|
46
43
|
|
47
|
-
repeat(:all, :
|
48
|
-
draw_text page_number, :
|
44
|
+
repeat(:all, dynamic: true) do
|
45
|
+
draw_text page_number, at: [500, 0]
|
49
46
|
end
|
50
47
|
|
51
48
|
10.times do
|
52
49
|
start_new_page
|
53
|
-
draw_text
|
50
|
+
draw_text 'A wonderful page', at: [400, 400]
|
54
51
|
end
|
55
52
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Stamps should be used when you have content that will be included multiple
|
4
2
|
# times in a document. Its advantages over creating the content anew each time
|
5
3
|
# are:
|
@@ -15,27 +13,26 @@
|
|
15
13
|
# There are two methods to render the stamp on a page <code>stamp</code> and
|
16
14
|
# <code>stamp_at</code>. The first will render the stamp as is while the
|
17
15
|
# second accepts a point to serve as an offset to the stamp content.
|
18
|
-
|
19
|
-
|
20
|
-
%w[.. example_helper]))
|
16
|
+
|
17
|
+
require_relative '../example_helper'
|
21
18
|
|
22
19
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
23
20
|
Prawn::ManualBuilder::Example.generate(filename) do
|
24
|
-
create_stamp(
|
25
|
-
rotate(30, :
|
26
|
-
stroke_color
|
21
|
+
create_stamp('approved') do
|
22
|
+
rotate(30, origin: [-5, -5]) do
|
23
|
+
stroke_color 'FF3333'
|
27
24
|
stroke_ellipse [0, 0], 29, 15
|
28
|
-
stroke_color
|
25
|
+
stroke_color '000000'
|
29
26
|
|
30
|
-
fill_color
|
31
|
-
font(
|
32
|
-
draw_text
|
27
|
+
fill_color '993333'
|
28
|
+
font('Times-Roman') do
|
29
|
+
draw_text 'Approved', at: [-23, -3]
|
33
30
|
end
|
34
|
-
fill_color
|
31
|
+
fill_color '000000'
|
35
32
|
end
|
36
33
|
end
|
37
34
|
|
38
|
-
stamp
|
35
|
+
stamp 'approved'
|
39
36
|
|
40
|
-
stamp_at
|
37
|
+
stamp_at 'approved', [200, 200]
|
41
38
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>encrypt_document</code> method, as you might have already guessed,
|
4
2
|
# is used to encrypt the PDF document.
|
5
3
|
#
|
@@ -12,18 +10,17 @@
|
|
12
10
|
# documentation (you can find it here:
|
13
11
|
# https://github.com/prawnpdf/prawn/blob/master/lib/prawn/security.rb ) before
|
14
12
|
# using this for anything super serious.
|
15
|
-
|
16
|
-
|
17
|
-
%w[.. example_helper]))
|
13
|
+
|
14
|
+
require_relative '../example_helper'
|
18
15
|
|
19
16
|
# Bare encryption. No password needed.
|
20
|
-
Prawn::ManualBuilder::Example.generate(
|
21
|
-
text
|
17
|
+
Prawn::ManualBuilder::Example.generate('bare_encryption.pdf') do
|
18
|
+
text 'See, no password was asked but the document is still encrypted.'
|
22
19
|
encrypt_document
|
23
20
|
end
|
24
21
|
|
25
22
|
# Simple password. All permissions granted.
|
26
|
-
Prawn::ManualBuilder::Example.generate(
|
27
|
-
text
|
28
|
-
encrypt_document(:
|
23
|
+
Prawn::ManualBuilder::Example.generate('simple_password.pdf') do
|
24
|
+
text 'You was asked for a password.'
|
25
|
+
encrypt_document(user_password: 'foo', owner_password: 'bar')
|
29
26
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Some permissions may be set for the regular user with the following options:
|
4
2
|
# <code>:print_document</code>, <code>:modify_contents</code>,
|
5
3
|
# <code>:copy_contents</code>, <code>:modify_annotations</code>. All this
|
@@ -14,23 +12,28 @@
|
|
14
12
|
# documentation (you can find it here:
|
15
13
|
# https://github.com/prawnpdf/prawn/blob/master/lib/prawn/security.rb ) before
|
16
14
|
# using this for anything super serious.
|
17
|
-
|
18
|
-
|
19
|
-
%w[.. example_helper]))
|
15
|
+
|
16
|
+
require_relative '../example_helper'
|
20
17
|
|
21
18
|
# User cannot print the document.
|
22
|
-
Prawn::ManualBuilder::Example.generate(
|
19
|
+
Prawn::ManualBuilder::Example.generate('cannot_print.pdf') do
|
23
20
|
text "If you used the user password you won't be able to print the doc."
|
24
|
-
encrypt_document(
|
25
|
-
|
21
|
+
encrypt_document(
|
22
|
+
user_password: 'foo', owner_password: 'bar',
|
23
|
+
permissions: { print_document: false }
|
24
|
+
)
|
26
25
|
end
|
27
26
|
|
28
27
|
# All permissions revoked and owner password set to random
|
29
|
-
Prawn::ManualBuilder::Example.generate(
|
28
|
+
Prawn::ManualBuilder::Example.generate('no_permissions.pdf') do
|
30
29
|
text "You may only view this and won't be able to use the owner password."
|
31
|
-
encrypt_document(
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
encrypt_document(
|
31
|
+
user_password: 'foo', owner_password: :random,
|
32
|
+
permissions: {
|
33
|
+
print_document: false,
|
34
|
+
modify_contents: false,
|
35
|
+
copy_contents: false,
|
36
|
+
modify_annotations: false
|
37
|
+
}
|
38
|
+
)
|
36
39
|
end
|
data/manual/security/security.rb
CHANGED
@@ -1,25 +1,26 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Examples for document encryption.
|
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('security.pdf', page_size: 'FOLIO') do
|
6
|
+
package 'security' do |p|
|
7
|
+
p.example 'encryption', eval_source: false, full_source: true
|
8
|
+
p.example 'permissions', eval_source: false, full_source: true
|
12
9
|
|
13
10
|
p.intro do
|
14
|
-
prose
|
11
|
+
prose <<-END
|
12
|
+
Security lets you control who can read the document by defining
|
13
|
+
a password.
|
15
14
|
|
16
|
-
|
15
|
+
The examples include:
|
16
|
+
END
|
17
17
|
|
18
|
-
list(
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
list(
|
19
|
+
'How to encrypt the document without the need for a password',
|
20
|
+
'How to configure the regular user permissions',
|
21
|
+
'How to require a password for the regular user',
|
22
|
+
'How to set a owner password that bypass the document permissions'
|
23
|
+
)
|
23
24
|
end
|
24
25
|
end
|
25
26
|
end
|
data/manual/table.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative "example_helper"
|
1
|
+
require_relative 'example_helper'
|
4
2
|
|
5
3
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
6
4
|
|
7
5
|
Prawn::ManualBuilder::Example.generate(filename) do
|
8
|
-
header(
|
6
|
+
header('Prawn::Table')
|
9
7
|
|
10
8
|
prose <<-END_TEXT
|
11
9
|
As of Prawn 1.2.0, Prawn::Table has been extracted into its own
|
data/manual/text/alignment.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# Horizontal text alignment can be achieved by supplying the <code>:align</code>
|
4
2
|
# option to the text methods. Available options are <code>:left</code>
|
5
3
|
# (default), <code>:right</code>, <code>:center</code>, and
|
@@ -11,34 +9,33 @@
|
|
11
9
|
#
|
12
10
|
# Both forms of alignment will be evaluated in the context of the current
|
13
11
|
# bounding_box.
|
14
|
-
|
15
|
-
|
16
|
-
%w[.. example_helper]))
|
12
|
+
|
13
|
+
require_relative '../example_helper'
|
17
14
|
|
18
15
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
19
16
|
Prawn::ManualBuilder::Example.generate(filename) do
|
20
|
-
text
|
21
|
-
text
|
22
|
-
text
|
17
|
+
text 'This text should be left aligned'
|
18
|
+
text 'This text should be centered', align: :center
|
19
|
+
text 'This text should be right aligned', align: :right
|
23
20
|
|
24
|
-
bounding_box([0, 220], :
|
25
|
-
text
|
21
|
+
bounding_box([0, 220], width: 250, height: 220) do
|
22
|
+
text 'This text is flowing from the left. ' * 4
|
26
23
|
|
27
24
|
move_down 15
|
28
|
-
text
|
25
|
+
text 'This text is flowing from the center. ' * 3, align: :center
|
29
26
|
|
30
27
|
move_down 15
|
31
|
-
text
|
28
|
+
text 'This text is flowing from the right. ' * 4, align: :right
|
32
29
|
|
33
30
|
move_down 15
|
34
|
-
text
|
31
|
+
text 'This text is justified. ' * 6, align: :justify
|
35
32
|
transparent(0.5) { stroke_bounds }
|
36
33
|
end
|
37
34
|
|
38
|
-
bounding_box([300, 220], :
|
39
|
-
text
|
40
|
-
text
|
41
|
-
text
|
35
|
+
bounding_box([300, 220], width: 250, height: 220) do
|
36
|
+
text 'This text should be vertically top aligned'
|
37
|
+
text 'This text should be vertically centered', valign: :center
|
38
|
+
text 'This text should be vertically bottom aligned', valign: :bottom
|
42
39
|
transparent(0.5) { stroke_bounds }
|
43
40
|
end
|
44
41
|
end
|
data/manual/text/color.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>:color</code> attribute can give a block of text a default color,
|
4
2
|
# in RGB hex format or 4-value CMYK.
|
5
|
-
|
6
|
-
|
7
|
-
%w[.. example_helper]))
|
3
|
+
|
4
|
+
require_relative '../example_helper'
|
8
5
|
|
9
6
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
10
7
|
Prawn::ManualBuilder::Example.generate(filename) do
|
11
|
-
text
|
8
|
+
text 'Default color is black'
|
12
9
|
move_down 25
|
13
10
|
|
14
|
-
text
|
11
|
+
text 'Changed to red', color: 'FF0000'
|
15
12
|
move_down 25
|
16
13
|
|
17
|
-
text
|
14
|
+
text 'CMYK color', color: [22, 55, 79, 30]
|
18
15
|
move_down 25
|
19
16
|
|
20
|
-
text
|
21
|
-
|
22
|
-
|
17
|
+
text(
|
18
|
+
"Also works with <color rgb='ff0000'>inline</color> formatting",
|
19
|
+
color: '0000FF',
|
20
|
+
inline_format: true
|
21
|
+
)
|
23
22
|
end
|
data/manual/text/column_box.rb
CHANGED
@@ -1,20 +1,17 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
1
|
# The <code>column_box</code> method allows you to define columns that flow
|
4
2
|
# their contents from one section to the next. You can have a number of columns
|
5
3
|
# on the page, and only when the last column overflows will a new page be
|
6
4
|
# created.
|
7
|
-
|
8
|
-
|
9
|
-
%w[.. example_helper]))
|
5
|
+
|
6
|
+
require_relative '../example_helper'
|
10
7
|
|
11
8
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
12
9
|
Prawn::ManualBuilder::Example.generate(filename) do
|
13
|
-
text
|
14
|
-
text
|
10
|
+
text 'The Prince', align: :center, size: 18
|
11
|
+
text 'Niccolò Machiavelli', align: :center, size: 14
|
15
12
|
move_down 12
|
16
13
|
|
17
|
-
column_box([0, cursor], :
|
14
|
+
column_box([0, cursor], columns: 2, width: bounds.width) do
|
18
15
|
text((<<-END.gsub(/\s+/, ' ') + "\n\n") * 3)
|
19
16
|
All the States and Governments by which men are or ever have been ruled,
|
20
17
|
have been and are either Republics or Princedoms. Princedoms are either
|