prawn 0.13.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data/.yardopts +10 -0
- data/GPLv2 +20 -21
- data/Gemfile +3 -16
- data/Rakefile +17 -39
- data/lib/prawn/document/bounding_box.rb +85 -42
- data/lib/prawn/document/column_box.rb +21 -11
- data/lib/prawn/document/internals.rb +40 -147
- data/lib/prawn/document/span.rb +25 -17
- data/lib/prawn/document.rb +286 -245
- data/lib/prawn/encoding.rb +68 -101
- data/lib/prawn/errors.rb +47 -43
- data/lib/prawn/font.rb +204 -155
- data/lib/prawn/font_metric_cache.rb +25 -21
- data/lib/prawn/fonts/afm.rb +292 -0
- data/lib/prawn/{font → fonts}/dfont.rb +7 -13
- data/lib/prawn/fonts/otf.rb +11 -0
- data/lib/prawn/fonts/ttc.rb +36 -0
- data/lib/prawn/{font → fonts}/ttf.rb +142 -80
- data/lib/prawn/graphics/blend_mode.rb +65 -0
- data/lib/prawn/graphics/cap_style.rb +6 -5
- data/lib/prawn/graphics/color.rb +47 -44
- data/lib/prawn/graphics/dash.rb +30 -13
- data/lib/prawn/graphics/join_style.rb +13 -6
- data/lib/prawn/graphics/patterns.rb +221 -90
- data/lib/prawn/graphics/transformation.rb +21 -12
- data/lib/prawn/graphics/transparency.rb +21 -17
- data/lib/prawn/graphics.rb +155 -128
- data/lib/prawn/{layout/grid.rb → grid.rb} +110 -47
- data/lib/prawn/image_handler.rb +16 -2
- data/lib/prawn/images/image.rb +4 -2
- data/lib/prawn/images/jpg.rb +39 -30
- data/lib/prawn/images/png.rb +132 -169
- data/lib/prawn/images.rb +70 -62
- data/lib/prawn/measurement_extensions.rb +15 -10
- data/lib/prawn/measurements.rb +22 -23
- data/lib/prawn/outline.rb +301 -13
- data/lib/prawn/repeater.rb +19 -17
- data/lib/prawn/security/arcfour.rb +54 -0
- data/lib/prawn/security.rb +108 -86
- data/lib/prawn/soft_mask.rb +40 -41
- data/lib/prawn/stamp.rb +29 -12
- data/lib/prawn/text/box.rb +27 -29
- data/lib/prawn/text/formatted/arranger.rb +110 -67
- data/lib/prawn/text/formatted/box.rb +233 -165
- data/lib/prawn/text/formatted/fragment.rb +27 -27
- data/lib/prawn/text/formatted/line_wrap.rb +137 -97
- data/lib/prawn/text/formatted/parser.rb +149 -127
- data/lib/prawn/text/formatted/wrap.rb +57 -37
- data/lib/prawn/text/formatted.rb +6 -4
- data/lib/prawn/text.rb +105 -73
- data/lib/prawn/transformation_stack.rb +44 -0
- data/lib/prawn/utilities.rb +11 -21
- data/lib/prawn/version.rb +5 -0
- data/lib/prawn/view.rb +101 -0
- data/lib/prawn.rb +42 -68
- data/{data/images/fractal.jpg → manual/absolute_position.pdf} +0 -0
- data/manual/basic_concepts/adding_pages.rb +9 -10
- data/manual/basic_concepts/basic_concepts.rb +33 -24
- data/manual/basic_concepts/creation.rb +10 -11
- data/manual/basic_concepts/cursor.rb +9 -10
- data/manual/basic_concepts/measurement.rb +10 -11
- data/manual/basic_concepts/origin.rb +8 -9
- data/manual/basic_concepts/other_cursor_helpers.rb +17 -18
- data/manual/basic_concepts/view.rb +48 -0
- data/manual/bounding_box/bounding_box.rb +31 -29
- data/manual/bounding_box/bounds.rb +17 -18
- data/manual/bounding_box/canvas.rb +8 -9
- data/manual/bounding_box/creation.rb +8 -9
- data/manual/bounding_box/indentation.rb +22 -23
- data/manual/bounding_box/nesting.rb +32 -25
- data/manual/bounding_box/russian_boxes.rb +19 -19
- data/manual/bounding_box/stretchy.rb +18 -20
- data/manual/contents.rb +35 -0
- data/manual/cover.rb +43 -0
- data/manual/document_and_page_options/background.rb +16 -14
- data/manual/document_and_page_options/document_and_page_options.rb +26 -23
- data/manual/document_and_page_options/metadata.rb +21 -19
- data/manual/document_and_page_options/page_margins.rb +20 -22
- data/manual/document_and_page_options/page_size.rb +15 -15
- data/manual/document_and_page_options/print_scaling.rb +23 -0
- data/manual/example_helper.rb +5 -408
- data/manual/graphics/blend_mode.rb +52 -0
- data/manual/graphics/circle_and_ellipse.rb +8 -9
- data/manual/graphics/color.rb +11 -13
- data/manual/graphics/common_lines.rb +13 -12
- data/manual/graphics/fill_and_stroke.rb +10 -11
- data/manual/graphics/fill_rules.rb +13 -12
- data/manual/graphics/gradients.rb +28 -22
- data/manual/graphics/graphics.rb +52 -46
- data/manual/graphics/helper.rb +20 -10
- data/manual/graphics/line_width.rb +13 -12
- data/manual/graphics/lines_and_curves.rb +13 -14
- data/manual/graphics/polygon.rb +10 -12
- data/manual/graphics/rectangle.rb +7 -8
- data/manual/graphics/rotate.rb +9 -12
- data/manual/graphics/scale.rb +19 -18
- data/manual/graphics/soft_masks.rb +5 -7
- data/manual/graphics/stroke_cap.rb +10 -11
- data/manual/graphics/stroke_dash.rb +16 -17
- data/manual/graphics/stroke_join.rb +10 -11
- data/manual/graphics/translate.rb +13 -13
- data/manual/graphics/transparency.rb +11 -13
- data/manual/{manual/how_to_read_this_manual.rb → how_to_read_this_manual.rb} +23 -25
- data/manual/images/absolute_position.rb +9 -10
- data/manual/images/fit.rb +9 -10
- data/manual/images/horizontal.rb +13 -14
- data/manual/images/images.rb +31 -30
- data/manual/images/plain_image.rb +6 -7
- data/manual/images/scale.rb +12 -13
- data/manual/images/vertical.rb +19 -17
- data/manual/images/width_and_height.rb +13 -14
- data/manual/layout/boxes.rb +14 -15
- data/manual/layout/content.rb +12 -13
- data/manual/layout/layout.rb +19 -20
- data/manual/layout/simple_grid.rb +8 -9
- data/manual/outline/add_subsection_to.rb +26 -27
- data/manual/outline/insert_section_after.rb +19 -20
- data/manual/outline/outline.rb +23 -22
- data/manual/outline/sections_and_pages.rb +24 -25
- data/manual/repeatable_content/alternate_page_numbering.rb +36 -0
- data/manual/repeatable_content/page_numbering.rb +20 -19
- data/manual/repeatable_content/repeatable_content.rb +26 -22
- data/manual/repeatable_content/repeater.rb +18 -19
- data/manual/repeatable_content/stamp.rb +18 -19
- data/manual/security/encryption.rb +8 -11
- data/manual/security/permissions.rb +20 -15
- data/manual/security/security.rb +20 -20
- data/manual/table.rb +16 -0
- data/manual/text/alignment.rb +17 -18
- data/manual/text/color.rb +13 -13
- data/manual/text/column_box.rb +10 -12
- data/manual/text/fallback_fonts.rb +29 -25
- data/manual/text/font.rb +17 -18
- data/manual/text/font_size.rb +21 -22
- data/manual/text/font_style.rb +12 -10
- data/manual/text/formatted_callbacks.rb +36 -26
- data/manual/text/formatted_text.rb +41 -34
- data/manual/text/free_flowing_text.rb +28 -29
- data/manual/text/inline.rb +23 -26
- data/manual/text/kerning_and_character_spacing.rb +20 -21
- data/manual/text/leading.rb +10 -11
- data/manual/text/line_wrapping.rb +40 -21
- data/manual/text/paragraph_indentation.rb +17 -12
- data/manual/text/positioned_text.rb +19 -20
- data/manual/text/registering_families.rb +33 -30
- data/manual/text/rendering_and_color.rb +11 -12
- data/manual/text/right_to_left_text.rb +31 -20
- data/manual/text/rotation.rb +36 -27
- data/manual/text/single_usage.rb +13 -14
- data/manual/text/text.rb +62 -62
- data/manual/text/text_box_excess.rb +22 -19
- data/manual/text/text_box_extensions.rb +21 -18
- data/manual/text/text_box_overflow.rb +28 -21
- data/manual/text/utf8.rb +16 -17
- data/manual/text/win_ansi_charset.rb +29 -26
- data/prawn.gemspec +45 -43
- data/spec/extensions/encoding_helpers.rb +4 -3
- data/spec/prawn/document/bounding_box_spec.rb +550 -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 +44 -0
- data/spec/prawn/document_spec.rb +805 -0
- data/spec/prawn/font_metric_cache_spec.rb +54 -0
- data/spec/prawn/font_spec.rb +544 -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 +872 -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 +229 -0
- data/spec/prawn/measurements_extensions_spec.rb +24 -0
- data/spec/prawn/outline_spec.rb +512 -0
- data/spec/prawn/repeater_spec.rb +166 -0
- data/spec/prawn/soft_mask_spec.rb +74 -0
- data/spec/prawn/stamp_spec.rb +173 -0
- data/spec/prawn/text/box_spec.rb +1110 -0
- data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
- data/spec/prawn/text/formatted/box_spec.rb +849 -0
- data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
- data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
- data/spec/prawn/text/formatted/parser_spec.rb +697 -0
- data/spec/prawn/text_draw_text_spec.rb +150 -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 +22 -21
- data.tar.gz.sig +0 -0
- metadata +168 -307
- metadata.gz.sig +0 -0
- data/README.md +0 -109
- data/data/encodings/win_ansi.txt +0 -29
- data/data/images/16bit.alpha +0 -0
- data/data/images/16bit.dat +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/barcode_issue.png +0 -0
- data/data/images/dice.alpha +0 -0
- data/data/images/dice.dat +0 -0
- data/data/images/dice.png +0 -0
- data/data/images/dice_interlaced.png +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/page_white_text.alpha +0 -0
- data/data/images/page_white_text.dat +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/lib/pdf/core/annotations.rb +0 -60
- data/lib/pdf/core/byte_string.rb +0 -9
- data/lib/pdf/core/destinations.rb +0 -90
- data/lib/pdf/core/document_state.rb +0 -78
- data/lib/pdf/core/filter_list.rb +0 -51
- data/lib/pdf/core/filters.rb +0 -36
- data/lib/pdf/core/graphics_state.rb +0 -68
- data/lib/pdf/core/literal_string.rb +0 -16
- data/lib/pdf/core/name_tree.rb +0 -177
- data/lib/pdf/core/object_store.rb +0 -320
- data/lib/pdf/core/outline.rb +0 -315
- data/lib/pdf/core/page.rb +0 -212
- data/lib/pdf/core/page_geometry.rb +0 -126
- data/lib/pdf/core/pdf_object.rb +0 -124
- data/lib/pdf/core/reference.rb +0 -103
- data/lib/pdf/core/stream.rb +0 -98
- data/lib/pdf/core/text.rb +0 -275
- data/lib/pdf/core.rb +0 -35
- data/lib/prawn/compatibility.rb +0 -91
- data/lib/prawn/document/graphics_state.rb +0 -73
- data/lib/prawn/document/snapshot.rb +0 -89
- data/lib/prawn/font/afm.rb +0 -203
- data/lib/prawn/layout.rb +0 -20
- data/lib/prawn/table/cell/image.rb +0 -70
- data/lib/prawn/table/cell/in_table.rb +0 -27
- data/lib/prawn/table/cell/span_dummy.rb +0 -92
- data/lib/prawn/table/cell/subtable.rb +0 -65
- data/lib/prawn/table/cell/text.rb +0 -153
- data/lib/prawn/table/cell.rb +0 -770
- data/lib/prawn/table/cells.rb +0 -295
- data/lib/prawn/table.rb +0 -643
- data/manual/example_file.rb +0 -116
- data/manual/example_package.rb +0 -53
- data/manual/example_section.rb +0 -46
- data/manual/manual/cover.rb +0 -35
- data/manual/manual/foreword.rb +0 -85
- data/manual/manual/manual.rb +0 -35
- data/manual/syntax_highlight.rb +0 -52
- data/manual/table/basic_block.rb +0 -53
- data/manual/table/before_rendering_page.rb +0 -26
- data/manual/table/cell_border_lines.rb +0 -24
- data/manual/table/cell_borders_and_bg.rb +0 -31
- data/manual/table/cell_dimensions.rb +0 -30
- data/manual/table/cell_text.rb +0 -38
- data/manual/table/column_widths.rb +0 -30
- data/manual/table/content_and_subtables.rb +0 -39
- data/manual/table/creation.rb +0 -27
- data/manual/table/filtering.rb +0 -36
- data/manual/table/flow_and_header.rb +0 -17
- data/manual/table/image_cells.rb +0 -33
- data/manual/table/position.rb +0 -29
- data/manual/table/row_colors.rb +0 -20
- data/manual/table/span.rb +0 -30
- data/manual/table/style.rb +0 -22
- data/manual/table/table.rb +0 -52
- data/manual/table/width.rb +0 -27
- data/manual/templates/full_template.rb +0 -25
- data/manual/templates/page_template.rb +0 -48
- data/manual/templates/templates.rb +0 -27
- data/manual/text/group.rb +0 -29
- data/spec/acceptance/png.rb +0 -23
- data/spec/annotations_spec.rb +0 -74
- data/spec/bounding_box_spec.rb +0 -493
- data/spec/cell_spec.rb +0 -628
- data/spec/column_box_spec.rb +0 -33
- data/spec/destinations_spec.rb +0 -15
- data/spec/document_spec.rb +0 -761
- data/spec/extensions/mocha.rb +0 -44
- data/spec/filters_spec.rb +0 -34
- data/spec/font_metric_cache_spec.rb +0 -52
- data/spec/font_spec.rb +0 -464
- data/spec/formatted_text_arranger_spec.rb +0 -421
- data/spec/formatted_text_box_spec.rb +0 -650
- data/spec/formatted_text_fragment_spec.rb +0 -298
- data/spec/graphics_spec.rb +0 -651
- data/spec/grid_spec.rb +0 -85
- data/spec/image_handler_spec.rb +0 -42
- data/spec/images_spec.rb +0 -157
- data/spec/inline_formatted_text_parser_spec.rb +0 -564
- data/spec/jpg_spec.rb +0 -25
- data/spec/line_wrap_spec.rb +0 -333
- data/spec/measurement_units_spec.rb +0 -23
- data/spec/name_tree_spec.rb +0 -112
- data/spec/object_store_spec.rb +0 -170
- data/spec/outline_spec.rb +0 -448
- data/spec/pdf_object_spec.rb +0 -172
- data/spec/png_spec.rb +0 -240
- data/spec/reference_spec.rb +0 -82
- data/spec/repeater_spec.rb +0 -158
- data/spec/security_spec.rb +0 -158
- data/spec/snapshot_spec.rb +0 -186
- data/spec/soft_mask_spec.rb +0 -117
- data/spec/span_spec.rb +0 -44
- data/spec/stamp_spec.rb +0 -158
- data/spec/stream_spec.rb +0 -58
- data/spec/stroke_styles_spec.rb +0 -211
- data/spec/table/span_dummy_spec.rb +0 -17
- data/spec/table_spec.rb +0 -1355
- data/spec/template_spec.rb +0 -351
- data/spec/text_at_spec.rb +0 -130
- data/spec/text_box_spec.rb +0 -1030
- data/spec/text_rendering_mode_spec.rb +0 -45
- data/spec/text_spacing_spec.rb +0 -93
- data/spec/text_spec.rb +0 -425
- data/spec/text_with_inline_formatting_spec.rb +0 -35
- data/spec/transparency_spec.rb +0 -89
data/manual/security/security.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Examples for document encryption.
|
4
|
-
#
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
6
|
-
%w[.. example_helper]))
|
7
4
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
p.example
|
13
|
-
p.example
|
14
|
-
|
5
|
+
require_relative '../example_helper'
|
6
|
+
|
7
|
+
Prawn::ManualBuilder::Example.generate('security.pdf', page_size: 'FOLIO') do
|
8
|
+
package 'security' do |p|
|
9
|
+
p.example 'encryption', eval_source: false, full_source: true
|
10
|
+
p.example 'permissions', eval_source: false, full_source: true
|
11
|
+
|
15
12
|
p.intro do
|
16
|
-
prose
|
13
|
+
prose <<-TEXT
|
14
|
+
Security lets you control who can read the document by defining
|
15
|
+
a password.
|
17
16
|
|
18
|
-
|
17
|
+
The examples include:
|
18
|
+
TEXT
|
19
19
|
|
20
|
-
list(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
list(
|
21
|
+
'How to encrypt the document without the need for a password',
|
22
|
+
'How to configure the regular user permissions',
|
23
|
+
'How to require a password for the regular user',
|
24
|
+
'How to set a owner password that bypass the document permissions'
|
25
|
+
)
|
25
26
|
end
|
26
|
-
|
27
27
|
end
|
28
28
|
end
|
data/manual/table.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'example_helper'
|
4
|
+
|
5
|
+
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
6
|
+
|
7
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
8
|
+
header('Prawn::Table')
|
9
|
+
|
10
|
+
prose <<-END_TEXT
|
11
|
+
As of Prawn 1.2.0, Prawn::Table has been extracted into its own
|
12
|
+
semi-officially supported gem.
|
13
|
+
|
14
|
+
Please see https://github.com/prawnpdf/prawn-table for more details.
|
15
|
+
END_TEXT
|
16
|
+
end
|
data/manual/text/alignment.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Horizontal text alignment can be achieved by supplying the <code>:align</code>
|
4
4
|
# option to the text methods. Available options are <code>:left</code>
|
5
5
|
# (default), <code>:right</code>, <code>:center</code>, and
|
@@ -11,34 +11,33 @@
|
|
11
11
|
#
|
12
12
|
# Both forms of alignment will be evaluated in the context of the current
|
13
13
|
# bounding_box.
|
14
|
-
|
15
|
-
|
16
|
-
%w[.. example_helper]))
|
14
|
+
|
15
|
+
require_relative '../example_helper'
|
17
16
|
|
18
17
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
19
|
-
Prawn::Example.generate(filename) do
|
20
|
-
text
|
21
|
-
text
|
22
|
-
text
|
18
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
19
|
+
text 'This text should be left aligned'
|
20
|
+
text 'This text should be centered', align: :center
|
21
|
+
text 'This text should be right aligned', align: :right
|
23
22
|
|
24
|
-
bounding_box([0, 220], :
|
25
|
-
text
|
23
|
+
bounding_box([0, 220], width: 250, height: 220) do
|
24
|
+
text 'This text is flowing from the left. ' * 4
|
26
25
|
|
27
26
|
move_down 15
|
28
|
-
text
|
27
|
+
text 'This text is flowing from the center. ' * 3, align: :center
|
29
28
|
|
30
29
|
move_down 15
|
31
|
-
text
|
30
|
+
text 'This text is flowing from the right. ' * 4, align: :right
|
32
31
|
|
33
32
|
move_down 15
|
34
|
-
text
|
33
|
+
text 'This text is justified. ' * 6, align: :justify
|
35
34
|
transparent(0.5) { stroke_bounds }
|
36
35
|
end
|
37
36
|
|
38
|
-
bounding_box([300, 220], :
|
39
|
-
text
|
40
|
-
text
|
41
|
-
text
|
37
|
+
bounding_box([300, 220], width: 250, height: 220) do
|
38
|
+
text 'This text should be vertically top aligned'
|
39
|
+
text 'This text should be vertically centered', valign: :center
|
40
|
+
text 'This text should be vertically bottom aligned', valign: :bottom
|
42
41
|
transparent(0.5) { stroke_bounds }
|
43
42
|
end
|
44
43
|
end
|
data/manual/text/color.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The <code>:color</code> attribute can give a block of text a default color,
|
4
4
|
# in RGB hex format or 4-value 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
|
-
Prawn::Example.generate(filename) do
|
11
|
-
text
|
9
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
10
|
+
text 'Default color is black'
|
12
11
|
move_down 25
|
13
12
|
|
14
|
-
text
|
13
|
+
text 'Changed to red', color: 'FF0000'
|
15
14
|
move_down 25
|
16
15
|
|
17
|
-
text
|
16
|
+
text 'CMYK color', color: [22, 55, 79, 30]
|
18
17
|
move_down 25
|
19
18
|
|
20
|
-
text
|
21
|
-
|
22
|
-
|
19
|
+
text(
|
20
|
+
"Also works with <color rgb='ff0000'>inline</color> formatting",
|
21
|
+
color: '0000FF',
|
22
|
+
inline_format: true
|
23
|
+
)
|
23
24
|
end
|
24
|
-
|
data/manual/text/column_box.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The <code>column_box</code> method allows you to define columns that flow
|
4
4
|
# their contents from one section to the next. You can have a number of columns
|
5
5
|
# on the page, and only when the last column overflows will a new page be
|
6
6
|
# created.
|
7
|
-
|
8
|
-
|
9
|
-
%w[.. example_helper]))
|
7
|
+
|
8
|
+
require_relative '../example_helper'
|
10
9
|
|
11
10
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
12
|
-
Prawn::Example.generate(filename) do
|
13
|
-
text
|
14
|
-
text
|
11
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
12
|
+
text 'The Prince', align: :center, size: 18
|
13
|
+
text 'Niccolò Machiavelli', align: :center, size: 14
|
15
14
|
move_down 12
|
16
15
|
|
17
|
-
column_box([0, cursor], :
|
18
|
-
text(
|
16
|
+
column_box([0, cursor], columns: 2, width: bounds.width) do
|
17
|
+
text("#{<<~TEXT.gsub(/\s+/, ' ')}\n\n" * 3)
|
19
18
|
All the States and Governments by which men are or ever have been ruled,
|
20
19
|
have been and are either Republics or Princedoms. Princedoms are either
|
21
20
|
hereditary, in which the sovereignty is derived through an ancient line
|
@@ -26,7 +25,6 @@ Prawn::Example.generate(filename) do
|
|
26
25
|
acquired have either been used to live under a Prince or have been free;
|
27
26
|
and he who acquires them does so either by his own arms or by the arms of
|
28
27
|
others, and either by good fortune or by merit.
|
29
|
-
|
28
|
+
TEXT
|
30
29
|
end
|
31
30
|
end
|
32
|
-
|
@@ -1,37 +1,41 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Prawn enables the declaration of fallback fonts for those glyphs that may not
|
4
4
|
# be present in the desired font. Use the <code>:fallback_fonts</code> option
|
5
5
|
# with any of the text or text box methods, or set fallback_fonts document-wide.
|
6
|
-
|
7
|
-
|
8
|
-
%w[.. example_helper]))
|
6
|
+
|
7
|
+
require_relative '../example_helper'
|
9
8
|
|
10
9
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
11
|
-
Prawn::Example.generate(filename) do
|
10
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
12
11
|
file = "#{Prawn::DATADIR}/fonts/gkai00mp.ttf"
|
13
|
-
font_families[
|
14
|
-
:
|
12
|
+
font_families['Kai'] = {
|
13
|
+
normal: { file: file, font: 'Kai' }
|
15
14
|
}
|
16
|
-
|
17
|
-
file = "#{Prawn::DATADIR}/fonts/
|
18
|
-
font_families[
|
19
|
-
:
|
15
|
+
|
16
|
+
file = "#{Prawn::DATADIR}/fonts/Panic+Sans.dfont"
|
17
|
+
font_families['Panic Sans'] = {
|
18
|
+
normal: { file: file, font: 'PanicSans' }
|
20
19
|
}
|
21
|
-
|
22
|
-
font(
|
23
|
-
text(
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
|
21
|
+
font('Panic Sans') do
|
22
|
+
text(
|
23
|
+
'When fallback fonts are included, each glyph will be rendered ' \
|
24
|
+
'using the first font that includes the glyph, starting with the ' \
|
25
|
+
'current font and then moving through the fallback fonts from left ' \
|
26
|
+
'to right.' \
|
27
|
+
"\n\n" \
|
28
|
+
"hello ƒ 你好\n再见 ƒ goodbye",
|
29
|
+
fallback_fonts: %w[Times-Roman Kai]
|
30
|
+
)
|
30
31
|
end
|
31
32
|
move_down 20
|
32
33
|
|
33
|
-
formatted_text(
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
formatted_text(
|
35
|
+
[
|
36
|
+
{ text: 'Fallback fonts can even override' },
|
37
|
+
{ text: 'fragment fonts (你好)', font: 'Times-Roman' }
|
38
|
+
],
|
39
|
+
fallback_fonts: %w[Times-Roman Kai]
|
40
|
+
)
|
37
41
|
end
|
data/manual/text/font.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The <code>font</code> method can be used in three different ways.
|
4
4
|
#
|
5
5
|
# If we don't pass it any arguments it will return the current font being used
|
@@ -12,30 +12,29 @@
|
|
12
12
|
# specified font will only be used to render text inside the block.
|
13
13
|
#
|
14
14
|
# The default font is Helvetica.
|
15
|
-
|
16
|
-
|
17
|
-
%w[.. example_helper]))
|
15
|
+
|
16
|
+
require_relative '../example_helper'
|
18
17
|
|
19
18
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
20
|
-
Prawn::Example.generate(filename) do
|
19
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
21
20
|
text "Let's see which font we are using: #{font.inspect}"
|
22
|
-
|
21
|
+
|
23
22
|
move_down 20
|
24
|
-
font
|
25
|
-
text
|
26
|
-
|
23
|
+
font 'Times-Roman'
|
24
|
+
text 'Written in Times.'
|
25
|
+
|
27
26
|
move_down 20
|
28
|
-
font(
|
29
|
-
text
|
27
|
+
font('Courier') do
|
28
|
+
text 'Written in Courier because we are inside the block.'
|
30
29
|
end
|
31
|
-
|
30
|
+
|
32
31
|
move_down 20
|
33
|
-
text
|
34
|
-
|
32
|
+
text 'Written in Times again as we left the previous block.'
|
33
|
+
|
35
34
|
move_down 20
|
36
35
|
text "Let's see which font we are using again: #{font.inspect}"
|
37
|
-
|
36
|
+
|
38
37
|
move_down 20
|
39
|
-
font
|
40
|
-
text
|
38
|
+
font 'Helvetica'
|
39
|
+
text 'Back to normal.'
|
41
40
|
end
|
data/manual/text/font_size.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The <code>font_size</code> method works just like the <code>font</code>
|
4
4
|
# method.
|
5
5
|
#
|
@@ -10,36 +10,35 @@
|
|
10
10
|
# option to the text methods.
|
11
11
|
#
|
12
12
|
# The default font size is <code>12</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
|
-
Prawn::Example.generate(filename) do
|
17
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
19
18
|
text "Let's see which is the current font_size: #{font_size.inspect}"
|
20
|
-
|
19
|
+
|
21
20
|
move_down 10
|
22
21
|
font_size 16
|
23
|
-
text
|
24
|
-
|
22
|
+
text 'Yeah, something bigger!'
|
23
|
+
|
25
24
|
move_down 10
|
26
|
-
font_size(25) { text
|
27
|
-
|
25
|
+
font_size(25) { text 'Even bigger!' }
|
26
|
+
|
28
27
|
move_down 10
|
29
|
-
text
|
30
|
-
|
28
|
+
text 'Back to 16 again.'
|
29
|
+
|
31
30
|
move_down 10
|
32
|
-
text
|
33
|
-
|
31
|
+
text 'Single line on 20 using the :size option.', size: 20
|
32
|
+
|
34
33
|
move_down 10
|
35
|
-
text
|
36
|
-
|
34
|
+
text 'Back to 16 once more.'
|
35
|
+
|
37
36
|
move_down 10
|
38
|
-
font(
|
39
|
-
text
|
37
|
+
font('Courier', size: 10) do
|
38
|
+
text 'Yeah, using Courier 10 courtesy of the font method.'
|
40
39
|
end
|
41
|
-
|
40
|
+
|
42
41
|
move_down 10
|
43
|
-
font(
|
44
|
-
text
|
42
|
+
font('Helvetica', size: 12)
|
43
|
+
text 'Back to normal'
|
45
44
|
end
|
data/manual/text/font_style.rb
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# Most font families come with some styles other than normal. Most common are
|
4
4
|
# <code>bold</code>, <code>italic</code> and <code>bold_italic</code>.
|
5
5
|
#
|
6
6
|
# The style can be set the using the <code>:style</code> option, with either the
|
7
7
|
# <code>font</code> method which will set the font and style for rest of the
|
8
8
|
# document, or with the inline text methods.
|
9
|
-
|
10
|
-
|
11
|
-
%w[.. example_helper]))
|
9
|
+
|
10
|
+
require_relative '../example_helper'
|
12
11
|
|
13
12
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
14
|
-
Prawn::Example.generate(filename) do
|
15
|
-
[
|
13
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
14
|
+
fonts = %w[Courier Helvetica Times-Roman]
|
15
|
+
styles = %i[bold bold_italic italic normal]
|
16
|
+
|
17
|
+
fonts.each do |example_font|
|
16
18
|
move_down 20
|
17
|
-
|
18
|
-
|
19
|
-
font example_font, :
|
19
|
+
|
20
|
+
styles.each do |style|
|
21
|
+
font example_font, style: style
|
20
22
|
text "I'm writing in #{example_font} (#{style})"
|
21
23
|
end
|
22
24
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# The <code>:callback</code> option is also available for the formatted text
|
4
4
|
# methods.
|
5
5
|
#
|
@@ -10,51 +10,61 @@
|
|
10
10
|
#
|
11
11
|
# This example defines two new callback classes and provide callback objects
|
12
12
|
# for the formatted_text
|
13
|
-
|
14
|
-
|
15
|
-
%w[.. example_helper]))
|
13
|
+
|
14
|
+
require_relative '../example_helper'
|
16
15
|
|
17
16
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
18
|
-
Prawn::Example.generate(filename) do
|
17
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
19
18
|
class HighlightCallback
|
20
19
|
def initialize(options)
|
21
|
-
@color
|
20
|
+
@color = options[:color]
|
22
21
|
@document = options[:document]
|
23
22
|
end
|
24
23
|
|
25
24
|
def render_behind(fragment)
|
26
|
-
original_color
|
25
|
+
original_color = @document.fill_color
|
27
26
|
@document.fill_color = @color
|
28
|
-
@document.fill_rectangle(
|
29
|
-
|
27
|
+
@document.fill_rectangle(
|
28
|
+
fragment.top_left,
|
29
|
+
fragment.width,
|
30
|
+
fragment.height
|
31
|
+
)
|
30
32
|
@document.fill_color = original_color
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
36
|
class ConnectedBorderCallback
|
35
37
|
def initialize(options)
|
36
|
-
@radius
|
38
|
+
@radius = options[:radius]
|
37
39
|
@document = options[:document]
|
38
40
|
end
|
39
41
|
|
40
42
|
def render_in_front(fragment)
|
41
|
-
@document.stroke_polygon(
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
@document.stroke_polygon(
|
44
|
+
fragment.top_left,
|
45
|
+
fragment.top_right,
|
46
|
+
fragment.bottom_right,
|
47
|
+
fragment.bottom_left
|
48
|
+
)
|
49
|
+
|
50
|
+
@document.fill_circle(fragment.top_left, @radius)
|
51
|
+
@document.fill_circle(fragment.top_right, @radius)
|
46
52
|
@document.fill_circle(fragment.bottom_right, @radius)
|
47
|
-
@document.fill_circle(fragment.bottom_left,
|
53
|
+
@document.fill_circle(fragment.bottom_left, @radius)
|
48
54
|
end
|
49
55
|
end
|
50
56
|
|
51
|
-
highlight = HighlightCallback.new(:
|
52
|
-
border
|
53
|
-
|
54
|
-
formatted_text
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
highlight = HighlightCallback.new(color: 'ffff00', document: self)
|
58
|
+
border = ConnectedBorderCallback.new(radius: 2.5, document: self)
|
59
|
+
|
60
|
+
formatted_text(
|
61
|
+
[
|
62
|
+
{ text: 'hello', callback: highlight },
|
63
|
+
{ text: ' ' },
|
64
|
+
{ text: 'world', callback: border },
|
65
|
+
{ text: ' ' },
|
66
|
+
{ text: 'hello world', callback: [highlight, border] }
|
67
|
+
],
|
68
|
+
size: 20
|
69
|
+
)
|
60
70
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
# There are two other text methods available: <code>formatted_text</code> and
|
4
4
|
# <code>formatted_text_box</code>.
|
5
5
|
#
|
@@ -17,38 +17,45 @@
|
|
17
17
|
# <code>:character_spacing</code> (additional space between the characters),
|
18
18
|
# <code>:font</code> (the name of a registered font), <code>:color</code> (the
|
19
19
|
# same input accepted by <code>fill_color</code> and <code>stroke_color</code>),
|
20
|
-
# <code>:link</code> (an URL to create a link), <code>:
|
21
|
-
#
|
22
|
-
|
23
|
-
|
24
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
25
|
-
%w[.. example_helper]))
|
20
|
+
# <code>:link</code> (an URL to create a link), and <code>:local</code>
|
21
|
+
# (a link to a local file).
|
22
|
+
|
23
|
+
require_relative '../example_helper'
|
26
24
|
|
27
25
|
filename = File.basename(__FILE__).gsub('.rb', '.pdf')
|
28
|
-
Prawn::Example.generate(filename) do
|
29
|
-
formatted_text
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
26
|
+
Prawn::ManualBuilder::Example.generate(filename) do
|
27
|
+
formatted_text([
|
28
|
+
{ text: 'Some bold. ', styles: [:bold] },
|
29
|
+
{ text: 'Some italic. ', styles: [:italic] },
|
30
|
+
{ text: 'Bold italic. ', styles: %i[bold italic] },
|
31
|
+
{ text: 'Bigger Text. ', size: 20 },
|
32
|
+
{ text: 'More spacing. ', character_spacing: 3 },
|
33
|
+
{ text: 'Different Font. ', font: 'Courier' },
|
34
|
+
{ text: 'Some coloring. ', color: 'FF00FF' },
|
35
|
+
{
|
36
|
+
text: 'Link to the wiki. ',
|
37
|
+
color: '0000FF',
|
38
|
+
link: 'https://github.com/prawnpdf/prawn/wiki'
|
39
|
+
},
|
40
|
+
{
|
41
|
+
text: 'Link to a local file. ',
|
42
|
+
color: '0000FF',
|
43
|
+
local: './local_file.txt'
|
44
|
+
}
|
45
|
+
])
|
46
|
+
|
47
|
+
formatted_text_box(
|
48
|
+
[
|
49
|
+
{ text: 'Just your regular' },
|
50
|
+
{ text: ' text_box ', font: 'Courier' },
|
51
|
+
{
|
52
|
+
text: 'with some additional formatting options added to the mix.',
|
53
|
+
color: [50, 100, 0, 0],
|
54
|
+
styles: [:italic]
|
55
|
+
}
|
56
|
+
],
|
57
|
+
at: [100, 100],
|
58
|
+
width: 200,
|
59
|
+
height: 100
|
60
|
+
)
|
54
61
|
end
|