class HexaPDF:: Layout:: PageStyle
Parent | Object |
---|
A PageStyle
defines the initial look of a page and the placement of one or more frames.
Attributes
The HexaPDF::Layout::Frame
object that defines the area on the page where content should be placed.
This can either be set beforehand or during execution of the template
.
If no frame has been set, 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.
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.
Furthermore it should set the frame
and next_style
attributes appropriately, if not done beforehand. 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.
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.