Class: Axlsx::PageMargins

Inherits:
Object
  • Object
show all
Includes:
OptionsParser, SerializedAttributes
Defined in:
lib/axlsx/workbook/worksheet/page_margins.rb

Overview

Note:

The recommended way to manage page margins is via Worksheet#page_margins

PageMargins specify the margins when printing a worksheet.

For compatibility, PageMargins serialize to an empty string, unless at least one custom margin value has been specified. Otherwise, it serializes to a PageMargin element specifying all 6 margin values (using default values for margins that have not been specified explicitly).

Constant Summary collapse

MARGIN_KEYS =

Possible margins to set

[:left, :right, :top, :bottom, :header, :footer].freeze
DEFAULT_LEFT_RIGHT =

Default left and right margin (in inches)

0.75
DEFAULT_TOP_BOTTOM =

Default top and bottom margins (in inches)

1.00
0.50

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SerializedAttributes

included, #serialized_attributes, #serialized_element_attributes, #serialized_tag

Methods included from OptionsParser

#parse_options

Constructor Details

#initialize(options = {}) ⇒ PageMargins

Creates a new PageMargins object

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • left (Numeric)

    The left margin in inches

  • right (Numeric)

    The right margin in inches

  • bottom (Numeric)

    The bottom margin in inches

  • top (Numeric)

    The top margin in inches

  • header (Numeric)

    The header margin in inches

  • footer (Numeric)

    The footer margin in inches



24
25
26
27
28
29
30
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 24

def initialize(options = {})
  # Default values taken from MS Excel for Mac 2011
  @left = @right = DEFAULT_LEFT_RIGHT
  @top = @bottom = DEFAULT_TOP_BOTTOM
  @header = @footer = DEFAULT_HEADER_FOOTER
  parse_options options
end

Instance Attribute Details

#bottomFloat

Bottom margin (in inches)

Returns:

  • (Float)


60
61
62
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 60

def bottom
  @bottom
end

Footer margin (in inches)

Returns:

  • (Float)


68
69
70
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 68

def footer
  @footer
end

#headerFloat

Header margin (in inches)

Returns:

  • (Float)


64
65
66
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 64

def header
  @header
end

#leftFloat

Left margin (in inches)

Returns:

  • (Float)


48
49
50
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 48

def left
  @left
end

#rightFloat

Right margin (in inches)

Returns:

  • (Float)


52
53
54
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 52

def right
  @right
end

#topFloat

Top margin (in inches)

Returns:

  • (Float)


56
57
58
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 56

def top
  @top
end

Instance Method Details

#set(margins) ⇒ Object

Set some or all margins at once.

Parameters:

  • margins (Hash)

    the margins to set. See MARGIN_KEYS for a list of possible keys.



72
73
74
75
76
77
78
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 72

def set(margins)
  margins.select do |k, v|
    next unless MARGIN_KEYS.include? k

    send(:"#{k}=", v)
  end
end

#to_xml_string(str = +'')) ⇒ String

Note:

For compatibility, this is a noop unless custom margins have been specified.

Serializes the page margins element

Parameters:

  • str (String) (defaults to: +''))

Returns:

  • (String)

See Also:

  • #custom_margins_specified?


121
122
123
# File 'lib/axlsx/workbook/worksheet/page_margins.rb', line 121

def to_xml_string(str = +'')
  serialized_tag('pageMargins', str)
end