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,26 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Demonstrate use of transparency
|
|
4
|
+
#
|
|
5
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
6
|
+
|
|
7
|
+
Prawn::Document.generate("transparency.pdf") do
|
|
8
|
+
fill_color("ff0000")
|
|
9
|
+
fill_circle_at([200, 200], :radius => 200)
|
|
10
|
+
transparent(0.5, 1) do
|
|
11
|
+
fill_color("000000")
|
|
12
|
+
stroke_color("ffffff")
|
|
13
|
+
fill_and_stroke_circle_at([300, 300], :radius => 200)
|
|
14
|
+
fill_color("ffffff")
|
|
15
|
+
text "transparency " * 150, :size => 18
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
start_new_page
|
|
19
|
+
|
|
20
|
+
fill_color("000000")
|
|
21
|
+
fill_rectangle([0, bounds.top], 200, 100)
|
|
22
|
+
transparent(0.5) do
|
|
23
|
+
fill_color("ff0000")
|
|
24
|
+
fill_rectangle([100, bounds.top - 50], 200, 100)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
#
|
|
4
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
5
|
+
|
|
6
|
+
start = Time.now
|
|
7
|
+
Prawn::Document.generate("chinese_flow.pdf") do
|
|
8
|
+
font "#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf"
|
|
9
|
+
font_size 16
|
|
10
|
+
|
|
11
|
+
long_text = "更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事"
|
|
12
|
+
text long_text
|
|
13
|
+
|
|
14
|
+
# be sure to restore space based wrapping when dealing with latin scripts
|
|
15
|
+
long_text = "Text with some spaces " * 25
|
|
16
|
+
text long_text
|
|
17
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# As of Prawn 0.3, it is possible to generate a Euro using the built-in
|
|
4
|
+
# AFM files. However, you need to be sure to manually add spacing around it,
|
|
5
|
+
# as its calculated width in the AFM files seem to be wrong.
|
|
6
|
+
#
|
|
7
|
+
# We are investigating this issue, but it does not seem to be Prawn specific.
|
|
8
|
+
# If you need precision spacing, use a TTF file instead and the issue will
|
|
9
|
+
# go away.
|
|
10
|
+
#
|
|
11
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
12
|
+
|
|
13
|
+
Prawn::Document.generate "euro.pdf" do
|
|
14
|
+
text "A Euro! € ©", :size => 32
|
|
15
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# FIXME: Introducing TTFunk into Prawn broke this example and a cooresponding
|
|
4
|
+
# test. Ticket: #139
|
|
5
|
+
#
|
|
6
|
+
# Tests passing non utf-8 data into Prawns text function. Should
|
|
7
|
+
# be transparently converted to utf-8 and rendered as usual.
|
|
8
|
+
#
|
|
9
|
+
# NOTE: only works on ruby1.9 compatible VMs, and requires the current
|
|
10
|
+
# font to include japanese glyphs. On 1.8.x comaptible VMs, an exception
|
|
11
|
+
# will be raised.
|
|
12
|
+
|
|
13
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
14
|
+
|
|
15
|
+
begin
|
|
16
|
+
ruby_19 do
|
|
17
|
+
datafile = File.join(File.dirname(__FILE__), "..", "..", "data",
|
|
18
|
+
"shift_jis_text.txt")
|
|
19
|
+
sjis_str = File.open(datafile, "r:shift_jis") { |f| f.gets }
|
|
20
|
+
|
|
21
|
+
Prawn::Document.generate("sjis.pdf") do
|
|
22
|
+
font "#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf"
|
|
23
|
+
text sjis_str
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
rescue
|
|
27
|
+
puts "\n FIXME: SJIS Broken due to TTFunk integration."
|
|
28
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Shows that Prawn works out of the box with UTF-8 text, so long as you use
|
|
4
|
+
# a TTF file with the necessary glyphs for your content.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate("utf8.pdf") do
|
|
9
|
+
font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
|
|
10
|
+
text "ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει." * 20
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Prints a list of all of the glyphs that can be rendered by Adobe's built
|
|
4
|
+
# in fonts, along with their character widths and WinAnsi codes. Be sure
|
|
5
|
+
# to pass these glyphs as UTF-8, and Prawn will transcode them for you.
|
|
6
|
+
#
|
|
7
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
8
|
+
|
|
9
|
+
FONT_SIZE = 9.5
|
|
10
|
+
|
|
11
|
+
Prawn::Document.generate("win-ansi.pdf") do
|
|
12
|
+
@skip_encoding = true
|
|
13
|
+
|
|
14
|
+
x = 0
|
|
15
|
+
y = bounds.top
|
|
16
|
+
|
|
17
|
+
fields = [[20, :right], [8, :left], [12, :center], [30, :right], [8, :left], [0, :left]]
|
|
18
|
+
|
|
19
|
+
font "Helvetica", :size => FONT_SIZE
|
|
20
|
+
|
|
21
|
+
Prawn::Encoding::WinAnsi::CHARACTERS.each_with_index do |name, index|
|
|
22
|
+
next if name == ".notdef"
|
|
23
|
+
y -= FONT_SIZE
|
|
24
|
+
|
|
25
|
+
if y < FONT_SIZE
|
|
26
|
+
y = bounds.top - FONT_SIZE
|
|
27
|
+
x += 170
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
code = "%d." % index
|
|
31
|
+
char = index.chr
|
|
32
|
+
|
|
33
|
+
width = 1000 * width_of(char, :size => FONT_SIZE) / FONT_SIZE
|
|
34
|
+
size = "%d" % width
|
|
35
|
+
|
|
36
|
+
data = [code, nil, char, size, nil, name]
|
|
37
|
+
dx = x
|
|
38
|
+
fields.zip(data).each do |(total_width, align), field|
|
|
39
|
+
if field
|
|
40
|
+
width = width_of(field, :size => FONT_SIZE)
|
|
41
|
+
|
|
42
|
+
case align
|
|
43
|
+
when :left then offset = 0
|
|
44
|
+
when :right then offset = total_width - width
|
|
45
|
+
when :center then offset = (total_width - width)/2
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
draw_text(field, :at => [dx + offset, y])
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
dx += total_width
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "example_helper")
|
|
2
|
+
|
|
3
|
+
Prawn::Document.generate("security_hello_foo.pdf") do
|
|
4
|
+
text "Hello, world!"
|
|
5
|
+
encrypt_document :user_password => 'foo', :owner_password => 'bar',
|
|
6
|
+
:permissions => { :print_document => false }
|
|
7
|
+
end
|
|
8
|
+
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
Prawn::Document.generate("bill.pdf") do
|
|
6
|
+
|
|
7
|
+
self.font_size = 9
|
|
8
|
+
|
|
9
|
+
Widths = [50, 90, 170, 90, 90, 50]
|
|
10
|
+
Headers = ["Date", "Patient Name", "Description", "Charges / Payments",
|
|
11
|
+
"Patient Portion Due", "Balance"]
|
|
12
|
+
|
|
13
|
+
head = make_table([Headers], :column_widths => Widths)
|
|
14
|
+
|
|
15
|
+
data = []
|
|
16
|
+
|
|
17
|
+
def row(date, pt, charges, portion_due, balance)
|
|
18
|
+
rows = charges.map { |c| ["", "", c[0], c[1], "", ""] }
|
|
19
|
+
|
|
20
|
+
# Date and Patient Name go on the first line.
|
|
21
|
+
rows[0][0] = date
|
|
22
|
+
rows[0][1] = pt
|
|
23
|
+
|
|
24
|
+
# Due and Balance go on the last line.
|
|
25
|
+
rows[-1][4] = portion_due
|
|
26
|
+
rows[-1][5] = balance
|
|
27
|
+
|
|
28
|
+
# Return a Prawn::Table object to be used as a subtable.
|
|
29
|
+
make_table(rows) do |t|
|
|
30
|
+
t.column_widths = Widths
|
|
31
|
+
t.cells.style :borders => [:left, :right], :padding => 2
|
|
32
|
+
t.columns(4..5).align = :right
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
data << row("1/1/2010", "", [["Balance Forward", ""]], "0.00", "0.00")
|
|
38
|
+
50.times do
|
|
39
|
+
data << row("1/1/2010", "John", [["Foo", "Bar"],
|
|
40
|
+
["Foo", "Bar"]], "5.00", "0.00")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# Wrap head and each data element in an Array -- the outer table has only one
|
|
45
|
+
# column.
|
|
46
|
+
table([[head], *(data.map{|d| [d]})], :header => true,
|
|
47
|
+
:row_colors => %w[cccccc ffffff]) do
|
|
48
|
+
|
|
49
|
+
row(0).style :background_color => '000000', :text_color => 'ffffff'
|
|
50
|
+
cells.style :borders => []
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Low level cell and row implementation, which form the basic building
|
|
4
|
+
# blocks for Prawn tables. Only necessary to know about if you plan on
|
|
5
|
+
# building your own table implementation from scratch or heavily modify
|
|
6
|
+
# the existing table system.
|
|
7
|
+
#
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
9
|
+
|
|
10
|
+
Prawn::Document.generate("cell.pdf") do
|
|
11
|
+
cell :content => "test", :padding => 10, :style => :bold, :size => 7
|
|
12
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
# Shows how to use the style() method with a block to style each cell with
|
|
4
|
+
# custom code.
|
|
5
|
+
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate("checkerboard.pdf") do
|
|
9
|
+
|
|
10
|
+
text "Here is a checkerboard:"
|
|
11
|
+
|
|
12
|
+
table [[""] * 8] * 8 do |t|
|
|
13
|
+
t.cells.style :width => 24, :height => 24
|
|
14
|
+
t.cells.style do |c|
|
|
15
|
+
c.background_color = ((c.row + c.column) % 2).zero? ? '000000' : 'ffffff'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
move_down 12
|
|
20
|
+
text "Hope you enjoyed it!"
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
Prawn::Document.generate("header.pdf") do
|
|
6
|
+
|
|
7
|
+
header = %w[Name Occupation]
|
|
8
|
+
data = ["Bender Bending Rodriguez", "Bender"]
|
|
9
|
+
|
|
10
|
+
table([header] + [data] * 50, :header => true) do
|
|
11
|
+
row(0).style(:style => :bold, :background_color => 'cccccc')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
Prawn::Document.generate("inline_format_table.pdf") do
|
|
6
|
+
|
|
7
|
+
table([%w[foo bar baz<b>baz</b>], %w[baz bar <i>foo</i>foo]],
|
|
8
|
+
:cell_style => { :padding => 12, :inline_format => true },
|
|
9
|
+
:width => bounds.width)
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
Prawn::Document.generate("simple_table.pdf") do
|
|
6
|
+
|
|
7
|
+
table([["foo", "bar " * 15, "baz"],
|
|
8
|
+
["baz", "bar", "foo " * 15]], :cell_style => { :padding => 12 }) do
|
|
9
|
+
cells.borders = []
|
|
10
|
+
|
|
11
|
+
# Use the row() and style() methods to select and style a row.
|
|
12
|
+
style row(0), :border_width => 2, :borders => [:bottom]
|
|
13
|
+
|
|
14
|
+
# The style method can take a block, allowing you to customize properties
|
|
15
|
+
# per-cell.
|
|
16
|
+
style(columns(0..1)) { |cell| cell.borders |= [:right] }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
move_down 12
|
|
20
|
+
|
|
21
|
+
table([%w[foo bar bazbaz], %w[baz bar foofoo]],
|
|
22
|
+
:cell_style => { :padding => 12 }, :width => bounds.width)
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
Prawn::Document.generate("subtable.pdf") do |pdf|
|
|
6
|
+
|
|
7
|
+
subtable = Prawn::Table.new([%w[one two], %w[three four]], pdf)
|
|
8
|
+
|
|
9
|
+
pdf.table([["Subtable ->", subtable, "<-"]])
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
Prawn::Document.generate("widths.pdf") do
|
|
6
|
+
|
|
7
|
+
text "Some 300-pt tables:"
|
|
8
|
+
|
|
9
|
+
table([%w[A B C]], :width => 300)
|
|
10
|
+
move_down 12
|
|
11
|
+
|
|
12
|
+
table([%w[A B C], %w[D Everything\ under\ the\ sun F]], :width => 300)
|
|
13
|
+
move_down 12
|
|
14
|
+
|
|
15
|
+
# TODO: what should this be doing? Like the current prawn-layout, it does
|
|
16
|
+
# not attempt to reflow the second column.
|
|
17
|
+
# table([["A", "Blah " * 20, "C"]], :width => 300)
|
|
18
|
+
# move_down 12
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This example demonstrates usage of Document#text with the :align option.
|
|
4
|
+
# Available options are :left, :right, and :center, with :left as default.
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate("alignment.pdf") do
|
|
9
|
+
text "This text should be left aligned"
|
|
10
|
+
text "This text should be centered", :align => :center
|
|
11
|
+
text "This text should be right aligned", :align => :right
|
|
12
|
+
|
|
13
|
+
pad(20) { text "This is Flowing from the left. " * 20 }
|
|
14
|
+
|
|
15
|
+
pad(20) { text "This is Flowing from the center. " * 20, :align => :center }
|
|
16
|
+
|
|
17
|
+
pad(20) { text "This is Flowing from the right. " * 20, :align => :right }
|
|
18
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Example of character spacing
|
|
4
|
+
#
|
|
5
|
+
#
|
|
6
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
7
|
+
|
|
8
|
+
Prawn::Document.generate "character_spacing.pdf" do |pdf|
|
|
9
|
+
string = "hello world " * 50
|
|
10
|
+
pdf.text(string, :character_spacing => 2.5)
|
|
11
|
+
pdf.text(string)
|
|
12
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require "#{File.dirname(__FILE__)}/../example_helper.rb"
|
|
4
|
+
|
|
5
|
+
DFONT_FILE = "#{Prawn::BASEDIR}/data/fonts/Action Man.dfont"
|
|
6
|
+
puts "There are #{Prawn::Font::DFont.font_count(DFONT_FILE)} fonts in #{DFONT_FILE}:"
|
|
7
|
+
Prawn::Font::DFont.named_fonts(DFONT_FILE).each do |name|
|
|
8
|
+
puts "* #{name}"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
puts
|
|
12
|
+
puts "generating sample document in 'dfont.pdf'..."
|
|
13
|
+
|
|
14
|
+
Prawn::Document.generate "dfont.pdf" do
|
|
15
|
+
fill_color "0000ff"
|
|
16
|
+
|
|
17
|
+
font DFONT_FILE, :font => "ActionMan-Bold", :size => 24
|
|
18
|
+
text "Introducing Action Man!"
|
|
19
|
+
|
|
20
|
+
move_text_position 24
|
|
21
|
+
|
|
22
|
+
font_families["Action Man"] = {
|
|
23
|
+
:normal => { :file => DFONT_FILE, :font => "ActionMan" },
|
|
24
|
+
:bold => { :file => DFONT_FILE, :font => "ActionMan-Bold" },
|
|
25
|
+
:italic => { :file => DFONT_FILE, :font => "ActionMan-Italic" },
|
|
26
|
+
:bold_italic => { :file => DFONT_FILE, :font => "ActionMan-BoldItalic" }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
font "Action Man", :size => 16
|
|
30
|
+
text "Action Man is feeling normal here."
|
|
31
|
+
|
|
32
|
+
move_text_position 16
|
|
33
|
+
|
|
34
|
+
font "Action Man", :style => :bold, :size => 16
|
|
35
|
+
text "Action Man is feeling bold here!"
|
|
36
|
+
|
|
37
|
+
move_text_position 16
|
|
38
|
+
|
|
39
|
+
font "Action Man", :style => :italic, :size => 16
|
|
40
|
+
text "Here, we see Action Man feeling italicized. Slick!"
|
|
41
|
+
|
|
42
|
+
move_text_position 16
|
|
43
|
+
|
|
44
|
+
font "Action Man", :style => :bold_italic, :size => 16
|
|
45
|
+
text "Lastly, we observe Mr. Action Man being bold AND italicized. Excellent!"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
puts "done"
|