class HexaPDF:: Layout:: PageStyle
Parent | Object |
---|
A PageStyle
defines the dimensions of a page, its initial look, the Frame
for object placement and which page style should be used next.
This class is used by HexaPDF::Composer
to style the individual pages.
Attributes
The Frame
object that defines the area for the last page created with create_page
where content should be placed.
This value is usually updated during execution of the template
. If the value is not updated, a frame covering the page except for a default margin on all sides is set during create_page
.
Defines the name of the page style that should be used for the next page.
Note that this value can be different each time a new page is created via create_page
.
If this attribute is nil
(the default), it means that this style should be used again.
The page orientation, either :portrait
or :landscape
.
Only used if page_size
is one of the predefined page sizes and not an array.
The page size.
Can be any valid predefined page size (see HexaPDF::Type::Page::PAPER_SIZE) or an array
- llx, lly, urx, ury
-
specifying a custom page size.
Example:
style.page_size = :A4
style.page_size = [0, 0, 200, 200]
A callable object that defines the initial content of a page created with create_page
.
The callable object is given a canvas and the page style as arguments. It needs to draw the initial content of the page. Note that the graphics state of the canvas is not saved before executing the template code and restored afterwards. If this is needed, the object needs to do it itself. The next_style
attribute can optionally be set.
Furthermore, the callable object should set the frame
that defines the area on the page where content should be placed. The create_frame
method can be used for easily creating a rectangular frame.
Example:
page_style.template = lambda do |canvas, style|
box = canvas.context.box
canvas.fill_color("fd0") do
canvas.rectangle(0, 0, box.width, box.height).fill
end
style.frame = style.create_frame(canvas.context, 72)
end
Public Class Methods
Creates a new page style instance for the given page size, orientation and next style values. If a block is given, it is used as template
for defining the initial content of a page.
Example:
PageStyle.new(page_size: :Letter) do |canvas, style|
style.frame = style.create_frame(canvas.context, 72)
style.next_style = :other
canvas.fill_color("fd0") { canvas.circle(100, 100, 50).fill }
end
Public Instance Methods
Creates a frame based on the given page’s box and margin.
The margin
can be any value allowed by HexaPDF::Layout::Style::Quad#set
.
Note: This is a helper method for use inside the template
callable.