alphasights-prawn 0.10.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.
- data/COPYING +340 -0
- data/HACKING +50 -0
- data/LICENSE +56 -0
- data/README +141 -0
- data/Rakefile +52 -0
- data/data/encodings/win_ansi.txt +29 -0
- data/data/fonts/Action Man.dfont +0 -0
- data/data/fonts/Activa.ttf +0 -0
- data/data/fonts/Chalkboard.ttf +0 -0
- data/data/fonts/Courier-Bold.afm +342 -0
- data/data/fonts/Courier-BoldOblique.afm +342 -0
- data/data/fonts/Courier-Oblique.afm +342 -0
- data/data/fonts/Courier.afm +342 -0
- data/data/fonts/DejaVuSans.ttf +0 -0
- data/data/fonts/Dustismo_Roman.ttf +0 -0
- data/data/fonts/Helvetica-Bold.afm +2827 -0
- data/data/fonts/Helvetica-BoldOblique.afm +2827 -0
- data/data/fonts/Helvetica-Oblique.afm +3051 -0
- data/data/fonts/Helvetica.afm +3051 -0
- data/data/fonts/MustRead.html +19 -0
- data/data/fonts/Symbol.afm +213 -0
- data/data/fonts/Times-Bold.afm +2588 -0
- data/data/fonts/Times-BoldItalic.afm +2384 -0
- data/data/fonts/Times-Italic.afm +2667 -0
- data/data/fonts/Times-Roman.afm +2419 -0
- data/data/fonts/ZapfDingbats.afm +225 -0
- data/data/fonts/comicsans.ttf +0 -0
- data/data/fonts/gkai00mp.ttf +0 -0
- 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/fractal.jpg +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/rails.dat +0 -0
- data/data/images/rails.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 +1 -0
- 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/hexagon.pdf +61 -0
- data/data/pdfs/indirect_reference.pdf +86 -0
- data/data/pdfs/nested_pages.pdf +118 -0
- data/data/pdfs/resources_as_indirect_object.pdf +83 -0
- data/data/pdfs/two_hexagons.pdf +90 -0
- data/data/pdfs/version_1_6.pdf +61 -0
- data/data/shift_jis_text.txt +1 -0
- data/examples/bounding_box/bounding_boxes.rb +43 -0
- data/examples/bounding_box/indentation.rb +34 -0
- data/examples/bounding_box/russian_boxes.rb +36 -0
- data/examples/bounding_box/stretched_nesting.rb +67 -0
- data/examples/builder/simple.rb +28 -0
- data/examples/example_helper.rb +4 -0
- data/examples/general/background.rb +23 -0
- data/examples/general/canvas.rb +15 -0
- data/examples/general/context_sensitive_headers.rb +37 -0
- data/examples/general/float.rb +11 -0
- data/examples/general/margin.rb +36 -0
- data/examples/general/measurement_units.rb +51 -0
- data/examples/general/metadata-info.rb +16 -0
- data/examples/general/multi_page_layout.rb +18 -0
- data/examples/general/outlines.rb +50 -0
- data/examples/general/page_geometry.rb +31 -0
- data/examples/general/page_numbering.rb +15 -0
- data/examples/general/repeaters.rb +47 -0
- data/examples/general/stamp.rb +41 -0
- data/examples/general/templates.rb +13 -0
- data/examples/graphics/basic_images.rb +23 -0
- data/examples/graphics/chunkable.rb +38 -0
- data/examples/graphics/cmyk.rb +12 -0
- data/examples/graphics/curves.rb +11 -0
- data/examples/graphics/hexagon.rb +13 -0
- data/examples/graphics/image_fit.rb +15 -0
- data/examples/graphics/image_flow.rb +37 -0
- data/examples/graphics/image_position.rb +17 -0
- data/examples/graphics/line.rb +32 -0
- data/examples/graphics/png_types.rb +22 -0
- data/examples/graphics/polygons.rb +16 -0
- data/examples/graphics/remote_images.rb +12 -0
- data/examples/graphics/rounded_polygons.rb +19 -0
- data/examples/graphics/rounded_rectangle.rb +20 -0
- data/examples/graphics/ruport_style_helpers.rb +19 -0
- data/examples/graphics/stroke_bounds.rb +20 -0
- data/examples/graphics/stroke_cap_and_join.rb +45 -0
- data/examples/graphics/stroke_dash.rb +42 -0
- data/examples/graphics/transformations.rb +52 -0
- data/examples/graphics/transparency.rb +26 -0
- data/examples/m17n/chinese_text_wrapping.rb +17 -0
- data/examples/m17n/euro.rb +15 -0
- data/examples/m17n/sjis.rb +28 -0
- data/examples/m17n/utf8.rb +13 -0
- data/examples/m17n/win_ansi_charset.rb +54 -0
- data/examples/security/hello_foo.rb +8 -0
- data/examples/table/bill.rb +53 -0
- data/examples/table/cell.rb +12 -0
- data/examples/table/checkerboard.rb +22 -0
- data/examples/table/header.rb +14 -0
- data/examples/table/inline_format_table.rb +12 -0
- data/examples/table/multi_page_table.rb +9 -0
- data/examples/table/simple_table.rb +24 -0
- data/examples/table/subtable.rb +12 -0
- data/examples/table/widths.rb +20 -0
- data/examples/text/alignment.rb +18 -0
- data/examples/text/character_spacing.rb +12 -0
- data/examples/text/dfont.rb +48 -0
- data/examples/text/family_based_styling.rb +24 -0
- data/examples/text/font_calculations.rb +91 -0
- data/examples/text/font_size.rb +33 -0
- data/examples/text/hyphenation.rb +45 -0
- data/examples/text/indent_paragraphs.rb +22 -0
- data/examples/text/inline_format.rb +103 -0
- data/examples/text/kerning.rb +30 -0
- data/examples/text/rotated.rb +98 -0
- data/examples/text/shaped_text_box.rb +31 -0
- data/examples/text/simple_text.rb +17 -0
- data/examples/text/simple_text_ttf.rb +17 -0
- data/examples/text/text_box.rb +88 -0
- data/examples/text/text_box_returning_excess.rb +51 -0
- data/examples/text/text_flow.rb +67 -0
- data/lib/prawn.rb +27 -0
- data/lib/prawn/canvas.rb +119 -0
- data/lib/prawn/chunkable.rb +37 -0
- data/lib/prawn/compatibility.rb +51 -0
- data/lib/prawn/core.rb +85 -0
- data/lib/prawn/core/annotations.rb +61 -0
- data/lib/prawn/core/byte_string.rb +9 -0
- data/lib/prawn/core/chunk.rb +36 -0
- data/lib/prawn/core/destinations.rb +90 -0
- data/lib/prawn/core/document_state.rb +78 -0
- data/lib/prawn/core/literal_string.rb +16 -0
- data/lib/prawn/core/name_tree.rb +165 -0
- data/lib/prawn/core/object_store.rb +236 -0
- data/lib/prawn/core/page.rb +179 -0
- data/lib/prawn/core/pdf_object.rb +108 -0
- data/lib/prawn/core/reference.rb +112 -0
- data/lib/prawn/core/text.rb +140 -0
- data/lib/prawn/core/text/formatted/arranger.rb +266 -0
- data/lib/prawn/core/text/formatted/line_wrap.rb +127 -0
- data/lib/prawn/core/text/formatted/wrap.rb +112 -0
- data/lib/prawn/core/text/line_wrap.rb +209 -0
- data/lib/prawn/core/text/wrap.rb +80 -0
- data/lib/prawn/document.rb +573 -0
- data/lib/prawn/document/bounding_box.rb +425 -0
- data/lib/prawn/document/graphics_state.rb +48 -0
- data/lib/prawn/document/internals.rb +170 -0
- data/lib/prawn/document/page_geometry.rb +136 -0
- data/lib/prawn/document/snapshot.rb +87 -0
- data/lib/prawn/document_builder.rb +51 -0
- data/lib/prawn/document_builder/command.rb +38 -0
- data/lib/prawn/document_builder/constructs.rb +2 -0
- data/lib/prawn/document_builder/constructs/flowing_text_construct.rb +18 -0
- data/lib/prawn/document_builder/constructs/path_construct.rb +9 -0
- data/lib/prawn/document_builder/layout.rb +25 -0
- data/lib/prawn/document_builder/modifications.rb +2 -0
- data/lib/prawn/document_builder/modifications/layout_modification.rb +9 -0
- data/lib/prawn/document_builder/modifications/path_modification.rb +9 -0
- data/lib/prawn/encoding.rb +121 -0
- data/lib/prawn/errors.rb +94 -0
- data/lib/prawn/font.rb +341 -0
- data/lib/prawn/font/afm.rb +225 -0
- data/lib/prawn/font/dfont.rb +42 -0
- data/lib/prawn/font/ttf.rb +350 -0
- data/lib/prawn/graphics.rb +325 -0
- data/lib/prawn/graphics/cap_style.rb +38 -0
- data/lib/prawn/graphics/color.rb +205 -0
- data/lib/prawn/graphics/dash.rb +71 -0
- data/lib/prawn/graphics/join_style.rb +38 -0
- data/lib/prawn/graphics/transformation.rb +156 -0
- data/lib/prawn/graphics/transparency.rb +99 -0
- data/lib/prawn/images.rb +348 -0
- data/lib/prawn/images/jpg.rb +46 -0
- data/lib/prawn/images/png.rb +226 -0
- data/lib/prawn/measurement_extensions.rb +46 -0
- data/lib/prawn/measurements.rb +71 -0
- data/lib/prawn/outline.rb +278 -0
- data/lib/prawn/repeater.rb +129 -0
- data/lib/prawn/security.rb +262 -0
- data/lib/prawn/security/arcfour.rb +51 -0
- data/lib/prawn/stamp.rb +126 -0
- data/lib/prawn/table.rb +421 -0
- data/lib/prawn/table/accessors.rb +180 -0
- data/lib/prawn/table/cell.rb +350 -0
- data/lib/prawn/table/cell/in_table.rb +27 -0
- data/lib/prawn/table/cell/subtable.rb +65 -0
- data/lib/prawn/table/cell/text.rb +125 -0
- data/lib/prawn/text.rb +449 -0
- data/lib/prawn/text/box.rb +392 -0
- data/lib/prawn/text/formatted.rb +4 -0
- data/lib/prawn/text/formatted/box.rb +228 -0
- data/lib/prawn/text/formatted/fragment.rb +181 -0
- data/lib/prawn/text/formatted/parser.rb +213 -0
- data/spec/annotations_spec.rb +90 -0
- data/spec/bounding_box_spec.rb +190 -0
- data/spec/cell_spec.rb +348 -0
- data/spec/destinations_spec.rb +15 -0
- data/spec/document_spec.rb +473 -0
- data/spec/font_spec.rb +324 -0
- data/spec/formatted_text_arranger_spec.rb +426 -0
- data/spec/formatted_text_box_spec.rb +756 -0
- data/spec/formatted_text_fragment_spec.rb +211 -0
- data/spec/graphics_spec.rb +446 -0
- data/spec/images_spec.rb +96 -0
- data/spec/inline_formatted_text_parser_spec.rb +502 -0
- data/spec/jpg_spec.rb +25 -0
- data/spec/line_wrap_spec.rb +341 -0
- data/spec/measurement_units_spec.rb +23 -0
- data/spec/name_tree_spec.rb +112 -0
- data/spec/object_store_spec.rb +160 -0
- data/spec/outline_spec.rb +269 -0
- data/spec/pdf_object_spec.rb +170 -0
- data/spec/png_spec.rb +237 -0
- data/spec/reference_spec.rb +82 -0
- data/spec/repeater_spec.rb +96 -0
- data/spec/security_spec.rb +120 -0
- data/spec/snapshot_spec.rb +138 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/stamp_spec.rb +108 -0
- data/spec/stroke_styles_spec.rb +163 -0
- data/spec/table_spec.rb +598 -0
- data/spec/template_spec.rb +158 -0
- data/spec/text_at_spec.rb +119 -0
- data/spec/text_box_spec.rb +742 -0
- data/spec/text_spacing_spec.rb +75 -0
- data/spec/text_spec.rb +333 -0
- data/spec/text_with_inline_formatting_spec.rb +193 -0
- data/spec/transparency_spec.rb +89 -0
- metadata +331 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib"
|
|
2
|
+
require "rubygems"
|
|
3
|
+
require "prawn"
|
|
4
|
+
|
|
5
|
+
def paint(canvas, filename)
|
|
6
|
+
doc = Prawn::Document.new
|
|
7
|
+
doc.add_content(canvas.to_pdf)
|
|
8
|
+
doc.render_file(filename)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
canvas = Prawn::Canvas.new
|
|
12
|
+
canvas.line(:point1 => [100,100], :point2 => [150,175])
|
|
13
|
+
|
|
14
|
+
canvas.curve(:point1 => [100,100],
|
|
15
|
+
:point2 => [50,50],
|
|
16
|
+
:bound1 => [60,90],
|
|
17
|
+
:bound2 => [60,90])
|
|
18
|
+
|
|
19
|
+
canvas.rectangle(:point => [200,200], :width => 50, :height => 75)
|
|
20
|
+
|
|
21
|
+
canvas.stroke
|
|
22
|
+
|
|
23
|
+
canvas.ellipse(:point => [200,200], :x_radius => 10, :y_radius => 20)
|
|
24
|
+
|
|
25
|
+
canvas.fill
|
|
26
|
+
|
|
27
|
+
circle = canvas.circle!(:point => [250,200], :radius => 20)
|
|
28
|
+
puts circle.to_pdf
|
|
29
|
+
circle[:radius] = 50
|
|
30
|
+
|
|
31
|
+
canvas.chunks << circle
|
|
32
|
+
|
|
33
|
+
canvas.stroke
|
|
34
|
+
|
|
35
|
+
paint(canvas, "x.pdf")
|
|
36
|
+
|
|
37
|
+
canvas.find_chunks(:command => :line).first[:point2] = [150, 300]
|
|
38
|
+
paint(canvas, "y.pdf")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates Prawn's support for CMYK images and colors.
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate("cmyk.pdf", :page_layout => :landscape) do
|
|
8
|
+
fill_color 50, 100, 0, 0
|
|
9
|
+
text "Prawn is CYMK Friendly"
|
|
10
|
+
fractal = "#{Prawn::BASEDIR}/data/images/fractal.jpg"
|
|
11
|
+
image fractal, :at => [50,450]
|
|
12
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates simple curve and circle usage
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
pdf = Prawn::Document.new
|
|
8
|
+
pdf.move_to [100,100]
|
|
9
|
+
pdf.stroke_curve_to [50,50], :bounds => [[60,90], [60, 90]]
|
|
10
|
+
pdf.fill_circle_at [200,200], :radius => 10
|
|
11
|
+
pdf.render_file "curves.pdf"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Draws and fills a Hexagon using Document#polygon
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
pdf = Prawn::Document.new
|
|
8
|
+
|
|
9
|
+
pdf.fill_color "ff0000"
|
|
10
|
+
pdf.fill_polygon [100, 250], [200, 300], [300, 250],
|
|
11
|
+
[300, 150], [200, 100], [100, 150]
|
|
12
|
+
|
|
13
|
+
pdf.render_file "hexagon.pdf"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates fitting an image within a rectangular width and height.
|
|
4
|
+
# The image will be scaled down to fit within the box, while preserving
|
|
5
|
+
# the aspect ratio.
|
|
6
|
+
#
|
|
7
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
8
|
+
|
|
9
|
+
Prawn::Document.generate("image_fit.pdf", :page_layout => :landscape) do
|
|
10
|
+
|
|
11
|
+
pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
|
|
12
|
+
stroke_rectangle [50,450], 200, 200
|
|
13
|
+
image pigs, :at => [50,450], :fit => [200,200]
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates automated flowing and positioning of images, as well as
|
|
4
|
+
# aligining images along the x-axis via the :position argument. This is
|
|
5
|
+
# useful when used in combination with flowing text, where the exact final
|
|
6
|
+
# position of the image is not known ahead of time.
|
|
7
|
+
#
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
9
|
+
|
|
10
|
+
Prawn::Document.generate("image-flow.pdf", :page_layout => :landscape) do
|
|
11
|
+
self.font_size = 8
|
|
12
|
+
stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
|
|
13
|
+
|
|
14
|
+
text "Image at default position with no arguments"
|
|
15
|
+
|
|
16
|
+
move_down 10
|
|
17
|
+
|
|
18
|
+
image stef
|
|
19
|
+
|
|
20
|
+
text "Centered image flowing"
|
|
21
|
+
|
|
22
|
+
image stef, :position => :center
|
|
23
|
+
|
|
24
|
+
text "Right aligned image flowing"
|
|
25
|
+
|
|
26
|
+
image stef, :position => :right
|
|
27
|
+
|
|
28
|
+
text "Explicitly left aligned image flowing"
|
|
29
|
+
|
|
30
|
+
move_down 10
|
|
31
|
+
|
|
32
|
+
image stef, :position => :left
|
|
33
|
+
|
|
34
|
+
text "Flowing image at x=50"
|
|
35
|
+
|
|
36
|
+
image stef, :position => 50
|
|
37
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates vertical and horizontal positioning of images.
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate("image_position.pdf", :page_layout => :landscape) do
|
|
8
|
+
|
|
9
|
+
dice = "#{Prawn::BASEDIR}/data/images/dice.png"
|
|
10
|
+
|
|
11
|
+
image dice, :scale => 0.2, :position => :left, :vposition => :top
|
|
12
|
+
image dice, :scale => 0.2, :position => :right, :vposition => :top
|
|
13
|
+
image dice, :scale => 0.2, :position => :center, :vposition => :top
|
|
14
|
+
image dice, :scale => 0.2, :position => :center, :vposition => :center
|
|
15
|
+
image dice, :scale => 0.2, :position => :center, :vposition => :bottom
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# The very first Prawn example. Here for nostalgia's sake.
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
pdf = Prawn::Document.new
|
|
8
|
+
pdf.line_width = 10
|
|
9
|
+
|
|
10
|
+
[[100,741,100,641],
|
|
11
|
+
[100,691,150,691],
|
|
12
|
+
[150,741,150,641],
|
|
13
|
+
[200,741,200,641],
|
|
14
|
+
[100,600,100,500],
|
|
15
|
+
[100,600,150,550],
|
|
16
|
+
[100,550,150,550],
|
|
17
|
+
[175,600,175,500],
|
|
18
|
+
[175,600,225,550],
|
|
19
|
+
[175,550,225,550],
|
|
20
|
+
[175,550,225,500],
|
|
21
|
+
[275,600,250,500],
|
|
22
|
+
[275,600,300,500],
|
|
23
|
+
[250,550,300,550],
|
|
24
|
+
[315,600,350,500],
|
|
25
|
+
[350,500,365,550],
|
|
26
|
+
[365,550,380,500],
|
|
27
|
+
[380,500,415,600],
|
|
28
|
+
[430,600,430,500],
|
|
29
|
+
[430,600,465,500],
|
|
30
|
+
[465,600,465,500]].each { |points| pdf.stroke_line(*points) }
|
|
31
|
+
|
|
32
|
+
pdf.render_file "lines.pdf"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# PNG files come in different flavours - 5 of them. This example embeds
|
|
4
|
+
# one of each type as proof that they all work.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
images = [
|
|
9
|
+
["Type 0", "#{Prawn::BASEDIR}/data/images/web-links.png"],
|
|
10
|
+
["Type 2", "#{Prawn::BASEDIR}/data/images/ruport.png"],
|
|
11
|
+
["Type 3", "#{Prawn::BASEDIR}/data/images/rails.png"],
|
|
12
|
+
["Type 4", "#{Prawn::BASEDIR}/data/images/page_white_text.png"],
|
|
13
|
+
["Type 6", "#{Prawn::BASEDIR}/data/images/dice.png"],
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
Prawn::Document.generate("png_types.pdf", :page_size => "A5") do
|
|
17
|
+
images.each do |header, file|
|
|
18
|
+
start_new_page unless header.include?("0")
|
|
19
|
+
text header
|
|
20
|
+
image file, :at => [50,450]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Basic polygon drawing example. See also: hexagon.rb
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
pdf = Prawn::Document.new
|
|
8
|
+
|
|
9
|
+
10.times do |i|
|
|
10
|
+
pdf.stroke_polygon [ 50 + i*25, 50 + i*25],
|
|
11
|
+
[100 + i*25, 50 + i*25],
|
|
12
|
+
[100 + i*25, 100 + i*25]
|
|
13
|
+
pdf.stroke_rectangle [0,600], 5*i, 10*i
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
pdf.render_file "pretty_polygons.pdf"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates how to use open-uri and Document#image to embed remote image
|
|
4
|
+
# files.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
require "open-uri"
|
|
9
|
+
|
|
10
|
+
Prawn::Document.generate("remote_images.pdf") do
|
|
11
|
+
image open("http://prawn.majesticseacreature.com/media/prawn_logo.png")
|
|
12
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
2
|
+
|
|
3
|
+
def radian(degree)
|
|
4
|
+
Math::PI/180*degree
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def point_on_circle(center, radius, degrees)
|
|
8
|
+
[center[0] + radius*(Math.cos(radian(degrees))), center[1] - radius*(Math.sin(radian(degrees)))]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
pdf = Prawn::Document.new
|
|
12
|
+
|
|
13
|
+
pentagon_points = (0..4).map{|i| point_on_circle([200, 400], 100, i * 72)}
|
|
14
|
+
pentagram_points = [0, 2, 4, 1, 3].map{|i| pentagon_points[i]}
|
|
15
|
+
pdf.stroke_rounded_polygon(20, *pentagram_points)
|
|
16
|
+
pdf.fill_and_stroke_rounded_polygon(10, [100, 250], [200, 300], [300, 250],
|
|
17
|
+
[300, 150], [200, 100], [100, 150])
|
|
18
|
+
|
|
19
|
+
pdf.render_file "rounded_polygon.pdf"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Rounded rectangle example demonstrating both stroke and stroke and fill.
|
|
4
|
+
# A rectangle with rounded join_style is added just for comparison.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
pdf = Prawn::Document.new
|
|
9
|
+
pdf.font_size 8
|
|
10
|
+
pdf.draw_text "a stroked rounded rectangle:", :at => [30, 575]
|
|
11
|
+
pdf.stroke_rounded_rectangle([50, 550], 50, 100, 10)
|
|
12
|
+
pdf.draw_text "a stroked and filled rounded rectangle:", :at => [180, 575]
|
|
13
|
+
pdf.fill_and_stroke_rounded_rectangle([200, 550], 50, 100, 10)
|
|
14
|
+
pdf.draw_text "a regular rectangle with rounded join style;", :at => [330, 575]
|
|
15
|
+
pdf.draw_text "needs thick line width for similar result:", :at => [330, 565]
|
|
16
|
+
pdf.join_style :round
|
|
17
|
+
pdf.line_width 10
|
|
18
|
+
pdf.stroke_rectangle([350, 550], 50, 100)
|
|
19
|
+
|
|
20
|
+
pdf.render_file "rounded_rectangle.pdf"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# These helpers will be familiar to Ruport users, and now are supported
|
|
4
|
+
# directly in Prawn. Run the example to see how they work.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
# Demonstrates some features stolen from Ruport::Formatter::PDF
|
|
9
|
+
Prawn::Document.generate("ruport.pdf") do
|
|
10
|
+
move_down 50
|
|
11
|
+
# TODO: Figure out where to set the y cursor to.
|
|
12
|
+
stroke_horizontal_rule
|
|
13
|
+
text "Hi there"
|
|
14
|
+
pad(50) { text "I'm Padded" }
|
|
15
|
+
text "I'm far away"
|
|
16
|
+
stroke_horizontal_line 50, 100
|
|
17
|
+
stroke_horizontal_line 50, 100, :at => 300
|
|
18
|
+
stroke_vertical_line 300, 50, :at => 250
|
|
19
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates Document#stroke_bounds, which will stroke a rectange outlining
|
|
4
|
+
# the boundaries of the current bounding box. This is useful for debugging
|
|
5
|
+
# and can also be used as a light-weight and lower level alternative to
|
|
6
|
+
# Cells.
|
|
7
|
+
#
|
|
8
|
+
# Feature borrowed from Josh Knowle's pt at:
|
|
9
|
+
# http://github.com/joshknowles/pt/tree/master
|
|
10
|
+
#
|
|
11
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
12
|
+
|
|
13
|
+
Prawn::Document.generate("stroke_bounds.pdf") do
|
|
14
|
+
stroke_bounds
|
|
15
|
+
|
|
16
|
+
bounding_box [100,500], :width => 200, :height => 300 do
|
|
17
|
+
text "Hey there, here's some text. " * 10
|
|
18
|
+
stroke_bounds
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Stroke dashing can be applied to any line or curve
|
|
4
|
+
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate("stroke_cap_and_join.pdf") do
|
|
8
|
+
self.line_width = 25
|
|
9
|
+
x0 = bounds.left + 100
|
|
10
|
+
x1 = bounds.left + 200
|
|
11
|
+
x2 = bounds.left + 300
|
|
12
|
+
|
|
13
|
+
y = bounds.top - 125
|
|
14
|
+
|
|
15
|
+
3.times do |i|
|
|
16
|
+
case i
|
|
17
|
+
when 0
|
|
18
|
+
self.join_style = :miter
|
|
19
|
+
when 1
|
|
20
|
+
self.join_style = :round
|
|
21
|
+
when 2
|
|
22
|
+
self.join_style = :bevel
|
|
23
|
+
end
|
|
24
|
+
stroke do
|
|
25
|
+
move_to(x0, y)
|
|
26
|
+
line_to(x1, y + 100)
|
|
27
|
+
line_to(x2, y)
|
|
28
|
+
end
|
|
29
|
+
y -= 100
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
3.times do |i|
|
|
34
|
+
case i
|
|
35
|
+
when 0
|
|
36
|
+
self.cap_style = :butt
|
|
37
|
+
when 1
|
|
38
|
+
self.cap_style = :round
|
|
39
|
+
when 2
|
|
40
|
+
self.cap_style = :projecting_square
|
|
41
|
+
end
|
|
42
|
+
stroke_line([x0, y, x2, y])
|
|
43
|
+
y -= 30
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Stroke dashing can be applied to any line or curve
|
|
4
|
+
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate("stroke_dash.pdf") do
|
|
8
|
+
self.line_width = 1
|
|
9
|
+
base_y = bounds.top
|
|
10
|
+
|
|
11
|
+
100.times do |i|
|
|
12
|
+
length = i / 4 + 1
|
|
13
|
+
# space between dashes same length as dash
|
|
14
|
+
space = length
|
|
15
|
+
# start with dash
|
|
16
|
+
phase = 0
|
|
17
|
+
case i % 4
|
|
18
|
+
when 0
|
|
19
|
+
base_y -= 10
|
|
20
|
+
when 1
|
|
21
|
+
# start with space between dashes
|
|
22
|
+
phase = length
|
|
23
|
+
when 2
|
|
24
|
+
base_y -= 10
|
|
25
|
+
# space between dashes half as long as dash
|
|
26
|
+
space = length * 0.5
|
|
27
|
+
when 3
|
|
28
|
+
# space between dashes half as long as dash
|
|
29
|
+
space = length * 0.5
|
|
30
|
+
# start with space between dashes
|
|
31
|
+
phase = length
|
|
32
|
+
end
|
|
33
|
+
dash(length, :space => space, :phase => phase)
|
|
34
|
+
points = [bounds.left, base_y - 2 * i, bounds.right, base_y - 2 * i]
|
|
35
|
+
stroke_line(points)
|
|
36
|
+
end
|
|
37
|
+
i = 100
|
|
38
|
+
base_y -= 10
|
|
39
|
+
undash
|
|
40
|
+
points = [bounds.left, base_y - 2 * i, bounds.right, base_y - 2 * i]
|
|
41
|
+
stroke_line(points)
|
|
42
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates transformations
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate "transformations.pdf" do |pdf|
|
|
8
|
+
width = 50
|
|
9
|
+
height = 100
|
|
10
|
+
|
|
11
|
+
# ROTATION
|
|
12
|
+
x = 50
|
|
13
|
+
y = pdf.bounds.top - 50
|
|
14
|
+
|
|
15
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
16
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
|
17
|
+
pdf.rotate(30, :origin => [x, y]) do
|
|
18
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
19
|
+
pdf.draw_text("rectangle rotated around upper-left corner", :at => [x + width, y - height])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
x = 50
|
|
23
|
+
y = pdf.bounds.top - 200
|
|
24
|
+
|
|
25
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
26
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
|
27
|
+
pdf.rotate(30, :origin => [x + width / 2, y - height / 2]) do
|
|
28
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
29
|
+
pdf.draw_text("rectangle rotated around center", :at => [x + width, y - height])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# SCALE
|
|
33
|
+
x = 0
|
|
34
|
+
y = pdf.bounds.top - 500
|
|
35
|
+
|
|
36
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
37
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
|
38
|
+
pdf.scale(2, :origin => [x, y]) do
|
|
39
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
40
|
+
pdf.draw_text("rectangle scaled from upper-left corner", :at => [x + width, y - height])
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
x = 150
|
|
44
|
+
y = pdf.bounds.top - 400
|
|
45
|
+
|
|
46
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
47
|
+
pdf.draw_text("reference rectangle", :at => [x + width, y - height])
|
|
48
|
+
pdf.scale(2, :origin => [x + width / 2, y - height / 2]) do
|
|
49
|
+
pdf.stroke_rectangle([x, y], width, height)
|
|
50
|
+
pdf.draw_text("rectangle scaled from center", :at => [x + width, y - height])
|
|
51
|
+
end
|
|
52
|
+
end
|