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,23 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This example demonstrates the use of the new :background option when
|
|
4
|
+
# generating a new Document. Image is assumed to be pre-fit for your page
|
|
5
|
+
# size, and will not be rescaled.
|
|
6
|
+
#
|
|
7
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
8
|
+
|
|
9
|
+
img = "#{Prawn::BASEDIR}/data/images/letterhead.jpg"
|
|
10
|
+
|
|
11
|
+
Prawn::Document.generate("background.pdf", :background => img, :margin => 100) do
|
|
12
|
+
text "My report caption", :size => 18, :align => :right
|
|
13
|
+
|
|
14
|
+
move_down font.height * 2
|
|
15
|
+
|
|
16
|
+
text "Here is my text explaning this report. " * 20,
|
|
17
|
+
:size => 12, :align => :left, :leading => 2
|
|
18
|
+
|
|
19
|
+
move_down font.height
|
|
20
|
+
|
|
21
|
+
text "I'm using a soft background. " * 40,
|
|
22
|
+
:size => 12, :align => :left, :leading => 2
|
|
23
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates how to enable absolute positioning in Prawn by temporarily
|
|
4
|
+
# removing the margin_box via Document#canvas()
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate("canvas.pdf") do
|
|
9
|
+
canvas do
|
|
10
|
+
text "This text should appear at the absolute top left"
|
|
11
|
+
|
|
12
|
+
# stroke a line to show that the relative coordinates are the same as absolute
|
|
13
|
+
stroke_line [bounds.left,bounds.bottom], [bounds.right,bounds.top]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
2
|
+
|
|
3
|
+
# Ex. Generate a roster of meeting attendees given a set of meetings.
|
|
4
|
+
# Attendees for a meeting may overflow to accross page boundaries but
|
|
5
|
+
# each meeting starts on a separate page. Each page for any given
|
|
6
|
+
# meeting will have the heading for that meeting.
|
|
7
|
+
|
|
8
|
+
#dummying up some meetings
|
|
9
|
+
meetings = []
|
|
10
|
+
5.times do |i|
|
|
11
|
+
meetings << "Meeting number #{i}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
Prawn::Document.generate('context_sensitive_headers.pdf', :margin => [100, 100], :skip_page_creation => true) do
|
|
15
|
+
meetings.each_with_index do |meeting,i|
|
|
16
|
+
|
|
17
|
+
create_stamp(meeting.to_s) do
|
|
18
|
+
canvas do
|
|
19
|
+
text_box("header for #{meeting}",
|
|
20
|
+
:at => [bounds.left + 50, bounds.top - 20],
|
|
21
|
+
:height => 50,
|
|
22
|
+
:width => margin_box.width)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
on_page_create { stamp(meeting.to_s) }
|
|
26
|
+
|
|
27
|
+
start_new_page
|
|
28
|
+
|
|
29
|
+
#simulate some meetings with content over multiple pages
|
|
30
|
+
(15 + 20*i).times do |i|
|
|
31
|
+
text "#{meeting} attendee #{i}"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This demonstrates the Prawn options for document and page margin, similar to CSS shorthand.
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
LOREM = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "+
|
|
8
|
+
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "+
|
|
9
|
+
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris "+
|
|
10
|
+
"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in "+
|
|
11
|
+
"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla "+
|
|
12
|
+
"pariatur. Excepteur sint occaecat cupidatat non proident, sunt in " +
|
|
13
|
+
"culpa qui officia deserunt mollit anim id est laborum. ") * 20
|
|
14
|
+
|
|
15
|
+
Prawn::Document.generate("margin.pdf", :margin => 100) do |pdf|
|
|
16
|
+
|
|
17
|
+
pdf.text "100 on all sides", :style => :bold
|
|
18
|
+
pdf.text LOREM
|
|
19
|
+
|
|
20
|
+
pdf.start_new_page(:margin => 100, :left_margin => 0)
|
|
21
|
+
pdf.text "100 on all sides but 0 on the left", :style => :bold
|
|
22
|
+
pdf.text LOREM
|
|
23
|
+
|
|
24
|
+
pdf.start_new_page(:margin => [100, 0])
|
|
25
|
+
pdf.text "100 top and bottom, 0 left and right.", :style => :bold
|
|
26
|
+
pdf.text LOREM
|
|
27
|
+
|
|
28
|
+
pdf.start_new_page(:margin => [100, 0, 50])
|
|
29
|
+
pdf.text "100 top, 0 left and right, 50 bottom.", :style => :bold
|
|
30
|
+
pdf.text LOREM
|
|
31
|
+
|
|
32
|
+
pdf.start_new_page(:margin => [0, 50, 100, 150])
|
|
33
|
+
pdf.text "0 top, 50 right, 100 bottom, 150 left.", :style => :bold
|
|
34
|
+
pdf.text LOREM
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Generates a ruler and also demonstrates prawn/measurement_extensions.
|
|
4
|
+
# It's better to run this example and examine its output than to worry about
|
|
5
|
+
# its particular implementation, though some might find that interesting as
|
|
6
|
+
# well.
|
|
7
|
+
#
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
9
|
+
|
|
10
|
+
require "prawn/measurement_extensions"
|
|
11
|
+
|
|
12
|
+
# this makes the following units available (Millimeters, Centimeters, Decimeters, Meters, Inches, Foot, Yards, Points)
|
|
13
|
+
# Methodname is the common abbravation for the unit (mm, cm, dm, m, in, ft, yd, pt)
|
|
14
|
+
# Usage: '10.mm'.
|
|
15
|
+
# This converts 10mm to PDF points, which Prawn uses internally.
|
|
16
|
+
|
|
17
|
+
pdf = Prawn::Document.new(
|
|
18
|
+
:page_size => "A4",
|
|
19
|
+
:left_margin => 10.mm, # different
|
|
20
|
+
:right_margin => 1.cm, # units
|
|
21
|
+
:top_margin => 0.1.dm, # work
|
|
22
|
+
:bottom_margin => 0.01.m) # well
|
|
23
|
+
|
|
24
|
+
pdf.font_size = 6
|
|
25
|
+
pdf.line_width = 0.05
|
|
26
|
+
|
|
27
|
+
units_long = %w[Millimeters Centimeters Decimeters Inches Foot Points]
|
|
28
|
+
units = %w[mm cm dm in ft pt]
|
|
29
|
+
offset_multiplier = 2.cm
|
|
30
|
+
temp = "Units\n"
|
|
31
|
+
|
|
32
|
+
units.each_with_index do |unit, unit_index| #iterate through all units that make sense to display on a sheet of paper
|
|
33
|
+
one_unit_in_pt = eval "1.#{unit}" # calc the width of one unit
|
|
34
|
+
temp << "1#{unit} => #{one_unit_in_pt}pt\n" #puts converted unit in points
|
|
35
|
+
|
|
36
|
+
offset = offset_multiplier * unit_index
|
|
37
|
+
pdf.draw_text units[unit_index], :at => [offset + 0.5.mm, pdf.bounds.top - 2.mm]
|
|
38
|
+
|
|
39
|
+
pdf.stroke_line(offset, pdf.bounds.top, offset, pdf.bounds.bottom)
|
|
40
|
+
|
|
41
|
+
0.upto(((pdf.bounds.height - 5.mm) / one_unit_in_pt).to_i) do |i| # checks, how many strokes can be drawn
|
|
42
|
+
pdf.stroke_line(offset, i * one_unit_in_pt, (i % 5 == 0 ? 6.mm : 3.mm) + offset, i * one_unit_in_pt) # every fifth stroke is twice as large like on a real ruler
|
|
43
|
+
pdf.draw_text "#{i}#{unit}", :at => [7.mm + offset, i * one_unit_in_pt] unless unit == "mm" && i % 5 != 0 || unit == "pt" && i % 10 != 0 # avoid text too close to each other
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
pdf.text_box temp,
|
|
48
|
+
:width => 5.cm, :height => pdf.font.height * units_long.length,
|
|
49
|
+
:at => [offset_multiplier * units_long.length, pdf.bounds.top]
|
|
50
|
+
|
|
51
|
+
pdf.render_file "measurement_units.pdf"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates how to set metadata properties via the info option
|
|
4
|
+
# It allows one to specify no standard properties
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate "metadata-info.pdf",
|
|
9
|
+
:info => {
|
|
10
|
+
:Title => "My title", :Author => "John Doe", :Subject => "My Subject",
|
|
11
|
+
:Keywords => "test metadata ruby pdf dry", :Creator => "ACME Soft App",
|
|
12
|
+
:Producer => "Prawn", :CreationDate => Time.now, :Grok => "Test Property"
|
|
13
|
+
} do
|
|
14
|
+
text "This is a test of setting metadata properties via the info option"
|
|
15
|
+
text "It allows one to specify no standard properties like 'Grok'"
|
|
16
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This demonstrates that Prawn can modify page size, margins and layout for
|
|
4
|
+
# each individual page, via Document#start_new_page()
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate("multi-layout.pdf", :page_layout => :landscape) do |pdf|
|
|
9
|
+
pdf.text "This is on a landscaped page"
|
|
10
|
+
pdf.start_new_page(:layout => :portrait)
|
|
11
|
+
pdf.text "This is on a portrait page"
|
|
12
|
+
pdf.start_new_page(:size => "LEGAL")
|
|
13
|
+
pdf.text "This is on legal paper size"
|
|
14
|
+
pdf.start_new_page(:left_margin => 150, :right_margin => 150)
|
|
15
|
+
pdf.text "This page has very wide left and right margins, causing a squeeze"
|
|
16
|
+
pdf.start_new_page(:margin => 300, :right_margin => 0)
|
|
17
|
+
pdf.text "This page has even wider margins on all sides except for the right side, where it's 0"
|
|
18
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This example demonstrates the use of the the outlines option for a new document
|
|
4
|
+
# it sets an initial outline item with a title
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate('outlines.pdf') do
|
|
9
|
+
text "Page 1. This is the first Chapter. "
|
|
10
|
+
start_new_page
|
|
11
|
+
text "Page 2. More in the first Chapter. "
|
|
12
|
+
start_new_page
|
|
13
|
+
text "Page 3. This is the second Chapter. It has a subsection. "
|
|
14
|
+
start_new_page
|
|
15
|
+
text "Page 4. More in the second Chapter. "
|
|
16
|
+
define_outline do
|
|
17
|
+
section 'Chapter 1', :page => 1, :closed => true do
|
|
18
|
+
page 1, :title => 'Page 1'
|
|
19
|
+
page 2, :title => 'Page 2'
|
|
20
|
+
end
|
|
21
|
+
section 'Chapter 2', :page => 3 do
|
|
22
|
+
section 'Chapter 2 Subsection' do
|
|
23
|
+
page nil, :title => 'Page 3'
|
|
24
|
+
end
|
|
25
|
+
page 4, :title => 'Page 4'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
start_new_page
|
|
29
|
+
text "Page 5. Appendix"
|
|
30
|
+
start_new_page
|
|
31
|
+
text "Page 6. More in the Appendix"
|
|
32
|
+
outline.add_section do
|
|
33
|
+
section 'Appendix', :page => 5 do
|
|
34
|
+
page 5, :title => 'Page 5'
|
|
35
|
+
page 6, :title => 'Page 6'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
go_to_page 4
|
|
39
|
+
start_new_page
|
|
40
|
+
text "inserted before the Appendix"
|
|
41
|
+
outline.insert_section_after 'Chapter 2' do
|
|
42
|
+
page page_number, :title => "Pre-Appendix"
|
|
43
|
+
end
|
|
44
|
+
go_to_page 7
|
|
45
|
+
start_new_page
|
|
46
|
+
text "One last page"
|
|
47
|
+
outline.insert_section_after 'Page 6' do
|
|
48
|
+
page page_number, :title => "Inserted after 6"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This demonstrates basic page layout and landscape options for Prawn
|
|
4
|
+
# documents. The style used here is a bit out of date, see
|
|
5
|
+
# multi_page_layout.rb for a more modern example.
|
|
6
|
+
#
|
|
7
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
8
|
+
|
|
9
|
+
def pdf(*options)
|
|
10
|
+
Prawn::Document.new(*options)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# defaults to portrait and US letter
|
|
14
|
+
portrait_letter = pdf
|
|
15
|
+
portrait_letter.render_file "portrait_letter.pdf"
|
|
16
|
+
|
|
17
|
+
landscape_letter = pdf(:page_layout => :landscape)
|
|
18
|
+
landscape_letter.render_file "landscape_letter.pdf"
|
|
19
|
+
|
|
20
|
+
portrait_legal = pdf(:page_size => "LEGAL")
|
|
21
|
+
portrait_legal.render_file "portrait_legal.pdf"
|
|
22
|
+
|
|
23
|
+
landscape_legal = pdf(:page_size => "LEGAL", :page_layout => :landscape)
|
|
24
|
+
landscape_legal.render_file "landscape_legal.pdf"
|
|
25
|
+
|
|
26
|
+
portrait_a4 = pdf(:page_size => "A4")
|
|
27
|
+
portrait_a4.render_file "portrait_a4.pdf"
|
|
28
|
+
|
|
29
|
+
landscape_a4 = pdf(:page_size => "A4", :page_layout => :landscape)
|
|
30
|
+
landscape_a4.render_file("landscape_a4.pdf")
|
|
31
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This example demonstrates how to add a "page k of n"
|
|
4
|
+
# template to your documents.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate("page_with_numbering.pdf") do
|
|
9
|
+
text "Hai"
|
|
10
|
+
start_new_page
|
|
11
|
+
text "bai"
|
|
12
|
+
start_new_page
|
|
13
|
+
text "-- Hai again"
|
|
14
|
+
number_pages "<page> in a total of <total>", [bounds.right - 50, 0]
|
|
15
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This example demonstrates how to make use of Prawn's repeating element
|
|
4
|
+
# support. Note that all repeated elements are generated using XObjects, so
|
|
5
|
+
# they should be pretty efficient.
|
|
6
|
+
#
|
|
7
|
+
#
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
9
|
+
|
|
10
|
+
Prawn::Document.generate("repeat.pdf", :skip_page_creation => true) do
|
|
11
|
+
|
|
12
|
+
repeat :all do
|
|
13
|
+
draw_text "ALLLLLL", :at => bounds.top_left
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
repeat :odd do
|
|
17
|
+
draw_text "ODD", :at => [0,0]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
repeat :even do
|
|
21
|
+
draw_text "EVEN", :at => [0,0]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
repeat [1,2] do
|
|
25
|
+
draw_text "[1,2]", :at => [100,0]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
repeat 2..4 do
|
|
29
|
+
draw_text "2..4", :at => [200,0]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
repeat(lambda { |pg| pg % 3 == 0 }) do
|
|
33
|
+
draw_text "Every third", :at => [250, 20]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
repeat(:all, :dynamic => true) do
|
|
37
|
+
draw_text page_number, :at => [500, 0]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
10.times do
|
|
41
|
+
start_new_page
|
|
42
|
+
draw_text "A wonderful page", :at => [400,400]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrate use of stamps
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate("stamp.pdf", :skip_page_creation => true) do
|
|
8
|
+
|
|
9
|
+
create_stamp("odd_page_template") do
|
|
10
|
+
draw_text "This is the odd page template",
|
|
11
|
+
:at => [0, bounds.top - font.height]
|
|
12
|
+
draw_text "This is also in the odd page template", :at => [0, 0]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
create_stamp("even_page_template") do
|
|
16
|
+
draw_text "This is the even page template",
|
|
17
|
+
:at => [0, bounds.top - font.height]
|
|
18
|
+
draw_text "This is also in the even page template", :at => [0, 0]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
start_new_page
|
|
22
|
+
stamp("odd_page_template")
|
|
23
|
+
|
|
24
|
+
create_stamp("MyStamp") do
|
|
25
|
+
fill_color("ff0000")
|
|
26
|
+
fill_circle_at([0, 0], :radius => 20)
|
|
27
|
+
fill_color("000000")
|
|
28
|
+
fill_circle_at([10, 10], :radius => 20)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
10.times do |i|
|
|
32
|
+
10.times do |j|
|
|
33
|
+
stamp_at("MyStamp", [100 + j * 50, bounds.top - 100 - i * 50])
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
4.times do |i|
|
|
38
|
+
start_new_page
|
|
39
|
+
stamp("#{i % 2 == 0 ? 'even' : 'odd'}_page_template")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This sample demonstrates the use of the :template option when generating
|
|
4
|
+
# a new Document. The template PDF file is imported into a new document.
|
|
5
|
+
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
filename = "#{Prawn::BASEDIR}/reference_pdfs/curves.pdf"
|
|
9
|
+
|
|
10
|
+
Prawn::Document.generate("template.pdf", :template => filename) do
|
|
11
|
+
text "Previous pages and content imported", :size => 18, :align => :center
|
|
12
|
+
text "This page and content is brand new", :size => 18, :align => :center
|
|
13
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrates basic image embedding and positioning functionality.
|
|
4
|
+
# For positioning images alongside flowing text, see the image_flow.rb
|
|
5
|
+
# example.
|
|
6
|
+
#
|
|
7
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
8
|
+
|
|
9
|
+
Prawn::Document.generate("basic_images.pdf", :page_layout => :landscape) do
|
|
10
|
+
stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
|
|
11
|
+
image stef, :at => [75, 75]
|
|
12
|
+
|
|
13
|
+
stef = "#{Prawn::BASEDIR}/data/images/stef.jpg"
|
|
14
|
+
image stef, :at => [500, 400], :width => 200, :height => 200
|
|
15
|
+
|
|
16
|
+
draw_text "Please enjoy the pigs", :size => 36, :at => [200,15]
|
|
17
|
+
|
|
18
|
+
ruport = "#{Prawn::BASEDIR}/data/images/ruport.png"
|
|
19
|
+
image ruport, :at => [400,200], :width => 150
|
|
20
|
+
|
|
21
|
+
ruport = "#{Prawn::BASEDIR}/data/images/ruport_transparent.png"
|
|
22
|
+
image ruport, :at => [50,525]
|
|
23
|
+
end
|