1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# encoding: utf-8
#
# This example is mostly just for fun, and shows how nested bounding boxes
# can simplify calculations. See the other files in examples/bounding_box
# for more basic uses.
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
require 'prawn'
class Array
def combine(arr)
output = []
self.each do |i1|
arr.each do |i2|
output += [[i1,i2]]
end
end
output
end
end
def recurse_bounding_box(pdf, max_depth=5, depth=1)
box = pdf.bounds
width = (box.width-15)/2
height = (box.height-15)/2
left_top_corners = [5, box.right-width-5].combine [box.top-5, height+5]
left_top_corners.each do |lt|
pdf.bounding_box(lt, :width=>width, :height=>height) do
pdf.stroke_bounds
recurse_bounding_box(pdf, max_depth, depth+1) if depth<max_depth
end
end
end
Prawn::Document.generate("russian_boxes.pdf") do |pdf|
recurse_bounding_box(pdf)
end |