prawn-layout 0.3.2 → 0.7.1
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.
- data/README +1 -0
- data/Rakefile +6 -3
- data/lib/prawn/layout.rb +1 -1
- data/lib/prawn/layout/page.rb +0 -40
- data/lib/prawn/table/cell.rb +15 -13
- metadata +31 -309
- data/examples/page_layout/flowing_text_with_header_and_footer.rb +0 -36
- data/spec/page_layout_spec.rb +0 -41
- data/vendor/prawn-core/COPYING +0 -340
- data/vendor/prawn-core/HACKING +0 -46
- data/vendor/prawn-core/LICENSE +0 -56
- data/vendor/prawn-core/README +0 -142
- data/vendor/prawn-core/Rakefile +0 -75
- data/vendor/prawn-core/bench/afm_text_bench.rb +0 -18
- data/vendor/prawn-core/bench/png_type_6.rb +0 -15
- data/vendor/prawn-core/bench/ttf_text_bench.rb +0 -19
- data/vendor/prawn-core/bugs/canvas_sets_y_to_0.rb +0 -15
- data/vendor/prawn-core/bugs/png_barcode_issue.rb +0 -11
- data/vendor/prawn-core/bugs/resolved/canvas_sets_y_to_0.rb +0 -15
- data/vendor/prawn-core/data/encodings/win_ansi.txt +0 -29
- data/vendor/prawn-core/data/fonts/Action Man.dfont +0 -0
- data/vendor/prawn-core/data/fonts/Activa.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Chalkboard.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Courier-Bold.afm +0 -342
- data/vendor/prawn-core/data/fonts/Courier-BoldOblique.afm +0 -342
- data/vendor/prawn-core/data/fonts/Courier-Oblique.afm +0 -342
- data/vendor/prawn-core/data/fonts/Courier.afm +0 -342
- data/vendor/prawn-core/data/fonts/DejaVuSans.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Dustismo_Roman.ttf +0 -0
- data/vendor/prawn-core/data/fonts/Helvetica-Bold.afm +0 -2827
- data/vendor/prawn-core/data/fonts/Helvetica-BoldOblique.afm +0 -2827
- data/vendor/prawn-core/data/fonts/Helvetica-Oblique.afm +0 -3051
- data/vendor/prawn-core/data/fonts/Helvetica.afm +0 -3051
- data/vendor/prawn-core/data/fonts/MustRead.html +0 -19
- data/vendor/prawn-core/data/fonts/Symbol.afm +0 -213
- data/vendor/prawn-core/data/fonts/Times-Bold.afm +0 -2588
- data/vendor/prawn-core/data/fonts/Times-BoldItalic.afm +0 -2384
- data/vendor/prawn-core/data/fonts/Times-Italic.afm +0 -2667
- data/vendor/prawn-core/data/fonts/Times-Roman.afm +0 -2419
- data/vendor/prawn-core/data/fonts/ZapfDingbats.afm +0 -225
- data/vendor/prawn-core/data/fonts/comicsans.ttf +0 -0
- data/vendor/prawn-core/data/fonts/gkai00mp.ttf +0 -0
- data/vendor/prawn-core/data/images/16bit.alpha +0 -0
- data/vendor/prawn-core/data/images/16bit.dat +0 -0
- data/vendor/prawn-core/data/images/16bit.png +0 -0
- data/vendor/prawn-core/data/images/arrow.png +0 -0
- data/vendor/prawn-core/data/images/arrow2.png +0 -0
- data/vendor/prawn-core/data/images/barcode_issue.png +0 -0
- data/vendor/prawn-core/data/images/dice.alpha +0 -0
- data/vendor/prawn-core/data/images/dice.dat +0 -0
- data/vendor/prawn-core/data/images/dice.png +0 -0
- data/vendor/prawn-core/data/images/dice_interlaced.png +0 -0
- data/vendor/prawn-core/data/images/fractal.jpg +0 -0
- data/vendor/prawn-core/data/images/letterhead.jpg +0 -0
- data/vendor/prawn-core/data/images/page_white_text.alpha +0 -0
- data/vendor/prawn-core/data/images/page_white_text.dat +0 -0
- data/vendor/prawn-core/data/images/page_white_text.png +0 -0
- data/vendor/prawn-core/data/images/pigs.jpg +0 -0
- data/vendor/prawn-core/data/images/rails.dat +0 -0
- data/vendor/prawn-core/data/images/rails.png +0 -0
- data/vendor/prawn-core/data/images/ruport.png +0 -0
- data/vendor/prawn-core/data/images/ruport_data.dat +0 -0
- data/vendor/prawn-core/data/images/ruport_transparent.png +0 -0
- data/vendor/prawn-core/data/images/ruport_type0.png +0 -0
- data/vendor/prawn-core/data/images/stef.jpg +0 -0
- data/vendor/prawn-core/data/images/tru256.bmp +0 -0
- data/vendor/prawn-core/data/images/web-links.dat +0 -1
- data/vendor/prawn-core/data/images/web-links.png +0 -0
- data/vendor/prawn-core/data/shift_jis_text.txt +0 -1
- data/vendor/prawn-core/examples/bounding_box/bounding_boxes.rb +0 -43
- data/vendor/prawn-core/examples/bounding_box/indentation.rb +0 -34
- data/vendor/prawn-core/examples/bounding_box/russian_boxes.rb +0 -36
- data/vendor/prawn-core/examples/bounding_box/stretched_nesting.rb +0 -67
- data/vendor/prawn-core/examples/column_box/column_box_example.rb +0 -43
- data/vendor/prawn-core/examples/example_helper.rb +0 -3
- data/vendor/prawn-core/examples/general/background.rb +0 -23
- data/vendor/prawn-core/examples/general/canvas.rb +0 -15
- data/vendor/prawn-core/examples/general/margin.rb +0 -36
- data/vendor/prawn-core/examples/general/measurement_units.rb +0 -51
- data/vendor/prawn-core/examples/general/metadata-info.rb +0 -16
- data/vendor/prawn-core/examples/general/multi_page_layout.rb +0 -18
- data/vendor/prawn-core/examples/general/page_geometry.rb +0 -31
- data/vendor/prawn-core/examples/general/page_numbering.rb +0 -15
- data/vendor/prawn-core/examples/general/stamp.rb +0 -45
- data/vendor/prawn-core/examples/graphics/basic_images.rb +0 -23
- data/vendor/prawn-core/examples/graphics/cmyk.rb +0 -12
- data/vendor/prawn-core/examples/graphics/curves.rb +0 -11
- data/vendor/prawn-core/examples/graphics/hexagon.rb +0 -13
- data/vendor/prawn-core/examples/graphics/image_fit.rb +0 -15
- data/vendor/prawn-core/examples/graphics/image_flow.rb +0 -37
- data/vendor/prawn-core/examples/graphics/image_position.rb +0 -17
- data/vendor/prawn-core/examples/graphics/line.rb +0 -32
- data/vendor/prawn-core/examples/graphics/png_types.rb +0 -22
- data/vendor/prawn-core/examples/graphics/polygons.rb +0 -16
- data/vendor/prawn-core/examples/graphics/remote_images.rb +0 -12
- data/vendor/prawn-core/examples/graphics/ruport_style_helpers.rb +0 -19
- data/vendor/prawn-core/examples/graphics/stroke_bounds.rb +0 -20
- data/vendor/prawn-core/examples/graphics/stroke_cap_and_join.rb +0 -45
- data/vendor/prawn-core/examples/graphics/stroke_dash.rb +0 -42
- data/vendor/prawn-core/examples/graphics/transparency.rb +0 -26
- data/vendor/prawn-core/examples/m17n/chinese_text_wrapping.rb +0 -19
- data/vendor/prawn-core/examples/m17n/euro.rb +0 -15
- data/vendor/prawn-core/examples/m17n/sjis.rb +0 -28
- data/vendor/prawn-core/examples/m17n/utf8.rb +0 -13
- data/vendor/prawn-core/examples/m17n/win_ansi_charset.rb +0 -54
- data/vendor/prawn-core/examples/text/alignment.rb +0 -18
- data/vendor/prawn-core/examples/text/dfont.rb +0 -48
- data/vendor/prawn-core/examples/text/family_based_styling.rb +0 -24
- data/vendor/prawn-core/examples/text/font_calculations.rb +0 -91
- data/vendor/prawn-core/examples/text/font_size.rb +0 -33
- data/vendor/prawn-core/examples/text/kerning.rb +0 -30
- data/vendor/prawn-core/examples/text/simple_text.rb +0 -17
- data/vendor/prawn-core/examples/text/simple_text_ttf.rb +0 -17
- data/vendor/prawn-core/examples/text/span.rb +0 -29
- data/vendor/prawn-core/examples/text/text_box.rb +0 -25
- data/vendor/prawn-core/examples/text/text_box_returning_excess.rb +0 -51
- data/vendor/prawn-core/examples/text/text_flow.rb +0 -67
- data/vendor/prawn-core/lib/prawn/byte_string.rb +0 -7
- data/vendor/prawn-core/lib/prawn/compatibility.rb +0 -38
- data/vendor/prawn-core/lib/prawn/core.rb +0 -85
- data/vendor/prawn-core/lib/prawn/document.rb +0 -534
- data/vendor/prawn-core/lib/prawn/document/annotations.rb +0 -65
- data/vendor/prawn-core/lib/prawn/document/bounding_box.rb +0 -390
- data/vendor/prawn-core/lib/prawn/document/column_box.rb +0 -102
- data/vendor/prawn-core/lib/prawn/document/destinations.rb +0 -92
- data/vendor/prawn-core/lib/prawn/document/internals.rb +0 -180
- data/vendor/prawn-core/lib/prawn/document/page_geometry.rb +0 -153
- data/vendor/prawn-core/lib/prawn/document/snapshot.rb +0 -71
- data/vendor/prawn-core/lib/prawn/document/span.rb +0 -55
- data/vendor/prawn-core/lib/prawn/document/text.rb +0 -184
- data/vendor/prawn-core/lib/prawn/document/text/box.rb +0 -90
- data/vendor/prawn-core/lib/prawn/document/text/wrapping.rb +0 -62
- data/vendor/prawn-core/lib/prawn/encoding.rb +0 -121
- data/vendor/prawn-core/lib/prawn/errors.rb +0 -61
- data/vendor/prawn-core/lib/prawn/font.rb +0 -297
- data/vendor/prawn-core/lib/prawn/font/afm.rb +0 -202
- data/vendor/prawn-core/lib/prawn/font/dfont.rb +0 -34
- data/vendor/prawn-core/lib/prawn/font/ttf.rb +0 -329
- data/vendor/prawn-core/lib/prawn/graphics.rb +0 -264
- data/vendor/prawn-core/lib/prawn/graphics/cap_style.rb +0 -35
- data/vendor/prawn-core/lib/prawn/graphics/color.rb +0 -141
- data/vendor/prawn-core/lib/prawn/graphics/dash.rb +0 -69
- data/vendor/prawn-core/lib/prawn/graphics/join_style.rb +0 -35
- data/vendor/prawn-core/lib/prawn/graphics/transparency.rb +0 -56
- data/vendor/prawn-core/lib/prawn/images.rb +0 -339
- data/vendor/prawn-core/lib/prawn/images/jpg.rb +0 -46
- data/vendor/prawn-core/lib/prawn/images/png.rb +0 -219
- data/vendor/prawn-core/lib/prawn/literal_string.rb +0 -14
- data/vendor/prawn-core/lib/prawn/measurement_extensions.rb +0 -46
- data/vendor/prawn-core/lib/prawn/measurements.rb +0 -71
- data/vendor/prawn-core/lib/prawn/name_tree.rb +0 -166
- data/vendor/prawn-core/lib/prawn/object_store.rb +0 -63
- data/vendor/prawn-core/lib/prawn/pdf_object.rb +0 -81
- data/vendor/prawn-core/lib/prawn/reference.rb +0 -72
- data/vendor/prawn-core/lib/prawn/stamp.rb +0 -87
- data/vendor/prawn-core/meta/Rakefile +0 -62
- data/vendor/prawn-core/meta/lib/prawn.rb +0 -2
- data/vendor/prawn-core/reference_pdfs/alignment.pdf +0 -229
- data/vendor/prawn-core/reference_pdfs/background.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/basic_images.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/bounding_boxes.pdf +0 -128
- data/vendor/prawn-core/reference_pdfs/canvas.pdf +0 -78
- data/vendor/prawn-core/reference_pdfs/chinese_flow.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/cmyk.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/column_box.pdf +0 -3671
- data/vendor/prawn-core/reference_pdfs/curves.pdf +0 -62
- data/vendor/prawn-core/reference_pdfs/dfont.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/euro.pdf +0 -75
- data/vendor/prawn-core/reference_pdfs/family_style.pdf +0 -286
- data/vendor/prawn-core/reference_pdfs/flow.pdf +0 -964
- data/vendor/prawn-core/reference_pdfs/font_calculations.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/font_size.pdf +0 -142
- data/vendor/prawn-core/reference_pdfs/hexagon.pdf +0 -61
- data/vendor/prawn-core/reference_pdfs/image-flow.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/image_fit.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/image_position.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/indentation.pdf +0 -124
- data/vendor/prawn-core/reference_pdfs/kerning.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/landscape_a4.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/landscape_legal.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/landscape_letter.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/lines.pdf +0 -116
- data/vendor/prawn-core/reference_pdfs/margin.pdf +0 -3850
- data/vendor/prawn-core/reference_pdfs/measurement_units.pdf +0 -4667
- data/vendor/prawn-core/reference_pdfs/metadata-info.pdf +0 -88
- data/vendor/prawn-core/reference_pdfs/multi-layout.pdf +0 -209
- data/vendor/prawn-core/reference_pdfs/page_with_numbering.pdf +0 -156
- data/vendor/prawn-core/reference_pdfs/png_types.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/portrait_a4.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/portrait_legal.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/portrait_letter.pdf +0 -52
- data/vendor/prawn-core/reference_pdfs/pretty_polygons.pdf +0 -122
- data/vendor/prawn-core/reference_pdfs/remote_images.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/ruport.pdf +0 -101
- data/vendor/prawn-core/reference_pdfs/russian_boxes.pdf +0 -2780
- data/vendor/prawn-core/reference_pdfs/simple_text.pdf +0 -136
- data/vendor/prawn-core/reference_pdfs/simple_text_ttf.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/sjis.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/span.pdf +0 -1975
- data/vendor/prawn-core/reference_pdfs/stamp.pdf +0 -696
- data/vendor/prawn-core/reference_pdfs/stretched_nesting.pdf +0 -200
- data/vendor/prawn-core/reference_pdfs/stroke_bounds.pdf +0 -135
- data/vendor/prawn-core/reference_pdfs/stroke_cap_and_join.pdf +0 -80
- data/vendor/prawn-core/reference_pdfs/stroke_dash.pdf +0 -457
- data/vendor/prawn-core/reference_pdfs/text_box.pdf +0 -315
- data/vendor/prawn-core/reference_pdfs/text_box_returning_excess.pdf +0 -271
- data/vendor/prawn-core/reference_pdfs/transparency.pdf +0 -347
- data/vendor/prawn-core/reference_pdfs/utf8.pdf +0 -0
- data/vendor/prawn-core/reference_pdfs/win-ansi.pdf +0 -6172
- data/vendor/prawn-core/spec/annotations_spec.rb +0 -90
- data/vendor/prawn-core/spec/bounding_box_spec.rb +0 -185
- data/vendor/prawn-core/spec/destinations_spec.rb +0 -15
- data/vendor/prawn-core/spec/document_spec.rb +0 -231
- data/vendor/prawn-core/spec/font_spec.rb +0 -273
- data/vendor/prawn-core/spec/graphics_spec.rb +0 -209
- data/vendor/prawn-core/spec/images_spec.rb +0 -79
- data/vendor/prawn-core/spec/jpg_spec.rb +0 -25
- data/vendor/prawn-core/spec/measurement_units_spec.rb +0 -23
- data/vendor/prawn-core/spec/name_tree_spec.rb +0 -112
- data/vendor/prawn-core/spec/object_store_spec.rb +0 -42
- data/vendor/prawn-core/spec/pdf_object_spec.rb +0 -122
- data/vendor/prawn-core/spec/png_spec.rb +0 -236
- data/vendor/prawn-core/spec/reference_spec.rb +0 -82
- data/vendor/prawn-core/spec/snapshot_spec.rb +0 -115
- data/vendor/prawn-core/spec/span_spec.rb +0 -45
- data/vendor/prawn-core/spec/spec_helper.rb +0 -20
- data/vendor/prawn-core/spec/stamp_spec.rb +0 -98
- data/vendor/prawn-core/spec/stroke_styles_spec.rb +0 -152
- data/vendor/prawn-core/spec/text_box_spec.rb +0 -109
- data/vendor/prawn-core/spec/text_spec.rb +0 -185
- data/vendor/prawn-core/spec/transparency_spec.rb +0 -61
- data/vendor/prawn-core/vendor/pdf-inspector/README +0 -18
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector.rb +0 -26
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/extgstate.rb +0 -18
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +0 -119
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/page.rb +0 -25
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/text.rb +0 -31
- data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +0 -19
- data/vendor/prawn-core/vendor/ttfunk/data/fonts/DejaVuSans.ttf +0 -0
- data/vendor/prawn-core/vendor/ttfunk/data/fonts/comicsans.ttf +0 -0
- data/vendor/prawn-core/vendor/ttfunk/example.rb +0 -45
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk.rb +0 -102
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/directory.rb +0 -17
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/mac_roman.rb +0 -88
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/windows_1252.rb +0 -69
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/reader.rb +0 -44
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/resource_file.rb +0 -78
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset.rb +0 -18
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/base.rb +0 -141
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/mac_roman.rb +0 -46
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode.rb +0 -48
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode_8bit.rb +0 -63
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/windows_1252.rb +0 -51
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset_collection.rb +0 -72
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table.rb +0 -46
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap.rb +0 -34
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format00.rb +0 -54
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format04.rb +0 -126
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/subtable.rb +0 -79
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf.rb +0 -64
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/compound.rb +0 -81
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/simple.rb +0 -37
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/head.rb +0 -44
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hhea.rb +0 -41
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +0 -47
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern.rb +0 -79
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern/format0.rb +0 -62
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/loca.rb +0 -43
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/maxp.rb +0 -40
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/name.rb +0 -119
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/os2.rb +0 -78
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post.rb +0 -91
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format10.rb +0 -43
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format20.rb +0 -35
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format25.rb +0 -23
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format30.rb +0 -17
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format40.rb +0 -17
- data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/simple.rb +0 -14
- data/vendor/prawn-core/www/index.html +0 -196
- data/vendor/prawn-core/www/media/bounding_boxes.pdf +0 -146
- data/vendor/prawn-core/www/media/bounding_boxes.png +0 -0
- data/vendor/prawn-core/www/media/bounding_boxes_out.png +0 -0
- data/vendor/prawn-core/www/media/fancy_table.pdf +0 -350
- data/vendor/prawn-core/www/media/image.pdf +0 -0
- data/vendor/prawn-core/www/media/images.png +0 -0
- data/vendor/prawn-core/www/media/prawn_logo.png +0 -0
- data/vendor/prawn-core/www/media/tables.png +0 -0
- data/vendor/prawn-core/www/media/utf8.pdf +0 -0
- data/vendor/prawn-core/www/media/utf8.png +0 -0
- data/vendor/prawn-core/www/prawn-Chinese.html +0 -113
- data/vendor/prawn-core/www/prawn.css +0 -86
- data/vendor/prawn-core/www/twilight.css +0 -266
@@ -1,65 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# annotations.rb : Implements low-level annotation support for PDF
|
4
|
-
#
|
5
|
-
# Copyright November 2008, Jamis Buck. All Rights Reserved.
|
6
|
-
#
|
7
|
-
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
-
|
9
|
-
require 'prawn/literal_string'
|
10
|
-
|
11
|
-
module Prawn
|
12
|
-
class Document
|
13
|
-
|
14
|
-
# Provides very low-level support for annotations. These extensions are
|
15
|
-
# mainly for use by prawn-format, so be sure to check that out if all
|
16
|
-
# you need is basic internal or external links.
|
17
|
-
#
|
18
|
-
module Annotations
|
19
|
-
|
20
|
-
# Adds a new annotation (section 8.4 in PDF spec) to the current page.
|
21
|
-
# +options+ must be a Hash describing the annotation.
|
22
|
-
#
|
23
|
-
def annotate(options)
|
24
|
-
current_page.data[:Annots] ||= []
|
25
|
-
options = sanitize_annotation_hash(options)
|
26
|
-
current_page.data[:Annots] << ref(options)
|
27
|
-
return options
|
28
|
-
end
|
29
|
-
|
30
|
-
# A convenience method for creating Text annotations. +rect+ must be an array
|
31
|
-
# of four numbers, describing the bounds of the annotation. +contents+ should
|
32
|
-
# be a string, to be shown when the annotation is activated.
|
33
|
-
#
|
34
|
-
def text_annotation(rect, contents, options={})
|
35
|
-
options = options.merge(:Subtype => :Text, :Rect => rect, :Contents => contents)
|
36
|
-
annotate(options)
|
37
|
-
end
|
38
|
-
|
39
|
-
# A convenience method for creating Link annotations. +rect+ must be an array
|
40
|
-
# of four numbers, describing the bounds of the annotation. The +options+ hash
|
41
|
-
# should include either :Dest (describing the target destination, usually as a
|
42
|
-
# string that has been recorded in the document's Dests tree), or :A (describing
|
43
|
-
# an action to perform on clicking the link), or :PA (for describing a URL to
|
44
|
-
# link to).
|
45
|
-
#
|
46
|
-
def link_annotation(rect, options={})
|
47
|
-
options = options.merge(:Subtype => :Link, :Rect => rect)
|
48
|
-
annotate(options)
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def sanitize_annotation_hash(options)
|
54
|
-
options = options.merge(:Type => :Annot)
|
55
|
-
|
56
|
-
if options[:Dest].is_a?(String)
|
57
|
-
options[:Dest] = Prawn::LiteralString.new(options[:Dest])
|
58
|
-
end
|
59
|
-
|
60
|
-
options
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,390 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# bounding_box.rb : Implements a mechanism for shifting the coordinate space
|
4
|
-
#
|
5
|
-
# Copyright May 2008, Gregory Brown. All Rights Reserved.
|
6
|
-
#
|
7
|
-
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
|
-
|
9
|
-
module Prawn
|
10
|
-
class Document
|
11
|
-
|
12
|
-
# :call-seq:
|
13
|
-
# bounding_box(point, options={}, &block)
|
14
|
-
#
|
15
|
-
# A bounding box serves two important purposes:
|
16
|
-
# * Provide bounds for flowing text, starting at a given point
|
17
|
-
# * Translate the origin (0,0) for graphics primitives
|
18
|
-
#
|
19
|
-
# ==Positioning
|
20
|
-
#
|
21
|
-
# Bounding boxes are positioned relative to their top left corner and
|
22
|
-
# the width measurement is towards the right and height measurement is
|
23
|
-
# downwards.
|
24
|
-
#
|
25
|
-
# Usage:
|
26
|
-
#
|
27
|
-
# * Bounding box 100pt x 100pt in the absolute bottom left of the
|
28
|
-
# containing box:
|
29
|
-
#
|
30
|
-
# pdf.bounding_box([0,100], :width => 100, :height => 100)
|
31
|
-
# stroke_bounds
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# * Bounding box 200pt x 400pt high in the center of the page:
|
35
|
-
#
|
36
|
-
# x_pos = ((bounds.width / 2) - 150)
|
37
|
-
# y_pos = ((bounds.height / 2) + 200)
|
38
|
-
# pdf.bounding_box([x_pos, y_pos], :width => 300, :height => 400) do
|
39
|
-
# stroke_bounds
|
40
|
-
# end
|
41
|
-
#
|
42
|
-
# ==Flowing Text
|
43
|
-
#
|
44
|
-
# When flowing text, the usage of a bounding box is simple. Text will
|
45
|
-
# begin at the point specified, flowing the width of the bounding box.
|
46
|
-
# After the block exits, the cursor position will be moved to
|
47
|
-
# the bottom of the bounding box (y - height). If flowing text exceeds
|
48
|
-
# the height of the bounding box, the text will be continued on the next
|
49
|
-
# page, starting again at the top-left corner of the bounding box.
|
50
|
-
#
|
51
|
-
# Usage:
|
52
|
-
#
|
53
|
-
# pdf.bounding_box([100,500], :width => 100, :height => 300) do
|
54
|
-
# pdf.text "This text will flow in a very narrow box starting" +
|
55
|
-
# "from [100,500]. The pointer will then be moved to [100,200]" +
|
56
|
-
# "and return to the margin_box"
|
57
|
-
# end
|
58
|
-
#
|
59
|
-
# Note, this is a low level tool and is designed primarily for building
|
60
|
-
# other abstractions. If you just need to flow text on the page, you
|
61
|
-
# will want to look at span() and text_box() instead
|
62
|
-
#
|
63
|
-
# ==Translating Coordinates
|
64
|
-
#
|
65
|
-
# When translating coordinates, the idea is to allow the user to draw
|
66
|
-
# relative to the origin, and then translate their drawing to a specified
|
67
|
-
# area of the document, rather than adjust all their drawing coordinates
|
68
|
-
# to match this new region.
|
69
|
-
#
|
70
|
-
# Take for example two triangles which share one point, drawn from the
|
71
|
-
# origin:
|
72
|
-
#
|
73
|
-
# pdf.polygon [0,250], [0,0], [150,100]
|
74
|
-
# pdf.polygon [100,0], [150,100], [200,0]
|
75
|
-
#
|
76
|
-
# It would be easy enough to translate these triangles to another point,
|
77
|
-
# e.g [200,200]
|
78
|
-
#
|
79
|
-
# pdf.polygon [200,450], [200,200], [350,300]
|
80
|
-
# pdf.polygon [300,200], [350,300], [400,200]
|
81
|
-
#
|
82
|
-
# However, each time you want to move the drawing, you'd need to alter
|
83
|
-
# every point in the drawing calls, which as you might imagine, can become
|
84
|
-
# tedious.
|
85
|
-
#
|
86
|
-
# If instead, we think of the drawing as being bounded by a box, we can
|
87
|
-
# see that the image is 200 points wide by 250 points tall.
|
88
|
-
#
|
89
|
-
# To translate it to a new origin, we simply select a point at (x,y+height)
|
90
|
-
#
|
91
|
-
# Using the [200,200] example:
|
92
|
-
#
|
93
|
-
# pdf.bounding_box([200,450], :width => 200, :height => 250) do
|
94
|
-
# pdf.stroke do
|
95
|
-
# pdf.polygon [0,250], [0,0], [150,100]
|
96
|
-
# pdf.polygon [100,0], [150,100], [200,0]
|
97
|
-
# end
|
98
|
-
# end
|
99
|
-
#
|
100
|
-
# Notice that the drawing is still relative to the origin. If we want to
|
101
|
-
# move this drawing around the document, we simply need to recalculate the
|
102
|
-
# top-left corner of the rectangular bounding-box, and all of our graphics
|
103
|
-
# calls remain unmodified.
|
104
|
-
#
|
105
|
-
# ==Nesting Bounding Boxes
|
106
|
-
#
|
107
|
-
# At the top level, bounding boxes are specified relative to the document's
|
108
|
-
# margin_box (which is itself a bounding box). You can also nest bounding
|
109
|
-
# boxes, allowing you to build components which are relative to each other
|
110
|
-
#
|
111
|
-
# Usage:
|
112
|
-
#
|
113
|
-
# pdf.bounding_box([200,450], :width => 200, :height => 250) do
|
114
|
-
# pdf.stroke_bounds # Show the containing bounding box
|
115
|
-
# pdf.bounding_box([50,200], :width => 50, :height => 50) do
|
116
|
-
# # a 50x50 bounding box that starts 50 pixels left and 50 pixels down
|
117
|
-
# # the parent bounding box.
|
118
|
-
# pdf.stroke_bounds
|
119
|
-
# end
|
120
|
-
# end
|
121
|
-
#
|
122
|
-
# ==Stretchyness
|
123
|
-
#
|
124
|
-
# If you do not specify a height to a bounding box, it will become stretchy
|
125
|
-
# and its height will be calculated automatically as you stretch the box
|
126
|
-
# downwards.
|
127
|
-
#
|
128
|
-
# pdf.bounding_box([100,400], :width => 400) do
|
129
|
-
# pdf.text("The height of this box is #{pdf.bounds.height}")
|
130
|
-
# pdf.text('this is some text')
|
131
|
-
# pdf.text('this is some more text')
|
132
|
-
# pdf.text('and finally a bit more')
|
133
|
-
# pdf.text("Now the height of this box is #{pdf.bounds.height}")
|
134
|
-
# end
|
135
|
-
#
|
136
|
-
# ==Absolute Positioning
|
137
|
-
#
|
138
|
-
# If you wish to position the bounding boxes at absolute coordinates rather
|
139
|
-
# than relative to the margins or other bounding boxes, you can use canvas()
|
140
|
-
#
|
141
|
-
# pdf.bounding_box([50,500], :width => 200, :height => 300) do
|
142
|
-
# pdf.stroke_bounds
|
143
|
-
# pdf.canvas do
|
144
|
-
# Positioned outside the containing box at the 'real' (300,450)
|
145
|
-
# pdf.bounding_box([300,450], :width => 200, :height => 200) do
|
146
|
-
# pdf.stroke_bounds
|
147
|
-
# end
|
148
|
-
# end
|
149
|
-
# end
|
150
|
-
#
|
151
|
-
# Of course, if you use canvas, you will be responsible for ensuring that
|
152
|
-
# you remain within the printable area of your document.
|
153
|
-
#
|
154
|
-
def bounding_box(*args, &block)
|
155
|
-
init_bounding_box(block) do |_|
|
156
|
-
translate!(args[0])
|
157
|
-
@bounding_box = BoundingBox.new(self, *args)
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
# A shortcut to produce a bounding box which is mapped to the document's
|
162
|
-
# absolute coordinates, regardless of how things are nested or margin sizes.
|
163
|
-
#
|
164
|
-
# pdf.canvas do
|
165
|
-
# pdf.line pdf.bounds.bottom_left, pdf.bounds.top_right
|
166
|
-
# end
|
167
|
-
#
|
168
|
-
def canvas(&block)
|
169
|
-
init_bounding_box(block, :hold_position => true) do |_|
|
170
|
-
@bounding_box = BoundingBox.new(self, [0,page_dimensions[3]],
|
171
|
-
:width => page_dimensions[2],
|
172
|
-
:height => page_dimensions[3]
|
173
|
-
)
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
private
|
178
|
-
|
179
|
-
def init_bounding_box(user_block, options={}, &init_block)
|
180
|
-
parent_box = @bounding_box
|
181
|
-
|
182
|
-
init_block.call(parent_box)
|
183
|
-
|
184
|
-
self.y = @bounding_box.absolute_top
|
185
|
-
user_block.call
|
186
|
-
self.y = @bounding_box.absolute_bottom unless options[:hold_position]
|
187
|
-
|
188
|
-
created_box, @bounding_box = @bounding_box, parent_box
|
189
|
-
|
190
|
-
return created_box
|
191
|
-
end
|
192
|
-
|
193
|
-
# Low level layout helper that simplifies coordinate math.
|
194
|
-
#
|
195
|
-
# See Prawn::Document#bounding_box for a description of what this class
|
196
|
-
# is used for.
|
197
|
-
#
|
198
|
-
class BoundingBox
|
199
|
-
|
200
|
-
def initialize(parent, point, options={}) #:nodoc:
|
201
|
-
@parent = parent
|
202
|
-
@x, @y = point
|
203
|
-
@width, @height = options[:width], options[:height]
|
204
|
-
end
|
205
|
-
|
206
|
-
# The translated origin (x,y-height) which describes the location
|
207
|
-
# of the bottom left corner of the bounding box
|
208
|
-
#
|
209
|
-
def anchor
|
210
|
-
[@x, @y - height]
|
211
|
-
end
|
212
|
-
|
213
|
-
# Relative left x-coordinate of the bounding box. (Always 0)
|
214
|
-
#
|
215
|
-
# Example, position some text 3 pts from the left of the containing box:
|
216
|
-
#
|
217
|
-
# text('hello', :at => [(bounds.left + 3), 0])
|
218
|
-
#
|
219
|
-
def left
|
220
|
-
0
|
221
|
-
end
|
222
|
-
|
223
|
-
|
224
|
-
# Temporarily adjust the @x coordinate to allow for left_padding
|
225
|
-
#
|
226
|
-
def indent(left_padding, &block)
|
227
|
-
@x += left_padding
|
228
|
-
@width -= left_padding
|
229
|
-
yield
|
230
|
-
ensure
|
231
|
-
@x -= left_padding
|
232
|
-
@width += left_padding
|
233
|
-
end
|
234
|
-
|
235
|
-
# Relative right x-coordinate of the bounding box. (Equal to the box width)
|
236
|
-
#
|
237
|
-
# Example, position some text 3 pts from the right of the containing box:
|
238
|
-
#
|
239
|
-
# text('hello', :at => [(bounds.right - 3), 0])
|
240
|
-
#
|
241
|
-
def right
|
242
|
-
@width
|
243
|
-
end
|
244
|
-
|
245
|
-
# Relative top y-coordinate of the bounding box. (Equal to the box height)
|
246
|
-
#
|
247
|
-
# Example, position some text 3 pts from the top of the containing box:
|
248
|
-
#
|
249
|
-
# text('hello', :at => [0, (bounds.top - 3)])
|
250
|
-
#
|
251
|
-
def top
|
252
|
-
height
|
253
|
-
end
|
254
|
-
|
255
|
-
# Relative bottom y-coordinate of the bounding box (Always 0)
|
256
|
-
#
|
257
|
-
# Example, position some text 3 pts from the bottom of the containing box:
|
258
|
-
#
|
259
|
-
# text('hello', :at => [0, (bounds.bottom + 3)])
|
260
|
-
#
|
261
|
-
def bottom
|
262
|
-
0
|
263
|
-
end
|
264
|
-
|
265
|
-
# Relative top-left point of the bounding_box
|
266
|
-
#
|
267
|
-
# Example, draw a line from the top left of the box diagonally to the
|
268
|
-
# bottom right:
|
269
|
-
#
|
270
|
-
# stroke do
|
271
|
-
# line(bounds., bounds.bottom_right)
|
272
|
-
# end
|
273
|
-
#
|
274
|
-
def top_left
|
275
|
-
[left,top]
|
276
|
-
end
|
277
|
-
|
278
|
-
# Relative top-right point of the bounding box
|
279
|
-
#
|
280
|
-
# Example, draw a line from the top_right of the box diagonally to the
|
281
|
-
# bottom left:
|
282
|
-
#
|
283
|
-
# stroke do
|
284
|
-
# line(bounds.top_right, bounds.bottom_left)
|
285
|
-
# end
|
286
|
-
#
|
287
|
-
def top_right
|
288
|
-
[right,top]
|
289
|
-
end
|
290
|
-
|
291
|
-
# Relative bottom-right point of the bounding box
|
292
|
-
#
|
293
|
-
# Example, draw a line along the right hand side of the page:
|
294
|
-
#
|
295
|
-
# stroke do
|
296
|
-
# line(bounds.bottom_right, bounds.top_right)
|
297
|
-
# end
|
298
|
-
#
|
299
|
-
def bottom_right
|
300
|
-
[right,bottom]
|
301
|
-
end
|
302
|
-
|
303
|
-
# Relative bottom-left point of the bounding box
|
304
|
-
#
|
305
|
-
# Example, draw a line along the left hand side of the page:
|
306
|
-
#
|
307
|
-
# stroke do
|
308
|
-
# line(bounds.bottom_left, bounds.top_left)
|
309
|
-
# end
|
310
|
-
#
|
311
|
-
def bottom_left
|
312
|
-
[left,bottom]
|
313
|
-
end
|
314
|
-
|
315
|
-
# Absolute left x-coordinate of the bounding box
|
316
|
-
#
|
317
|
-
def absolute_left
|
318
|
-
@x
|
319
|
-
end
|
320
|
-
|
321
|
-
# Absolute right x-coordinate of the bounding box
|
322
|
-
#
|
323
|
-
def absolute_right
|
324
|
-
@x + width
|
325
|
-
end
|
326
|
-
|
327
|
-
# Absolute top y-coordinate of the bounding box
|
328
|
-
#
|
329
|
-
def absolute_top
|
330
|
-
@y
|
331
|
-
end
|
332
|
-
|
333
|
-
# Absolute bottom y-coordinate of the bottom box
|
334
|
-
#
|
335
|
-
def absolute_bottom
|
336
|
-
@y - height
|
337
|
-
end
|
338
|
-
|
339
|
-
# Absolute top-left point of the bounding box
|
340
|
-
#
|
341
|
-
def absolute_top_left
|
342
|
-
[absolute_left, absolute_top]
|
343
|
-
end
|
344
|
-
|
345
|
-
# Absolute top-right point of the bounding box
|
346
|
-
#
|
347
|
-
def absolute_top_right
|
348
|
-
[absolute_right, absolute_top]
|
349
|
-
end
|
350
|
-
|
351
|
-
# Absolute bottom-left point of the bounding box
|
352
|
-
#
|
353
|
-
def absolute_bottom_left
|
354
|
-
[absolute_left, absolute_bottom]
|
355
|
-
end
|
356
|
-
|
357
|
-
# Absolute bottom-left point of the bounding box
|
358
|
-
#
|
359
|
-
def absolute_bottom_right
|
360
|
-
[absolute_right, absolute_bottom]
|
361
|
-
end
|
362
|
-
|
363
|
-
# Width of the bounding box
|
364
|
-
#
|
365
|
-
def width
|
366
|
-
@width
|
367
|
-
end
|
368
|
-
|
369
|
-
# Height of the bounding box. If the box is 'stretchy' (unspecified
|
370
|
-
# height attribute), height is calculated as the distance from the top of
|
371
|
-
# the box to the current drawing position.
|
372
|
-
#
|
373
|
-
def height
|
374
|
-
return @height if @height
|
375
|
-
@stretched_height = [(absolute_top - @parent.y), @stretched_height.to_f].max
|
376
|
-
end
|
377
|
-
|
378
|
-
alias_method :update_height, :height
|
379
|
-
|
380
|
-
# Returns +false+ when the box has a defined height, +true+ when the height
|
381
|
-
# is being calculated on the fly based on the current vertical position.
|
382
|
-
#
|
383
|
-
def stretchy?
|
384
|
-
!@height
|
385
|
-
end
|
386
|
-
|
387
|
-
end
|
388
|
-
|
389
|
-
end
|
390
|
-
end
|